mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-19 12:19:18 +02:00
voltage relays, additional light cab controls, minor cab control fixes
This commit is contained in:
2
Button.h
2
Button.h
@@ -25,7 +25,7 @@ public:
|
||||
void Turn( bool const State );
|
||||
inline
|
||||
bool GetValue() const {
|
||||
return ( m_state ? 1 : 0 ); }
|
||||
return m_state; }
|
||||
inline
|
||||
bool Active() {
|
||||
return ( ( pModelOn != nullptr )
|
||||
|
||||
@@ -410,14 +410,14 @@ struct TBoilerType {
|
||||
};
|
||||
/*rodzaj odbieraka pradu*/
|
||||
struct TCurrentCollector {
|
||||
long CollectorsNo; //musi być tu, bo inaczej się kopie
|
||||
double MinH; double MaxH; //zakres ruchu pantografu, nigdzie nie używany
|
||||
double CSW; //szerokość części roboczej (styku) ślizgacza
|
||||
double MinV; double MaxV; //minimalne i maksymalne akceptowane napięcie
|
||||
double OVP; //czy jest przekaznik nadnapieciowy
|
||||
double InsetV; //minimalne napięcie wymagane do załączenia
|
||||
double MinPress; //minimalne ciśnienie do załączenia WS
|
||||
double MaxPress; //maksymalne ciśnienie za reduktorem
|
||||
long CollectorsNo{0}; //musi być tu, bo inaczej się kopie
|
||||
double MinH{ 0.0 }; double MaxH{ 0.0 }; //zakres ruchu pantografu, nigdzie nie używany
|
||||
double CSW{ 0.0 }; //szerokość części roboczej (styku) ślizgacza
|
||||
double MinV{ 0.0 }; double MaxV{ 0.0 }; //minimalne i maksymalne akceptowane napięcie
|
||||
bool OVP{ false }; //czy jest przekaznik nadnapieciowy
|
||||
double InsetV{ 0.0 }; //minimalne napięcie wymagane do załączenia
|
||||
double MinPress{ 0.0 }; //minimalne ciśnienie do załączenia WS
|
||||
double MaxPress{ 0.0 }; //maksymalne ciśnienie za reduktorem
|
||||
//inline TCurrentCollector() {
|
||||
// CollectorsNo = 0;
|
||||
// MinH, MaxH, CSW, MinV, MaxV = 0.0;
|
||||
@@ -1119,6 +1119,8 @@ public:
|
||||
double PantPress = 0.0; /*Cisnienie w zbiornikach pantografow*/
|
||||
bool PantPressSwitchActive{ false }; // state of the pantograph pressure switch. gets primed at defined pressure level in pantograph air system
|
||||
bool PantPressLockActive{ false }; // pwr system state flag. fires when pressure switch activates by pantograph pressure dropping below defined level
|
||||
bool NoVoltRelay{ true }; // switches off if the power level drops below threshold
|
||||
bool OvervoltageRelay{ true }; // switches off if the power level goes above threshold
|
||||
bool s_CAtestebrake = false; //hunter-091012: zmienna dla testu ca
|
||||
|
||||
/*-zmienne dla lokomotywy spalinowej z przekladnia mechaniczna*/
|
||||
@@ -1337,7 +1339,7 @@ public:
|
||||
void FuelPumpCheck( double const Timestep );
|
||||
void OilPumpCheck( double const Timestep );
|
||||
bool FuseOn(void); //bezpiecznik nadamiary
|
||||
bool FuseFlagCheck(void); // sprawdzanie flagi nadmiarowego
|
||||
bool FuseFlagCheck(void) const; // sprawdzanie flagi nadmiarowego
|
||||
void FuseOff(void); // wylaczenie nadmiarowego
|
||||
double ShowCurrent( int AmpN ) const; //pokazuje bezwgl. wartosc pradu na wybranym amperomierzu
|
||||
double ShowCurrentP(int AmpN) const; //pokazuje bezwgl. wartosc pradu w wybranym pojezdzie //Q 20160722
|
||||
@@ -1357,7 +1359,7 @@ public:
|
||||
bool AutoRelaySwitch(bool State); //przelacznik automatycznego rozruchu
|
||||
bool AutoRelayCheck(void);//symulacja automatycznego rozruchu
|
||||
|
||||
bool ResistorsFlagCheck(void); //sprawdzenie kontrolki oporow rozruchowych NBMX
|
||||
bool ResistorsFlagCheck(void) const; //sprawdzenie kontrolki oporow rozruchowych NBMX
|
||||
bool PantFront( bool const State, range_t const Notify = range_t::consist ); //obsluga pantografou przedniego
|
||||
bool PantRear( bool const State, range_t const Notify = range_t::consist ); //obsluga pantografu tylnego
|
||||
|
||||
|
||||
@@ -2582,6 +2582,8 @@ bool TMoverParameters::MainSwitch( bool const State, range_t const Notify )
|
||||
if( ( false == State )
|
||||
|| ( ( ( ScndCtrlPos == 0 ) || ( EngineType == TEngineType::ElectricInductionMotor ) )
|
||||
&& ( ( ConvOvldFlag == false ) || ( TrainType == dt_EZT ) )
|
||||
&& ( true == NoVoltRelay )
|
||||
&& ( true == OvervoltageRelay )
|
||||
&& ( LastSwitchingTime > CtrlDelay )
|
||||
&& ( false == TestFlag( DamageFlag, dtrain_out ) )
|
||||
&& ( false == TestFlag( EngDmgFlag, 1 ) ) ) ) {
|
||||
@@ -4452,6 +4454,32 @@ double TMoverParameters::TractionForce( double dt ) {
|
||||
}
|
||||
}
|
||||
|
||||
switch( EngineType ) {
|
||||
|
||||
case TEngineType::ElectricSeriesMotor: {
|
||||
/*
|
||||
if ((Mains)) // nie wchodzić w funkcję bez potrzeby
|
||||
if ( (std::max(GetTrainsetVoltage(), std::abs(Voltage)) < EnginePowerSource.CollectorParameters.MinV) ||
|
||||
(std::max(GetTrainsetVoltage(), std::abs(Voltage)) * EnginePowerSource.CollectorParameters.OVP >
|
||||
EnginePowerSource.CollectorParameters.MaxV))
|
||||
if( MainSwitch( false, ( TrainType == dt_EZT ? range_t::unit : range_t::local ) ) ) // TODO: check whether we need to send this EMU-wide
|
||||
EventFlag = true; // wywalanie szybkiego z powodu niewłaściwego napięcia
|
||||
*/
|
||||
// update the state of voltage relays
|
||||
auto const voltage { std::max( GetTrainsetVoltage(), std::abs( RunningTraction.TractionVoltage ) ) };
|
||||
NoVoltRelay = ( voltage >= EnginePowerSource.CollectorParameters.MinV );
|
||||
OvervoltageRelay = ( voltage <= EnginePowerSource.CollectorParameters.MaxV ) || ( false == EnginePowerSource.CollectorParameters.OVP );
|
||||
// wywalanie szybkiego z powodu niewłaściwego napięcia
|
||||
EventFlag |= ( ( true == Mains )
|
||||
&& ( ( false == NoVoltRelay ) || ( false == OvervoltageRelay ) )
|
||||
&& ( MainSwitch( false, ( TrainType == dt_EZT ? range_t::unit : range_t::local ) ) ) ); // TODO: check whether we need to send this EMU-wide
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ActiveDir != 0)
|
||||
switch (EngineType)
|
||||
{
|
||||
@@ -4532,13 +4560,6 @@ double TMoverParameters::TractionForce( double dt ) {
|
||||
if (Vhyp > CtrlDelay / 2) // jesli czas oddzialywania przekroczony
|
||||
FuseOff(); // wywalanie bezpiecznika z powodu przetezenia silnikow
|
||||
|
||||
if ((Mains)) // nie wchodzić w funkcję bez potrzeby
|
||||
if ( (std::max(GetTrainsetVoltage(), std::abs(Voltage)) < EnginePowerSource.CollectorParameters.MinV) ||
|
||||
(std::max(GetTrainsetVoltage(), std::abs(Voltage)) * EnginePowerSource.CollectorParameters.OVP >
|
||||
EnginePowerSource.CollectorParameters.MaxV))
|
||||
if( MainSwitch( false, ( TrainType == dt_EZT ? range_t::unit : range_t::local ) ) ) // TODO: check whether we need to send this EMU-wide
|
||||
EventFlag = true; // wywalanie szybkiego z powodu niewłaściwego napięcia
|
||||
|
||||
if (((DynamicBrakeType == dbrake_automatic) || (DynamicBrakeType == dbrake_switch)) && (DynamicBrakeFlag))
|
||||
Itot = Im * 2; // 2x2 silniki w EP09
|
||||
else if ((TrainType == dt_EZT) && (Imin == IminLo) && (ScndS)) // yBARC - boczniki na szeregu poprawnie
|
||||
@@ -5161,7 +5182,7 @@ double TMoverParameters::ComputeRotatingWheel(double WForce, double dt, double n
|
||||
// Q: 20160713
|
||||
// Sprawdzenie bezpiecznika nadmiarowego
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::FuseFlagCheck(void)
|
||||
bool TMoverParameters::FuseFlagCheck(void) const
|
||||
{
|
||||
bool FFC;
|
||||
|
||||
@@ -5353,7 +5374,7 @@ bool TMoverParameters::MinCurrentSwitch(bool State)
|
||||
// Q: 20160713
|
||||
// Sprawdzenie wskaźnika jazdy na oporach
|
||||
// *************************************************************************************************
|
||||
bool TMoverParameters::ResistorsFlagCheck(void)
|
||||
bool TMoverParameters::ResistorsFlagCheck(void) const
|
||||
{
|
||||
bool RFC = false;
|
||||
|
||||
@@ -8500,15 +8521,14 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
|
||||
|
||||
auto &collectorparameters = Powerparameters.CollectorParameters;
|
||||
|
||||
collectorparameters = TCurrentCollector();
|
||||
|
||||
extract_value( collectorparameters.CollectorsNo, "CollectorsNo", Line, "" );
|
||||
extract_value( collectorparameters.MinH, "MinH", Line, "" );
|
||||
extract_value( collectorparameters.MaxH, "MaxH", Line, "" );
|
||||
extract_value( collectorparameters.CSW, "CSW", Line, "" ); //szerokość części roboczej
|
||||
extract_value( collectorparameters.MaxV, "MaxVoltage", Line, "" );
|
||||
collectorparameters.OVP = //przekaźnik nadnapięciowy
|
||||
extract_value( "OverVoltProt", Line ) == "Yes" ?
|
||||
1 :
|
||||
0;
|
||||
extract_value( collectorparameters.OVP, "OverVoltProt", Line, "" ); //przekaźnik nadnapięciowy
|
||||
//napięcie rozłączające WS
|
||||
collectorparameters.MinV = 0.5 * collectorparameters.MaxV; //gdyby parametr nie podany
|
||||
extract_value( collectorparameters.MinV, "MinV", Line, "" );
|
||||
|
||||
157
Train.cpp
157
Train.cpp
@@ -311,6 +311,8 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
||||
{ user_command::instrumentlighttoggle, &TTrain::OnCommand_instrumentlighttoggle },
|
||||
{ user_command::instrumentlightenable, &TTrain::OnCommand_instrumentlightenable },
|
||||
{ user_command::instrumentlightdisable, &TTrain::OnCommand_instrumentlightdisable },
|
||||
{ user_command::dashboardlighttoggle, &TTrain::OnCommand_dashboardlighttoggle },
|
||||
{ user_command::timetablelighttoggle, &TTrain::OnCommand_timetablelighttoggle },
|
||||
{ user_command::doorlocktoggle, &TTrain::OnCommand_doorlocktoggle },
|
||||
{ user_command::doortoggleleft, &TTrain::OnCommand_doortoggleleft },
|
||||
{ user_command::doortoggleright, &TTrain::OnCommand_doortoggleright },
|
||||
@@ -370,7 +372,6 @@ TTrain::TTrain() {
|
||||
bCabLightDim = false;
|
||||
//-----
|
||||
pMechSittingPosition = Math3D::vector3(0, 0, 0); // ABu: 180404
|
||||
InstrumentLightActive = false; // ABu: 030405
|
||||
fTachoTimer = 0.0; // włączenie skoków wskazań prędkościomierza
|
||||
|
||||
//
|
||||
@@ -3619,6 +3620,54 @@ void TTrain::OnCommand_instrumentlightdisable( TTrain *Train, command_data const
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_dashboardlighttoggle( TTrain *Train, command_data const &Command ) {
|
||||
// only reacting to press, so the switch doesn't flip back and forth if key is held down
|
||||
if( Command.action != GLFW_PRESS ) { return; }
|
||||
|
||||
if( Train->ggDashboardLightButton.SubModel == nullptr ) {
|
||||
// TODO: proper control deviced definition for the interiors, that doesn't hinge of presence of 3d submodels
|
||||
WriteLog( "Dashboard Light switch is missing, or wasn't defined" );
|
||||
return;
|
||||
}
|
||||
|
||||
if( false == Train->DashboardLightActive ) {
|
||||
// turn on
|
||||
Train->DashboardLightActive = true;
|
||||
// visual feedback
|
||||
Train->ggDashboardLightButton.UpdateValue( 1.0, Train->dsbSwitch );
|
||||
}
|
||||
else {
|
||||
//turn off
|
||||
Train->DashboardLightActive = false;
|
||||
// visual feedback
|
||||
Train->ggDashboardLightButton.UpdateValue( 0.0, Train->dsbSwitch );
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_timetablelighttoggle( TTrain *Train, command_data const &Command ) {
|
||||
// only reacting to press, so the switch doesn't flip back and forth if key is held down
|
||||
if( Command.action != GLFW_PRESS ) { return; }
|
||||
|
||||
if( Train->ggTimetableLightButton.SubModel == nullptr ) {
|
||||
// TODO: proper control deviced definition for the interiors, that doesn't hinge of presence of 3d submodels
|
||||
WriteLog( "Timetable Light switch is missing, or wasn't defined" );
|
||||
return;
|
||||
}
|
||||
|
||||
if( false == Train->TimetableLightActive ) {
|
||||
// turn on
|
||||
Train->TimetableLightActive = true;
|
||||
// visual feedback
|
||||
Train->ggTimetableLightButton.UpdateValue( 1.0, Train->dsbSwitch );
|
||||
}
|
||||
else {
|
||||
//turn off
|
||||
Train->TimetableLightActive = false;
|
||||
// visual feedback
|
||||
Train->ggTimetableLightButton.UpdateValue( 0.0, Train->dsbSwitch );
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_heatingtoggle( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Train->ggTrainHeatingButton.SubModel == nullptr ) {
|
||||
@@ -4830,18 +4879,6 @@ bool TTrain::Update( double const Deltatime )
|
||||
Console::ValueSet(6, fTachoVelocity);
|
||||
}
|
||||
#endif
|
||||
// hunter-080812: wyrzucanie szybkiego na elektrykach gdy nie ma napiecia przy dowolnym ustawieniu kierunkowego
|
||||
// Ra: to już jest w T_MoverParameters::TractionForce(), ale zależy od kierunku
|
||||
if( ( mvControlled->Mains )
|
||||
&& ( mvControlled->EnginePowerSource.SourceType == TPowerSource::CurrentCollector ) ) {
|
||||
if( std::max( mvControlled->GetTrainsetVoltage(), std::abs( mvControlled->RunningTraction.TractionVoltage ) ) < 0.5 * mvControlled->EnginePowerSource.MaxVoltage ) {
|
||||
// TODO: check whether it should affect entire consist for EMU
|
||||
// TODO: check whether it should happen if there's power supplied alternatively through hvcouplers
|
||||
// TODO: potentially move this to the mover module, as there isn't much reason to have this dependent on the operator presence
|
||||
mvControlled->MainSwitch( false, ( mvControlled->TrainType == dt_EZT ? range_t::unit : range_t::local ) );
|
||||
}
|
||||
}
|
||||
|
||||
// hunter-091012: swiatlo
|
||||
if (bCabLight == true)
|
||||
{
|
||||
@@ -5290,42 +5327,49 @@ bool TTrain::Update( double const Deltatime )
|
||||
if (tmp)
|
||||
if ( mvControlled->Battery || mvControlled->ConverterFlag ) {
|
||||
|
||||
btLampkaWylSzybkiB.Turn( tmp->MoverParameters->Mains );
|
||||
btLampkaWylSzybkiBOff.Turn( false == tmp->MoverParameters->Mains );
|
||||
auto const *mover { tmp->MoverParameters };
|
||||
|
||||
btLampkaOporyB.Turn(tmp->MoverParameters->ResistorsFlagCheck());
|
||||
btLampkaWylSzybkiB.Turn( mover->Mains );
|
||||
btLampkaWylSzybkiBOff.Turn( false == mover->Mains );
|
||||
|
||||
btLampkaOporyB.Turn(mover->ResistorsFlagCheck());
|
||||
btLampkaBezoporowaB.Turn(
|
||||
( true == tmp->MoverParameters->ResistorsFlagCheck() )
|
||||
|| ( tmp->MoverParameters->MainCtrlActualPos == 0 ) ); // do EU04
|
||||
( true == mover->ResistorsFlagCheck() )
|
||||
|| ( mover->MainCtrlActualPos == 0 ) ); // do EU04
|
||||
|
||||
if( ( tmp->MoverParameters->StLinFlag )
|
||||
|| ( tmp->MoverParameters->BrakePress > 2.0 )
|
||||
|| ( tmp->MoverParameters->PipePress < 0.36 ) ) {
|
||||
if( ( mover->StLinFlag )
|
||||
|| ( mover->BrakePress > 2.0 )
|
||||
|| ( mover->PipePress < 0.36 ) ) {
|
||||
btLampkaStycznB.Turn( false );
|
||||
}
|
||||
else if( tmp->MoverParameters->BrakePress < 1.0 ) {
|
||||
else if( mover->BrakePress < 1.0 ) {
|
||||
btLampkaStycznB.Turn( true ); // mozna prowadzic rozruch
|
||||
}
|
||||
// hunter-271211: sygnalizacja poslizgu w pierwszym pojezdzie, gdy wystapi w drugim
|
||||
btLampkaPoslizg.Turn(tmp->MoverParameters->SlippingWheels);
|
||||
btLampkaPoslizg.Turn(mover->SlippingWheels);
|
||||
|
||||
btLampkaSprezarkaB.Turn( tmp->MoverParameters->CompressorFlag ); // mutopsitka dziala
|
||||
btLampkaSprezarkaBOff.Turn( false == tmp->MoverParameters->CompressorFlag );
|
||||
btLampkaSprezarkaB.Turn( mover->CompressorFlag ); // mutopsitka dziala
|
||||
btLampkaSprezarkaBOff.Turn( false == mover->CompressorFlag );
|
||||
if( mvControlled->Signalling == true ) {
|
||||
if( tmp->MoverParameters->BrakePress >= 1.45f ) {
|
||||
if( mover->BrakePress >= 1.45f ) {
|
||||
btLampkaHamowanie2zes.Turn( true );
|
||||
}
|
||||
if( tmp->MoverParameters->BrakePress < 0.75f ) {
|
||||
if( mover->BrakePress < 0.75f ) {
|
||||
btLampkaHamowanie2zes.Turn( false );
|
||||
}
|
||||
}
|
||||
else {
|
||||
btLampkaHamowanie2zes.Turn( false );
|
||||
}
|
||||
btLampkaNadmPrzetwB.Turn( tmp->MoverParameters->ConvOvldFlag ); // nadmiarowy przetwornicy?
|
||||
btLampkaPrzetwB.Turn( tmp->MoverParameters->ConverterFlag ); // zalaczenie przetwornicy
|
||||
btLampkaPrzetwBOff.Turn( false == tmp->MoverParameters->ConverterFlag );
|
||||
btLampkaMalfunctionB.Turn( tmp->MoverParameters->dizel_heat.PA );
|
||||
btLampkaNadmPrzetwB.Turn( mover->ConvOvldFlag ); // nadmiarowy przetwornicy?
|
||||
btLampkaPrzetwB.Turn( mover->ConverterFlag ); // zalaczenie przetwornicy
|
||||
btLampkaPrzetwBOff.Turn( false == mover->ConverterFlag );
|
||||
btLampkaHVoltageB.Turn( mover->NoVoltRelay && mover->OvervoltageRelay );
|
||||
btLampkaMalfunctionB.Turn( mover->dizel_heat.PA );
|
||||
// motor fuse indicator turns on if the fuse was blown in any unit under control
|
||||
if( mover->Mains ) {
|
||||
btLampkaNadmSil.Turn( btLampkaNadmSil.GetValue() || mover->FuseFlagCheck() );
|
||||
}
|
||||
}
|
||||
else // wylaczone
|
||||
{
|
||||
@@ -5340,6 +5384,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
btLampkaNadmPrzetwB.Turn( false );
|
||||
btLampkaPrzetwB.Turn( false );
|
||||
btLampkaPrzetwBOff.Turn( false );
|
||||
btLampkaHVoltageB.Turn( false );
|
||||
btLampkaMalfunctionB.Turn( false );
|
||||
}
|
||||
}
|
||||
@@ -5488,25 +5533,15 @@ bool TTrain::Update( double const Deltatime )
|
||||
|
||||
//----------
|
||||
|
||||
// przelaczniki
|
||||
// ABu030405 obsluga lampki uniwersalnej:
|
||||
if( btInstrumentLight.Active() ) // w ogóle jest
|
||||
if( InstrumentLightActive ) // załączona
|
||||
switch( InstrumentLightType ) {
|
||||
case 0:
|
||||
btInstrumentLight.Turn( mvControlled->Battery || mvControlled->ConverterFlag );
|
||||
break;
|
||||
case 1:
|
||||
btInstrumentLight.Turn( mvControlled->Mains );
|
||||
break;
|
||||
case 2:
|
||||
btInstrumentLight.Turn( mvControlled->ConverterFlag );
|
||||
break;
|
||||
default:
|
||||
btInstrumentLight.Turn( false );
|
||||
}
|
||||
else
|
||||
btInstrumentLight.Turn( false );
|
||||
// lights
|
||||
auto const lightpower { (
|
||||
InstrumentLightType == 0 ? mvControlled->Battery || mvControlled->ConverterFlag :
|
||||
InstrumentLightType == 1 ? mvControlled->Mains :
|
||||
InstrumentLightType == 2 ? mvControlled->ConverterFlag :
|
||||
false ) };
|
||||
btInstrumentLight.Turn( InstrumentLightActive && lightpower );
|
||||
btDashboardLight.Turn( DashboardLightActive && lightpower );
|
||||
btTimetableLight.Turn( TimetableLightActive && lightpower );
|
||||
|
||||
// guziki:
|
||||
ggMainOffButton.Update();
|
||||
@@ -5566,6 +5601,8 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
// hunter-091012
|
||||
ggInstrumentLightButton.Update();
|
||||
ggDashboardLightButton.Update();
|
||||
ggTimetableLightButton.Update();
|
||||
ggCabLightButton.Update();
|
||||
ggCabLightDimButton.Update();
|
||||
ggBatteryButton.Update();
|
||||
@@ -6698,6 +6735,8 @@ void TTrain::clear_cab_controls()
|
||||
universal.Clear();
|
||||
}
|
||||
ggInstrumentLightButton.Clear();
|
||||
ggDashboardLightButton.Clear();
|
||||
ggTimetableLightButton.Clear();
|
||||
// hunter-091012
|
||||
ggCabLightButton.Clear();
|
||||
ggCabLightDimButton.Clear();
|
||||
@@ -6781,6 +6820,8 @@ void TTrain::clear_cab_controls()
|
||||
btLampkaHamulecReczny.Clear();
|
||||
btLampkaBlokadaDrzwi.Clear();
|
||||
btInstrumentLight.Clear();
|
||||
btDashboardLight.Clear();
|
||||
btTimetableLight.Clear();
|
||||
btLampkaWentZaluzje.Clear();
|
||||
btLampkaDoorLeft.Clear();
|
||||
btLampkaDoorRight.Clear();
|
||||
@@ -6794,6 +6835,7 @@ void TTrain::clear_cab_controls()
|
||||
btLampkaRadiotelefon.Clear();
|
||||
btLampkaHamienie.Clear();
|
||||
btLampkaBrakingOff.Clear();
|
||||
btLampkaED.Clear();
|
||||
btLampkaBrakeProfileG.Clear();
|
||||
btLampkaBrakeProfileP.Clear();
|
||||
btLampkaBrakeProfileR.Clear();
|
||||
@@ -6803,10 +6845,12 @@ void TTrain::clear_cab_controls()
|
||||
btLampkaSprezarkaBOff.Clear();
|
||||
btLampkaFuelPumpOff.Clear();
|
||||
btLampkaNapNastHam.Clear();
|
||||
btLampkaOporyB.Clear();
|
||||
btLampkaStycznB.Clear();
|
||||
btLampkaHamowanie1zes.Clear();
|
||||
btLampkaHamowanie2zes.Clear();
|
||||
btLampkaNadmPrzetwB.Clear();
|
||||
btLampkaHVoltageB.Clear();
|
||||
btLampkaForward.Clear();
|
||||
btLampkaBackward.Clear();
|
||||
// light indicators
|
||||
@@ -7001,6 +7045,14 @@ void TTrain::set_cab_controls() {
|
||||
InstrumentLightActive ?
|
||||
1.0 :
|
||||
0.0 ) );
|
||||
ggDashboardLightButton.PutValue( (
|
||||
DashboardLightActive ?
|
||||
1.0 :
|
||||
0.0 ) );
|
||||
ggTimetableLightButton.PutValue( (
|
||||
TimetableLightActive ?
|
||||
1.0 :
|
||||
0.0 ) );
|
||||
// doors
|
||||
// NOTE: we're relying on the cab models to have switches reversed for the rear cab(?)
|
||||
ggDoorLeftButton.PutValue( mvOccupied->DoorLeftOpened ? 1.0 : 0.0 );
|
||||
@@ -7149,6 +7201,7 @@ bool TTrain::initialize_button(cParser &Parser, std::string const &Label, int co
|
||||
{ "i-resistorsb:", btLampkaOporyB },
|
||||
{ "i-contactorsb:", btLampkaStycznB },
|
||||
{ "i-conv_ovldb:", btLampkaNadmPrzetwB },
|
||||
{ "i-hvoltageb:", btLampkaHVoltageB },
|
||||
{ "i-malfunction:", btLampkaMalfunction },
|
||||
{ "i-malfunctionb:", btLampkaMalfunctionB },
|
||||
{ "i-forward:", btLampkaForward },
|
||||
@@ -7163,6 +7216,8 @@ bool TTrain::initialize_button(cParser &Parser, std::string const &Label, int co
|
||||
{ "i-rearrightlight:", btLampkaRearRightLight },
|
||||
{ "i-rearleftend:", btLampkaRearLeftEndLight },
|
||||
{ "i-rearrightend:", btLampkaRearRightEndLight },
|
||||
{ "i-dashboardlight:", btDashboardLight },
|
||||
{ "i-timetablelight:", btTimetableLight },
|
||||
{ "i-cablight:", btCabLight }
|
||||
};
|
||||
auto lookup = lights.find( Label );
|
||||
@@ -7290,6 +7345,8 @@ bool TTrain::initialize_gauge(cParser &Parser, std::string const &Label, int con
|
||||
{ "door_signalling_sw:", ggDoorSignallingButton },
|
||||
{ "nextcurrent_sw:", ggNextCurrentButton },
|
||||
{ "instrumentlight_sw:", ggInstrumentLightButton },
|
||||
{ "dashboardlight_sw:", ggDashboardLightButton },
|
||||
{ "timetablelight_sw:", ggTimetableLightButton },
|
||||
{ "cablight_sw:", ggCabLightButton },
|
||||
{ "cablightdim_sw:", ggCabLightDimButton },
|
||||
{ "battery_sw:", ggBatteryButton },
|
||||
|
||||
23
Train.h
23
Train.h
@@ -296,6 +296,8 @@ class TTrain
|
||||
static void OnCommand_instrumentlighttoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_instrumentlightenable( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_instrumentlightdisable( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_dashboardlighttoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_timetablelighttoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_doorlocktoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_doortoggleleft( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_doortoggleright( TTrain *Train, command_data const &Command );
|
||||
@@ -415,6 +417,8 @@ public: // reszta może by?publiczna
|
||||
std::array<TGauge, 10> ggUniversals; // NOTE: temporary arrangement until we have dynamically built control table
|
||||
|
||||
TGauge ggInstrumentLightButton;
|
||||
TGauge ggDashboardLightButton;
|
||||
TGauge ggTimetableLightButton;
|
||||
TGauge ggCabLightButton; // hunter-091012: przelacznik oswietlania kabiny
|
||||
TGauge ggCabLightDimButton; // hunter-091012: przelacznik przyciemnienia
|
||||
TGauge ggBatteryButton; // Stele 161228 hebelek baterii
|
||||
@@ -458,13 +462,13 @@ public: // reszta może by?publiczna
|
||||
TButton btLampkaNadmPrzetw;
|
||||
TButton btLampkaPrzetw;
|
||||
TButton btLampkaPrzetwOff;
|
||||
TButton btLampkaPrzekRozn;
|
||||
TButton btLampkaPrzekRoznPom;
|
||||
TButton btLampkaPrzekRozn; // TODO: implement
|
||||
TButton btLampkaPrzekRoznPom; // TODO: implement
|
||||
TButton btLampkaNadmSil;
|
||||
TButton btLampkaWylSzybki;
|
||||
TButton btLampkaWylSzybkiOff;
|
||||
TButton btLampkaNadmWent;
|
||||
TButton btLampkaNadmSpr;
|
||||
TButton btLampkaNadmSpr; // TODO: implement
|
||||
// yB: drugie lampki dla EP05 i ET42
|
||||
TButton btLampkaOporyB;
|
||||
TButton btLampkaStycznB;
|
||||
@@ -473,6 +477,7 @@ public: // reszta może by?publiczna
|
||||
TButton btLampkaNadmPrzetwB;
|
||||
TButton btLampkaPrzetwB;
|
||||
TButton btLampkaPrzetwBOff;
|
||||
TButton btLampkaHVoltageB; // TODO: implement
|
||||
// KURS90 lampki jazdy bezoporowej dla EU04
|
||||
TButton btLampkaBezoporowaB;
|
||||
TButton btLampkaBezoporowa;
|
||||
@@ -485,9 +490,13 @@ public: // reszta może by?publiczna
|
||||
TButton btLampkaOpory;
|
||||
TButton btLampkaWysRozr;
|
||||
TButton btInstrumentLight;
|
||||
int InstrumentLightType; // ABu 030405 - swiecenie uzaleznione od: 0-nic, 1-obw.gl, 2-przetw.
|
||||
bool InstrumentLightActive;
|
||||
TButton btLampkaWentZaluzje; // ET22
|
||||
TButton btDashboardLight;
|
||||
TButton btTimetableLight;
|
||||
int InstrumentLightType{ 0 }; // ABu 030405 - swiecenie uzaleznione od: 0-nic, 1-obw.gl, 2-przetw.
|
||||
bool InstrumentLightActive{ false };
|
||||
bool DashboardLightActive{ false };
|
||||
bool TimetableLightActive{ false };
|
||||
TButton btLampkaWentZaluzje; // ET22 // TODO: implement
|
||||
TButton btLampkaOgrzewanieSkladu;
|
||||
TButton btLampkaSHP;
|
||||
TButton btLampkaCzuwaka; // McZapkie-141102
|
||||
@@ -503,7 +512,7 @@ public: // reszta może by?publiczna
|
||||
TButton btLampkaBocznik2;
|
||||
TButton btLampkaBocznik3;
|
||||
TButton btLampkaBocznik4;
|
||||
TButton btLampkaRadiotelefon;
|
||||
TButton btLampkaRadiotelefon; // TODO: implement
|
||||
TButton btLampkaHamienie;
|
||||
TButton btLampkaBrakingOff;
|
||||
TButton btLampkaED; // Stele 161228 hamowanie elektrodynamiczne
|
||||
|
||||
@@ -200,6 +200,8 @@ commanddescription_sequence Commands_descriptions = {
|
||||
{ "instrumentlighttoggle", command_target::vehicle },
|
||||
{ "instrumentlightenable", command_target::vehicle },
|
||||
{ "instrumentlightdisable", command_target::vehicle },
|
||||
{ "dshboardlighttoggle", command_target::vehicle },
|
||||
{ "timetablelighttoggle", command_target::vehicle },
|
||||
{ "generictoggle0", command_target::vehicle },
|
||||
{ "generictoggle1", command_target::vehicle },
|
||||
{ "generictoggle2", command_target::vehicle },
|
||||
|
||||
@@ -193,6 +193,8 @@ enum class user_command {
|
||||
instrumentlighttoggle,
|
||||
instrumentlightenable,
|
||||
instrumentlightdisable,
|
||||
dashboardlighttoggle,
|
||||
timetablelighttoggle,
|
||||
generictoggle0,
|
||||
generictoggle1,
|
||||
generictoggle2,
|
||||
|
||||
@@ -202,6 +202,8 @@ driverkeyboard_input::default_bindings() {
|
||||
{ user_command::instrumentlighttoggle, GLFW_KEY_SEMICOLON },
|
||||
// instrumentlightenable,
|
||||
// instrumentlightdisable,
|
||||
// dashboardlighttoggle,
|
||||
// timetablelighttoggle,
|
||||
{ user_command::generictoggle0, GLFW_KEY_0 },
|
||||
{ user_command::generictoggle1, GLFW_KEY_1 },
|
||||
{ user_command::generictoggle2, GLFW_KEY_2 },
|
||||
|
||||
@@ -676,6 +676,12 @@ drivermouse_input::default_bindings() {
|
||||
{ "instrumentlight_sw:", {
|
||||
user_command::instrumentlighttoggle,
|
||||
user_command::none } },
|
||||
{ "dashboardlight_sw:", {
|
||||
user_command::dashboardlighttoggle,
|
||||
user_command::none } },
|
||||
{ "timetablelight_sw:", {
|
||||
user_command::timetablelighttoggle,
|
||||
user_command::none } },
|
||||
{ "cablight_sw:", {
|
||||
user_command::interiorlighttoggle,
|
||||
user_command::none } },
|
||||
|
||||
@@ -139,6 +139,8 @@ init() {
|
||||
"door locking",
|
||||
"current indicator source",
|
||||
"instrument light",
|
||||
"dashboard light",
|
||||
"timetable light",
|
||||
"interior light",
|
||||
"interior light dimmer",
|
||||
"battery",
|
||||
@@ -271,6 +273,8 @@ init() {
|
||||
"sygnalizacja blokady drzwi",
|
||||
"prady drugiego czlonu",
|
||||
"oswietlenie przyrzadow",
|
||||
"oswietlenie pulpitu",
|
||||
"oswietlenie rozkladu jazdy",
|
||||
"oswietlenie kabiny",
|
||||
"przyciemnienie oswietlenia kabiny",
|
||||
"bateria",
|
||||
@@ -375,6 +379,8 @@ init() {
|
||||
"door_signalling_sw:",
|
||||
"nextcurrent_sw:",
|
||||
"instrumentlight_sw:",
|
||||
"dashboardlight_sw:",
|
||||
"timetablelight_sw:",
|
||||
"cablight_sw:",
|
||||
"cablightdim_sw:",
|
||||
"battery_sw:",
|
||||
|
||||
@@ -128,6 +128,8 @@ enum string {
|
||||
cab_door_signalling_sw,
|
||||
cab_nextcurrent_sw,
|
||||
cab_instrumentlight_sw,
|
||||
cab_dashboardlight_sw,
|
||||
cab_timetablelight_sw,
|
||||
cab_cablight_sw,
|
||||
cab_cablightdim_sw,
|
||||
cab_battery_sw,
|
||||
|
||||
Reference in New Issue
Block a user