16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-09-01 11:39:18 +02:00

Simplify lamp logic, add new lights for 810 vehicles (#148)

Simplified lamp logic by reducing unnecessary brackets, `if` statements, ternary operators and boolean comparisons.
Added new lamps:
- `i-gear1` - 1st gear in the gearbox is active
- `i-gear2` - 2nd gear in the gearbox is active
- `i-hydrolockup` - The gearbox is locking the engine and wheels together

Additionally, fixed motor overload and differential relay lights not turning off when the battery is turned off.
This commit is contained in:
jakubg1
2026-07-21 22:44:04 +02:00
committed by GitHub
parent c8e5360d87
commit 1929119db6
2 changed files with 47 additions and 64 deletions

View File

@@ -9039,81 +9039,46 @@ bool TTrain::Update(double const Deltatime)
btLampkaSHP.Turn(mvOccupied->SecuritySystem.is_cabsignal_blinking()); btLampkaSHP.Turn(mvOccupied->SecuritySystem.is_cabsignal_blinking());
btLampkaCzuwakaSHP.Turn(btLampkaSHP.GetValue() || btLampkaCzuwaka.GetValue()); btLampkaCzuwakaSHP.Turn(btLampkaSHP.GetValue() || btLampkaCzuwaka.GetValue());
btLampkaWylSzybki.Turn(m_linebreakerstate == 2 || true == mvControlled->Mains ? true : false); btLampkaWylSzybki.Turn(m_linebreakerstate == 2 || mvControlled->Mains);
btLampkaWylSzybkiOff.Turn(m_linebreakerstate == 2 || true == mvControlled->Mains ? false : true); btLampkaWylSzybkiOff.Turn(m_linebreakerstate != 2 && !mvControlled->Mains);
btLampkaMainBreakerReady.Turn(mvControlled->MainsInitTimeCountdown > 0.0 || m_linebreakerstate == 2 || true == mvControlled->Mains ? false : true); btLampkaMainBreakerReady.Turn(mvControlled->MainsInitTimeCountdown <= 0.0 && m_linebreakerstate != 2 && !mvControlled->Mains);
btLampkaMainBreakerBlinkingIfReady.Turn( btLampkaMainBreakerBlinkingIfReady.Turn(m_linebreakerstate == 2 || mvControlled->Mains || mvControlled->MainsInitTimeCountdown < 0.0 && simulation::Time.data().wMilliseconds > 500);
m_linebreakerstate == 2 || true == mvControlled->Mains || (mvControlled->MainsInitTimeCountdown < 0.0 && simulation::Time.data().wMilliseconds > 500) ? true : false);
btLampkaPrzetw.Turn(mvOccupied->Power110vIsAvailable); btLampkaPrzetw.Turn(mvOccupied->Power110vIsAvailable);
btLampkaPrzetwOff.Turn(false == mvOccupied->Power110vIsAvailable); btLampkaPrzetwOff.Turn(!mvOccupied->Power110vIsAvailable);
btLampkaNadmPrzetw.Turn(Dynamic()->Mechanik ? Dynamic()->Mechanik->IsAnyConverterOverloadRelayOpen : mvControlled->ConvOvldFlag); btLampkaNadmPrzetw.Turn(Dynamic()->Mechanik ? Dynamic()->Mechanik->IsAnyConverterOverloadRelayOpen : mvControlled->ConvOvldFlag);
btLampkaOpory.Turn(mvControlled->StLinFlag ? mvControlled->ResistorsFlagCheck() : false); btLampkaOpory.Turn(mvControlled->StLinFlag && mvControlled->ResistorsFlagCheck());
btLampkaBezoporowa.Turn(mvControlled->ResistorsFlagCheck() || mvControlled->MainCtrlActualPos == 0); // do EU04
btLampkaBezoporowa.Turn(true == mvControlled->ResistorsFlagCheck() || mvControlled->MainCtrlActualPos == 0); // do EU04 btLampkaStyczn.Turn(!mvControlled->StLinFlag && !mvControlled->ControlPressureSwitch && mvControlled->BrakePress < 1.0); // mozna prowadzic rozruch
btLampkaPrzekRozn.Turn(!mvControlled->GroundRelay && !mvControlled->ControlPressureSwitch && mvControlled->BrakePress < 1.0); // relay is off and needs a reset
btLampkaStyczn.Turn(mvControlled->StLinFlag || mvControlled->ControlPressureSwitch ? false : mvControlled->BrakePress < 1.0); // mozna prowadzic rozruch btLampkaNadmSil.Turn(mvControlled->FuseFlagCheck() && !mvControlled->ControlPressureSwitch && mvControlled->BrakePress < 1.0); // relay is off and needs a reset
btLampkaUkrotnienie.Turn(TestFlag(mvControlled->Couplers[mvControlled->CabOccupied == 1 ? rear : front].CouplingFlag, control));
btLampkaPrzekRozn.Turn(mvControlled->GroundRelay || mvControlled->ControlPressureSwitch ? false : mvControlled->BrakePress < 1.0); // relay is off and needs a reset
btLampkaNadmSil.Turn(false == mvControlled->FuseFlagCheck() || mvControlled->ControlPressureSwitch ? false : mvControlled->BrakePress < 1.0); // relay is off and needs a reset
if ((mvControlled->CabOccupied == 1 && TestFlag(mvControlled->Couplers[end::rear].CouplingFlag, coupling::control)) ||
(mvControlled->CabOccupied == -1 && TestFlag(mvControlled->Couplers[end::front].CouplingFlag, coupling::control)))
{
btLampkaUkrotnienie.Turn(true);
}
else
{
btLampkaUkrotnienie.Turn(false);
}
// if
// ((TestFlag(mvControlled->BrakeStatus,+b_Rused+b_Ractive)))//Lampka drugiego stopnia hamowania
btLampkaHamPosp.Turn(TestFlag(mvOccupied->Hamulec->GetBrakeStatus(), 1)); // lampka drugiego stopnia hamowania btLampkaHamPosp.Turn(TestFlag(mvOccupied->Hamulec->GetBrakeStatus(), 1)); // lampka drugiego stopnia hamowania
// TODO: youBy wyciągnąć flagę wysokiego stopnia // TODO: youBy wyciągnąć flagę wysokiego stopnia
btLampkaNadmWent.Turn(mvControlled->RventRot < 5.0 && mvControlled->ResistorsFlagCheck()); // hunter-121211: lampka zanikowo-pradowego wentylatorow
// hunter-121211: lampka zanikowo-pradowego wentylatorow: btLampkaWysRozr.Turn(mvControlled->Imax >= mvControlled->ImaxHi);
btLampkaNadmWent.Turn(mvControlled->RventRot < 5.0 && mvControlled->ResistorsFlagCheck());
//-------
btLampkaWysRozr.Turn(!(mvControlled->Imax < mvControlled->ImaxHi));
if (false == mvControlled->DelayCtrlFlag &&
(mvControlled->ScndCtrlActualPos > 0 || (mvControlled->RList[mvControlled->MainCtrlActualPos].ScndAct != 0 && mvControlled->RList[mvControlled->MainCtrlActualPos].ScndAct != 255)))
{
btLampkaBoczniki.Turn(true);
}
else
{
btLampkaBoczniki.Turn(false);
}
btLampkaNapNastHam.Turn(mvControlled->DirActive != 0); // napiecie na nastawniku hamulcowym btLampkaNapNastHam.Turn(mvControlled->DirActive != 0); // napiecie na nastawniku hamulcowym
btLampkaSprezarka.Turn(mvControlled->CompressorFlag); // mutopsitka dziala btLampkaSprezarka.Turn(mvControlled->CompressorFlag); // mutopsitka dziala
btLampkaSprezarkaOff.Turn(false == mvControlled->CompressorFlag); btLampkaSprezarkaOff.Turn(!mvControlled->CompressorFlag);
btLampkaFuelPumpOff.Turn(false == mvControlled->FuelPump.is_active); btLampkaFuelPumpOff.Turn(!mvControlled->FuelPump.is_active);
// boczniki // boczniki
unsigned char scp; // Ra: dopisałem "unsigned" // Ra: w SU45 boczniki wchodzą na ScndCtrlPos, a nie na ScndCtrlActualPos
// Ra: w SU45 boczniki wchodzą na MainCtrlPos, a nie na MainCtrlActualPos
// - pokićkał ktoś? // - pokićkał ktoś?
scp = mvControlled->RList[mvControlled->MainCtrlPos].ScndAct; int scp = mvControlled->RList[mvControlled->MainCtrlPos].ScndAct;
scp = scp == 255 ? 0 : scp; // Ra: whatta hella is this? scp = scp == 255 ? 0 : scp; // Ra: whatta hella is this?
if (mvControlled->ScndCtrlPos > 0 || mvControlled->ScndInMain != 0 && scp > 0) btLampkaBoczniki.Turn(!mvControlled->DelayCtrlFlag && mvControlled->ScndCtrlActualPos > 0 || scp > 0);
{ // boczniki pojedynczo btLampkaBocznik1.Turn(!mvControlled->DelayCtrlFlag && mvControlled->ScndCtrlPos > 0 || mvControlled->ScndCtrlActualPos > 0 || scp > 0);
btLampkaBocznik1.Turn(true); btLampkaBocznik2.Turn(!mvControlled->DelayCtrlFlag && mvControlled->ScndCtrlPos > 1 || mvControlled->ScndCtrlActualPos > 1 || scp > 1);
btLampkaBocznik2.Turn(mvControlled->ScndCtrlPos > 1); btLampkaBocznik3.Turn(!mvControlled->DelayCtrlFlag && mvControlled->ScndCtrlPos > 2 || mvControlled->ScndCtrlActualPos > 2 || scp > 2);
btLampkaBocznik3.Turn(mvControlled->ScndCtrlPos > 2); btLampkaBocznik4.Turn(!mvControlled->DelayCtrlFlag && mvControlled->ScndCtrlPos > 3 || mvControlled->ScndCtrlActualPos > 3 || scp > 3);
btLampkaBocznik4.Turn(mvControlled->ScndCtrlPos > 3);
} // biegi dla motoraka
else btLampkaGear1.Turn(mvControlled->ScndCtrlActualPos == 1 && mvControlled->dizel_engagestate > 0); // bieg 1
{ // wyłączone wszystkie cztery btLampkaGear2.Turn(mvControlled->ScndCtrlActualPos == 2 && mvControlled->dizel_engagestate > 0); // bieg 2
btLampkaBocznik1.Turn(false); btLampkaHydroLockup.Turn(mvControlled->hydro_TC_Lockup); // zblokowanie skrzyni z silnikiem
btLampkaBocznik2.Turn(false);
btLampkaBocznik3.Turn(false);
btLampkaBocznik4.Turn(false);
}
if (mvControlled->Signalling == true) if (mvControlled->Signalling == true)
{ {
@@ -9152,7 +9117,7 @@ bool TTrain::Update(double const Deltatime)
default: default:
{ {
btLampkaHamienie.Turn(mvOccupied->BrakePress >= 0.1 || mvControlled->DynamicBrakeFlag); btLampkaHamienie.Turn(mvOccupied->BrakePress >= 0.1 || mvControlled->DynamicBrakeFlag);
btLampkaBrakingOff.Turn(mvOccupied->BrakePress < 0.1 && false == mvControlled->DynamicBrakeFlag); btLampkaBrakingOff.Turn(mvOccupied->BrakePress < 0.1 && !mvControlled->DynamicBrakeFlag);
break; break;
} }
} }
@@ -9238,9 +9203,18 @@ bool TTrain::Update(double const Deltatime)
btLampkaWysRozr.Turn(false); btLampkaWysRozr.Turn(false);
btLampkaOpory.Turn(false); btLampkaOpory.Turn(false);
btLampkaStyczn.Turn(false); btLampkaStyczn.Turn(false);
btLampkaPrzekRozn.Turn(false);
btLampkaNadmSil.Turn(false);
btLampkaUkrotnienie.Turn(false); btLampkaUkrotnienie.Turn(false);
btLampkaHamPosp.Turn(false); btLampkaHamPosp.Turn(false);
btLampkaBoczniki.Turn(false); btLampkaBoczniki.Turn(false);
btLampkaBocznik1.Turn(false);
btLampkaBocznik2.Turn(false);
btLampkaBocznik3.Turn(false);
btLampkaBocznik4.Turn(false);
btLampkaGear1.Turn(false);
btLampkaGear2.Turn(false);
btLampkaHydroLockup.Turn(false);
btLampkaNapNastHam.Turn(false); btLampkaNapNastHam.Turn(false);
btLampkaPrzetw.Turn(false); btLampkaPrzetw.Turn(false);
btLampkaPrzetwOff.Turn(false); btLampkaPrzetwOff.Turn(false);
@@ -11276,6 +11250,9 @@ void TTrain::clear_cab_controls()
btLampkaBocznik2.Clear(); btLampkaBocznik2.Clear();
btLampkaBocznik3.Clear(); btLampkaBocznik3.Clear();
btLampkaBocznik4.Clear(); btLampkaBocznik4.Clear();
btLampkaGear1.Clear();
btLampkaGear2.Clear();
btLampkaHydroLockup.Clear();
btLampkaRadiotelefon.Clear(); btLampkaRadiotelefon.Clear();
btLampkaHamienie.Clear(); btLampkaHamienie.Clear();
btLampkaBrakingOff.Clear(); btLampkaBrakingOff.Clear();
@@ -11689,6 +11666,9 @@ bool TTrain::initialize_button(cParser &Parser, std::string const &Label, int co
{"i-scnd2:", btLampkaBocznik2}, {"i-scnd2:", btLampkaBocznik2},
{"i-scnd3:", btLampkaBocznik3}, {"i-scnd3:", btLampkaBocznik3},
{"i-scnd4:", btLampkaBocznik4}, {"i-scnd4:", btLampkaBocznik4},
{"i-gear1:", btLampkaGear1},
{"i-gear2:", btLampkaGear2},
{"i-hydrolockup:", btLampkaHydroLockup},
{"i-braking:", btLampkaHamienie}, {"i-braking:", btLampkaHamienie},
{"i-brakingoff:", btLampkaBrakingOff}, {"i-brakingoff:", btLampkaBrakingOff},
{"i-dynamicbrake:", btLampkaED}, {"i-dynamicbrake:", btLampkaED},

View File

@@ -759,6 +759,9 @@ public: // reszta może by?publiczna
TButton btLampkaBocznik2; TButton btLampkaBocznik2;
TButton btLampkaBocznik3; TButton btLampkaBocznik3;
TButton btLampkaBocznik4; TButton btLampkaBocznik4;
TButton btLampkaGear1;
TButton btLampkaGear2;
TButton btLampkaHydroLockup;
TButton btLampkaRadiotelefon; // TODO: implement TButton btLampkaRadiotelefon; // TODO: implement
TButton btLampkaHamienie; TButton btLampkaHamienie;
TButton btLampkaBrakingOff; TButton btLampkaBrakingOff;