mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 22:39:18 +02:00
build 170908. minor refactoring and diagnostics enhancements, virtual coupling fix, support for pantograph compressor submodels
This commit is contained in:
70
Train.cpp
70
Train.cpp
@@ -1430,10 +1430,14 @@ void TTrain::OnCommand_pantographcompressorvalvetoggle( TTrain *Train, command_d
|
||||
if( Train->mvControlled->bPantKurek3 == false ) {
|
||||
// connect pantographs with primary tank
|
||||
Train->mvControlled->bPantKurek3 = true;
|
||||
// visual feedback:
|
||||
Train->ggPantCompressorValve.UpdateValue( 0.0 );
|
||||
}
|
||||
else {
|
||||
// connect pantograps with pantograph compressor
|
||||
Train->mvControlled->bPantKurek3 = false;
|
||||
// visual feedback:
|
||||
Train->ggPantCompressorValve.UpdateValue( 1.0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1456,10 +1460,14 @@ void TTrain::OnCommand_pantographcompressoractivate( TTrain *Train, command_data
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
// press or hold to activate
|
||||
Train->mvControlled->PantCompFlag = true;
|
||||
// visual feedback:
|
||||
Train->ggPantCompressorButton.UpdateValue( 1.0 );
|
||||
}
|
||||
else {
|
||||
// release to disable
|
||||
Train->mvControlled->PantCompFlag = false;
|
||||
// visual feedback:
|
||||
Train->ggPantCompressorButton.UpdateValue( 0.0 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4627,35 +4635,38 @@ bool TTrain::Update( double const Deltatime )
|
||||
ggBrakeCtrl.UpdateValue(mvOccupied->fBrakeCtrlPos);
|
||||
ggBrakeCtrl.Update();
|
||||
}
|
||||
if (ggLocalBrake.SubModel)
|
||||
{
|
||||
if (DynamicObject->Mechanik ?
|
||||
(DynamicObject->Mechanik->AIControllFlag ? false : (Global::iFeedbackMode == 4 || (Global::bMWDmasterEnable && Global::bMWDBreakEnable))) :
|
||||
false) // nie blokujemy AI
|
||||
{ // Ra: nie najlepsze miejsce, ale na początek gdzieś to dać trzeba
|
||||
// Firleju: dlatego kasujemy i zastepujemy funkcją w Console
|
||||
if ((mvOccupied->BrakeLocHandle == FD1))
|
||||
{
|
||||
double b = Console::AnalogCalibrateGet(1);
|
||||
b *= 10.0;
|
||||
b = clamp<double>( b, 0.0, LocalBrakePosNo); // przycięcie zmiennej do granic
|
||||
ggLocalBrake.UpdateValue(b); // przesów bez zaokrąglenia
|
||||
if (Global::bMWDdebugEnable && Global::iMWDDebugMode & 4) WriteLog("FD1 break position = " + to_string(b));
|
||||
mvOccupied->LocalBrakePos =
|
||||
int(1.09 * b); // sposób zaokrąglania jest do ustalenia
|
||||
|
||||
if( ggLocalBrake.SubModel ) {
|
||||
|
||||
if( ( DynamicObject->Mechanik != nullptr )
|
||||
&& ( false == DynamicObject->Mechanik->AIControllFlag ) // nie blokujemy AI
|
||||
&& ( mvOccupied->BrakeLocHandle == FD1 )
|
||||
&& ( ( Global::iFeedbackMode == 4 )
|
||||
|| ( Global::bMWDmasterEnable && Global::bMWDBreakEnable ) ) ) {
|
||||
// Ra: nie najlepsze miejsce, ale na początek gdzieś to dać trzeba
|
||||
// Firleju: dlatego kasujemy i zastepujemy funkcją w Console
|
||||
auto const b = clamp<double>(
|
||||
Console::AnalogCalibrateGet( 1 ) * 10.0,
|
||||
0.0,
|
||||
ManualBrakePosNo );
|
||||
ggLocalBrake.UpdateValue( b ); // przesów bez zaokrąglenia
|
||||
mvOccupied->LocalBrakePos = int( 1.09 * b ); // sposób zaokrąglania jest do ustalenia
|
||||
if( ( true == Global::bMWDdebugEnable )
|
||||
&& ( ( Global::iMWDDebugMode & 4 ) != 0 ) ) {
|
||||
WriteLog( "FD1 break position = " + to_string( b ) );
|
||||
}
|
||||
else // standardowa prodedura z kranem powiązanym z klawiaturą
|
||||
ggLocalBrake.UpdateValue(double(mvOccupied->LocalBrakePos));
|
||||
}
|
||||
else // standardowa prodedura z kranem powiązanym z klawiaturą
|
||||
ggLocalBrake.UpdateValue(double(mvOccupied->LocalBrakePos));
|
||||
else {
|
||||
// standardowa prodedura z kranem powiązanym z klawiaturą
|
||||
ggLocalBrake.UpdateValue( double( mvOccupied->LocalBrakePos ) );
|
||||
}
|
||||
ggLocalBrake.Update();
|
||||
}
|
||||
if (ggManualBrake.SubModel != NULL)
|
||||
{
|
||||
if (ggManualBrake.SubModel != nullptr) {
|
||||
ggManualBrake.UpdateValue(double(mvOccupied->ManualBrakePos));
|
||||
ggManualBrake.Update();
|
||||
}
|
||||
ggAlarmChain.Update();
|
||||
ggBrakeProfileCtrl.Update();
|
||||
ggBrakeProfileG.Update();
|
||||
ggBrakeProfileR.Update();
|
||||
@@ -5629,6 +5640,8 @@ bool TTrain::Update( double const Deltatime )
|
||||
ggPantRearButtonOff.Update();
|
||||
ggPantSelectedDownButton.Update();
|
||||
ggPantAllDownButton.Update();
|
||||
ggPantCompressorButton.Update();
|
||||
ggPantCompressorValve.Update();
|
||||
|
||||
ggUpperLightButton.Update();
|
||||
ggLeftLightButton.Update();
|
||||
@@ -6503,6 +6516,8 @@ void TTrain::clear_cab_controls()
|
||||
ggPantRearButtonOff.Clear();
|
||||
ggPantSelectedDownButton.Clear();
|
||||
ggPantAllDownButton.Clear();
|
||||
ggPantCompressorButton.Clear();
|
||||
ggPantCompressorValve.Clear();
|
||||
ggZbS.Clear();
|
||||
ggI1B.Clear();
|
||||
ggI2B.Clear();
|
||||
@@ -6649,6 +6664,15 @@ void TTrain::set_cab_controls() {
|
||||
0.0 :
|
||||
1.0 ) );
|
||||
}
|
||||
// auxiliary compressor
|
||||
ggPantCompressorValve.PutValue(
|
||||
mvControlled->bPantKurek3 ?
|
||||
0.0 : // default setting is pantographs connected with primary tank
|
||||
1.0 );
|
||||
ggPantCompressorButton.PutValue(
|
||||
mvControlled->PantCompFlag ?
|
||||
1.0 :
|
||||
0.0 );
|
||||
// converter
|
||||
if( mvOccupied->ConvSwitchType != "impulse" ) {
|
||||
ggConverterButton.PutValue(
|
||||
@@ -7067,6 +7091,8 @@ bool TTrain::initialize_gauge(cParser &Parser, std::string const &Label, int con
|
||||
{ "pantalloff_sw:", ggPantAllDownButton },
|
||||
{ "pantselected_sw:", ggPantSelectedButton },
|
||||
{ "pantselectedoff_sw:", ggPantSelectedDownButton },
|
||||
{ "pantcompressor_sw:", ggPantCompressorButton },
|
||||
{ "pantcompressorvalve_sw:", ggPantCompressorValve },
|
||||
{ "trainheating_sw:", ggTrainHeatingButton },
|
||||
{ "signalling_sw:", ggSignallingButton },
|
||||
{ "door_signalling_sw:", ggDoorSignallingButton },
|
||||
|
||||
Reference in New Issue
Block a user