mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 20:59:19 +02:00
build 180115. cab indicators for selected brake acting speed, support for multi-part revving sound, minor emu brake sound fixes
This commit is contained in:
35
DynObj.cpp
35
DynObj.cpp
@@ -5560,15 +5560,11 @@ TDynamicObject::powertrain_sounds::render( TMoverParameters const &Vehicle, doub
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( engine_volume >= 0.05 ) {
|
if( engine_volume >= 0.05 ) {
|
||||||
engine
|
|
||||||
.pitch( frequency )
|
|
||||||
.gain( engine_volume )
|
|
||||||
.play( sound_flags::exclusive | sound_flags::looping );
|
|
||||||
|
|
||||||
|
auto enginerevvolume { 0.f };
|
||||||
if( ( Vehicle.EngineType == DieselElectric )
|
if( ( Vehicle.EngineType == DieselElectric )
|
||||||
|| ( Vehicle.EngineType == DieselEngine ) ) {
|
|| ( Vehicle.EngineType == DieselEngine ) ) {
|
||||||
// diesel engine revolutions increase
|
// diesel engine revolutions increase; it can potentially decrease volume of base engine sound
|
||||||
float enginerevvolume { 0 };
|
|
||||||
if( engine_revs_last != -1.f ) {
|
if( engine_revs_last != -1.f ) {
|
||||||
// calculate potential recent increase of engine revolutions
|
// calculate potential recent increase of engine revolutions
|
||||||
auto const revolutionsperminute { Vehicle.enrot * 60 };
|
auto const revolutionsperminute { Vehicle.enrot * 60 };
|
||||||
@@ -5583,25 +5579,36 @@ TDynamicObject::powertrain_sounds::render( TMoverParameters const &Vehicle, doub
|
|||||||
&& ( revolutionsdifference > 1.0 * Deltatime ) ) {
|
&& ( revolutionsdifference > 1.0 * Deltatime ) ) {
|
||||||
engine_revs_change = clamp( engine_revs_change + 5.0 * Deltatime, 0.0, 1.25 );
|
engine_revs_change = clamp( engine_revs_change + 5.0 * Deltatime, 0.0, 1.25 );
|
||||||
}
|
}
|
||||||
enginerevvolume = engine_revs_change;
|
enginerevvolume = 0.8 * engine_revs_change;
|
||||||
}
|
}
|
||||||
engine_revs_last = Vehicle.enrot * 60;
|
engine_revs_last = Vehicle.enrot * 60;
|
||||||
|
|
||||||
if( false == engine_revving.is_combined() ) {
|
auto const enginerevfrequency { (
|
||||||
// if the sound comes with multiple samples we reuse rpm-based calculation from the engine
|
false == engine_revving.is_combined() ?
|
||||||
frequency = engine_revving.m_frequencyoffset + engine_revving.m_frequencyfactor * 1.0;
|
// if the sound contains multiple samples we reuse rpm-based calculation from the engine
|
||||||
}
|
frequency :
|
||||||
|
engine_revving.m_frequencyoffset + 1.f * engine_revving.m_frequencyfactor ) };
|
||||||
|
|
||||||
if( enginerevvolume > 0.02 ) {
|
if( enginerevvolume > 0.02 ) {
|
||||||
engine_revving
|
engine_revving
|
||||||
.pitch( frequency )
|
.pitch( enginerevfrequency )
|
||||||
.gain( enginerevvolume )
|
.gain( enginerevvolume )
|
||||||
.play( sound_flags::exclusive | sound_flags::looping );
|
.play( sound_flags::exclusive );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
engine_revving.stop();
|
engine_revving.stop();
|
||||||
}
|
}
|
||||||
}
|
} // diesel engines
|
||||||
|
|
||||||
|
// multi-part revving sound pieces replace base engine sound, single revving simply gets mixed with the base
|
||||||
|
auto const enginevolume { (
|
||||||
|
( ( enginerevvolume > 0.02 ) && ( true == engine_revving.is_combined() ) ) ?
|
||||||
|
std::max( 0.0, engine_volume - enginerevvolume ) :
|
||||||
|
engine_volume ) };
|
||||||
|
engine
|
||||||
|
.pitch( frequency )
|
||||||
|
.gain( enginevolume )
|
||||||
|
.play( sound_flags::exclusive | sound_flags::looping );
|
||||||
} // enginevolume > 0.05
|
} // enginevolume > 0.05
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
130
Train.cpp
130
Train.cpp
@@ -321,7 +321,6 @@ TTrain::TTrain() {
|
|||||||
pMechOffset = vector3(0, 0, 0);
|
pMechOffset = vector3(0, 0, 0);
|
||||||
fBlinkTimer = 0;
|
fBlinkTimer = 0;
|
||||||
fHaslerTimer = 0;
|
fHaslerTimer = 0;
|
||||||
keybrakecount = 0;
|
|
||||||
DynamicSet(NULL); // ustawia wszystkie mv*
|
DynamicSet(NULL); // ustawia wszystkie mv*
|
||||||
iCabLightFlag = 0;
|
iCabLightFlag = 0;
|
||||||
// hunter-091012
|
// hunter-091012
|
||||||
@@ -546,6 +545,24 @@ bool TTrain::is_eztoer() const {
|
|||||||
&& ( mvControlled->ActiveDir != 0 ) ); // od yB
|
&& ( mvControlled->ActiveDir != 0 ) ); // od yB
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// moves train brake lever to specified position, potentially emits switch sound if conditions are met
|
||||||
|
void TTrain::set_train_brake( int const Position ) {
|
||||||
|
|
||||||
|
auto const originalbrakeposition { mvOccupied->BrakeCtrlPos };
|
||||||
|
|
||||||
|
mvOccupied->BrakeLevelSet( Position );
|
||||||
|
|
||||||
|
if( mvOccupied->BrakeCtrlPos == originalbrakeposition ) { return; }
|
||||||
|
|
||||||
|
if( ( true == is_eztoer() )
|
||||||
|
&& ( false == (
|
||||||
|
( ( originalbrakeposition == 0 ) || ( originalbrakeposition >= 5 ) )
|
||||||
|
&& ( ( mvOccupied->BrakeCtrlPos == 0 ) || ( mvOccupied->BrakeCtrlPos >= 5 ) ) ) ) ) {
|
||||||
|
// sound feedback if the lever movement activates one of the switches
|
||||||
|
dsbPneumaticSwitch.play();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// locates nearest vehicle belonging to the consist
|
// locates nearest vehicle belonging to the consist
|
||||||
TDynamicObject *
|
TDynamicObject *
|
||||||
TTrain::find_nearest_consist_vehicle() const {
|
TTrain::find_nearest_consist_vehicle() const {
|
||||||
@@ -795,14 +812,7 @@ void TTrain::OnCommand_trainbrakeincrease( TTrain *Train, command_data const &Co
|
|||||||
Train->mvOccupied->BrakeLevelAdd( 0.1 /*15.0 * Command.time_delta*/ );
|
Train->mvOccupied->BrakeLevelAdd( 0.1 /*15.0 * Command.time_delta*/ );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if( Train->mvOccupied->BrakeLevelAdd( Global::fBrakeStep ) ) {
|
Train->set_train_brake( Train->mvOccupied->BrakeCtrlPos + Global::fBrakeStep );
|
||||||
// nieodpowiedni warunek; true, jeśli można dalej kręcić
|
|
||||||
Train->keybrakecount = 0;
|
|
||||||
if( ( Train->is_eztoer() ) && ( Train->mvOccupied->BrakeCtrlPos < 3 ) ) {
|
|
||||||
// Ra: uzależnić dźwięk od zmiany stanu EP, nie od klawisza
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -815,21 +825,7 @@ void TTrain::OnCommand_trainbrakedecrease( TTrain *Train, command_data const &Co
|
|||||||
Train->mvOccupied->BrakeLevelAdd( -0.1 /*-15.0 * Command.time_delta*/ );
|
Train->mvOccupied->BrakeLevelAdd( -0.1 /*-15.0 * Command.time_delta*/ );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// nową wersję dostarczył ZiomalCl ("fixed looped sound in ezt when using NUM_9 key")
|
Train->set_train_brake( Train->mvOccupied->BrakeCtrlPos - Global::fBrakeStep );
|
||||||
if( ( Train->mvOccupied->BrakeCtrlPos > -1 )
|
|
||||||
|| ( Train->keybrakecount > 1 ) ) {
|
|
||||||
|
|
||||||
if( ( Train->is_eztoer() )
|
|
||||||
&& ( Train->mvControlled->Mains )
|
|
||||||
&& ( Train->mvOccupied->BrakeCtrlPos != -1 ) ) {
|
|
||||||
// Ra: uzależnić dźwięk od zmiany stanu EP, nie od klawisza
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
Train->mvOccupied->BrakeLevelAdd( -Global::fBrakeStep );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Train->keybrakecount += 1;
|
|
||||||
// koniec wersji dostarczonej przez ZiomalCl
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -837,16 +833,9 @@ void TTrain::OnCommand_trainbrakedecrease( TTrain *Train, command_data const &Co
|
|||||||
if( ( Train->mvOccupied->BrakeCtrlPos == -1 )
|
if( ( Train->mvOccupied->BrakeCtrlPos == -1 )
|
||||||
&& ( Train->mvOccupied->BrakeHandle == FVel6 )
|
&& ( Train->mvOccupied->BrakeHandle == FVel6 )
|
||||||
&& ( Train->DynamicObject->Controller != AIdriver )
|
&& ( Train->DynamicObject->Controller != AIdriver )
|
||||||
&& ( Global::iFeedbackMode != 4 )
|
&& ( Global::iFeedbackMode < 3 ) ) {
|
||||||
&& ( !( Global::bMWDmasterEnable && Global::bMWDBreakEnable ) ) ) {
|
|
||||||
// Odskakiwanie hamulce EP
|
// Odskakiwanie hamulce EP
|
||||||
Train->mvOccupied->BrakeLevelSet( Train->mvOccupied->BrakeCtrlPos + 1 );
|
Train->set_train_brake( 0 );
|
||||||
Train->keybrakecount = 0;
|
|
||||||
if( ( Train->mvOccupied->TrainType == dt_EZT )
|
|
||||||
&& ( Train->mvControlled->Mains )
|
|
||||||
&& ( Train->mvControlled->ActiveDir != 0 ) ) {
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -855,30 +844,16 @@ void TTrain::OnCommand_trainbrakecharging( TTrain *Train, command_data const &Co
|
|||||||
|
|
||||||
if( Command.action != GLFW_RELEASE ) {
|
if( Command.action != GLFW_RELEASE ) {
|
||||||
// press or hold
|
// press or hold
|
||||||
// sound feedback
|
Train->set_train_brake( -1 );
|
||||||
if( ( Train->is_eztoer() )
|
|
||||||
&& ( Train->mvControlled->Mains )
|
|
||||||
&& ( Train->mvOccupied->BrakeCtrlPos != -1 ) ) {
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
|
|
||||||
Train->mvOccupied->BrakeLevelSet( -1 );
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// release
|
// release
|
||||||
if( ( Train->mvOccupied->BrakeCtrlPos == -1 )
|
if( ( Train->mvOccupied->BrakeCtrlPos == -1 )
|
||||||
&& ( Train->mvOccupied->BrakeHandle == FVel6 )
|
&& ( Train->mvOccupied->BrakeHandle == FVel6 )
|
||||||
&& ( Train->DynamicObject->Controller != AIdriver )
|
&& ( Train->DynamicObject->Controller != AIdriver )
|
||||||
&& ( Global::iFeedbackMode != 4 )
|
&& ( Global::iFeedbackMode < 3 ) ) {
|
||||||
&& ( !( Global::bMWDmasterEnable && Global::bMWDBreakEnable ) ) ) {
|
|
||||||
// Odskakiwanie hamulce EP
|
// Odskakiwanie hamulce EP
|
||||||
Train->mvOccupied->BrakeLevelSet( Train->mvOccupied->BrakeCtrlPos + 1 );
|
Train->set_train_brake( 0 );
|
||||||
Train->keybrakecount = 0;
|
|
||||||
if( ( Train->mvOccupied->TrainType == dt_EZT )
|
|
||||||
&& ( Train->mvControlled->Mains )
|
|
||||||
&& ( Train->mvControlled->ActiveDir != 0 ) ) {
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -887,14 +862,7 @@ void TTrain::OnCommand_trainbrakerelease( TTrain *Train, command_data const &Com
|
|||||||
|
|
||||||
if( Command.action == GLFW_PRESS ) {
|
if( Command.action == GLFW_PRESS ) {
|
||||||
|
|
||||||
// sound feedback
|
Train->set_train_brake( 0 );
|
||||||
if( ( Train->is_eztoer() )
|
|
||||||
&& ( ( Train->mvOccupied->BrakeCtrlPos == 1 )
|
|
||||||
|| ( Train->mvOccupied->BrakeCtrlPos == -1 ) ) ) {
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
|
|
||||||
Train->mvOccupied->BrakeLevelSet( 0 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -902,14 +870,7 @@ void TTrain::OnCommand_trainbrakefirstservice( TTrain *Train, command_data const
|
|||||||
|
|
||||||
if( Command.action == GLFW_PRESS ) {
|
if( Command.action == GLFW_PRESS ) {
|
||||||
|
|
||||||
// sound feedback
|
Train->set_train_brake( 1 );
|
||||||
if( ( Train->is_eztoer() )
|
|
||||||
&& ( Train->mvControlled->Mains )
|
|
||||||
&& ( Train->mvOccupied->BrakeCtrlPos != 1 ) ) {
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
|
|
||||||
Train->mvOccupied->BrakeLevelSet( 1 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -917,19 +878,11 @@ void TTrain::OnCommand_trainbrakeservice( TTrain *Train, command_data const &Com
|
|||||||
|
|
||||||
if( Command.action == GLFW_PRESS ) {
|
if( Command.action == GLFW_PRESS ) {
|
||||||
|
|
||||||
// sound feedback
|
Train->set_train_brake( (
|
||||||
if( ( Train->is_eztoer() )
|
|
||||||
&& ( Train->mvControlled->Mains )
|
|
||||||
&& ( ( Train->mvOccupied->BrakeCtrlPos == 1 )
|
|
||||||
|| ( Train->mvOccupied->BrakeCtrlPos == -1 ) ) ) {
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
|
|
||||||
Train->mvOccupied->BrakeLevelSet(
|
|
||||||
Train->mvOccupied->BrakeCtrlPosNo / 2
|
Train->mvOccupied->BrakeCtrlPosNo / 2
|
||||||
+ ( Train->mvOccupied->BrakeHandle == FV4a ?
|
+ ( Train->mvOccupied->BrakeHandle == FV4a ?
|
||||||
1 :
|
1 :
|
||||||
0 ) );
|
0 ) ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -937,14 +890,7 @@ void TTrain::OnCommand_trainbrakefullservice( TTrain *Train, command_data const
|
|||||||
|
|
||||||
if( Command.action == GLFW_PRESS ) {
|
if( Command.action == GLFW_PRESS ) {
|
||||||
|
|
||||||
// sound feedback
|
Train->set_train_brake( Train->mvOccupied->BrakeCtrlPosNo - 1 );
|
||||||
if( ( Train->is_eztoer() )
|
|
||||||
&& ( Train->mvControlled->Mains )
|
|
||||||
&& ( ( Train->mvOccupied->BrakeCtrlPos == 1 )
|
|
||||||
|| ( Train->mvOccupied->BrakeCtrlPos == -1 ) ) ) {
|
|
||||||
Train->dsbPneumaticSwitch.play();
|
|
||||||
}
|
|
||||||
Train->mvOccupied->BrakeLevelSet( Train->mvOccupied->BrakeCtrlPosNo - 1 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -952,7 +898,7 @@ void TTrain::OnCommand_trainbrakehandleoff( TTrain *Train, command_data const &C
|
|||||||
|
|
||||||
if( Command.action == GLFW_PRESS ) {
|
if( Command.action == GLFW_PRESS ) {
|
||||||
|
|
||||||
Train->mvOccupied->BrakeLevelSet( Train->mvOccupied->Handle->GetPos( bh_NP ) );
|
Train->set_train_brake( Train->mvOccupied->Handle->GetPos( bh_NP ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -960,7 +906,7 @@ void TTrain::OnCommand_trainbrakeemergency( TTrain *Train, command_data const &C
|
|||||||
|
|
||||||
if( Command.action == GLFW_PRESS ) {
|
if( Command.action == GLFW_PRESS ) {
|
||||||
|
|
||||||
Train->mvOccupied->BrakeLevelSet( Train->mvOccupied->Handle->GetPos( bh_EB ) );
|
Train->set_train_brake( Train->mvOccupied->Handle->GetPos( bh_EB ) );
|
||||||
/*
|
/*
|
||||||
if( Train->mvOccupied->BrakeCtrlPosNo <= 0.1 ) {
|
if( Train->mvOccupied->BrakeCtrlPosNo <= 0.1 ) {
|
||||||
// hamulec bezpieczeństwa dla wagonów
|
// hamulec bezpieczeństwa dla wagonów
|
||||||
@@ -3988,6 +3934,9 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
btLampkaForward.Turn(mvControlled->ActiveDir > 0); // jazda do przodu
|
btLampkaForward.Turn(mvControlled->ActiveDir > 0); // jazda do przodu
|
||||||
btLampkaBackward.Turn(mvControlled->ActiveDir < 0); // jazda do tyłu
|
btLampkaBackward.Turn(mvControlled->ActiveDir < 0); // jazda do tyłu
|
||||||
btLampkaED.Turn(mvControlled->DynamicBrakeFlag); // hamulec ED
|
btLampkaED.Turn(mvControlled->DynamicBrakeFlag); // hamulec ED
|
||||||
|
btLampkaBrakeProfileG.Turn( TestFlag( mvOccupied->BrakeDelayFlag, bdelay_G ) );
|
||||||
|
btLampkaBrakeProfileP.Turn( TestFlag( mvOccupied->BrakeDelayFlag, bdelay_P ) );
|
||||||
|
btLampkaBrakeProfileR.Turn( TestFlag( mvOccupied->BrakeDelayFlag, bdelay_R ) );
|
||||||
// light indicators
|
// light indicators
|
||||||
// NOTE: sides are hardcoded to deal with setups where single cab is equipped with all indicators
|
// NOTE: sides are hardcoded to deal with setups where single cab is equipped with all indicators
|
||||||
btLampkaUpperLight.Turn( ( mvOccupied->iLights[ side::front ] & light::headlight_upper ) != 0 );
|
btLampkaUpperLight.Turn( ( mvOccupied->iLights[ side::front ] & light::headlight_upper ) != 0 );
|
||||||
@@ -4005,6 +3954,9 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
{ // gdy bateria wyłączona
|
{ // gdy bateria wyłączona
|
||||||
btLampkaHamienie.Turn( false );
|
btLampkaHamienie.Turn( false );
|
||||||
btLampkaBrakingOff.Turn( false );
|
btLampkaBrakingOff.Turn( false );
|
||||||
|
btLampkaBrakeProfileG.Turn( false );
|
||||||
|
btLampkaBrakeProfileP.Turn( false );
|
||||||
|
btLampkaBrakeProfileR.Turn( false );
|
||||||
btLampkaMaxSila.Turn( false );
|
btLampkaMaxSila.Turn( false );
|
||||||
btLampkaPrzekrMaxSila.Turn( false );
|
btLampkaPrzekrMaxSila.Turn( false );
|
||||||
btLampkaRadio.Turn( false );
|
btLampkaRadio.Turn( false );
|
||||||
@@ -5267,6 +5219,9 @@ void TTrain::clear_cab_controls()
|
|||||||
btLampkaRadiotelefon.Clear();
|
btLampkaRadiotelefon.Clear();
|
||||||
btLampkaHamienie.Clear();
|
btLampkaHamienie.Clear();
|
||||||
btLampkaBrakingOff.Clear();
|
btLampkaBrakingOff.Clear();
|
||||||
|
btLampkaBrakeProfileG.Clear();
|
||||||
|
btLampkaBrakeProfileP.Clear();
|
||||||
|
btLampkaBrakeProfileR.Clear();
|
||||||
btLampkaSprezarka.Clear();
|
btLampkaSprezarka.Clear();
|
||||||
btLampkaSprezarkaB.Clear();
|
btLampkaSprezarkaB.Clear();
|
||||||
btLampkaSprezarkaOff.Clear();
|
btLampkaSprezarkaOff.Clear();
|
||||||
@@ -5544,6 +5499,9 @@ bool TTrain::initialize_button(cParser &Parser, std::string const &Label, int co
|
|||||||
{ "i-braking:", btLampkaHamienie },
|
{ "i-braking:", btLampkaHamienie },
|
||||||
{ "i-brakingoff:", btLampkaBrakingOff },
|
{ "i-brakingoff:", btLampkaBrakingOff },
|
||||||
{ "i-dynamicbrake:", btLampkaED },
|
{ "i-dynamicbrake:", btLampkaED },
|
||||||
|
{ "i-brakeprofileg:", btLampkaBrakeProfileG },
|
||||||
|
{ "i-brakeprofilep:", btLampkaBrakeProfileP },
|
||||||
|
{ "i-brakeprofiler:", btLampkaBrakeProfileR },
|
||||||
{ "i-braking-ezt:", btLampkaHamowanie1zes },
|
{ "i-braking-ezt:", btLampkaHamowanie1zes },
|
||||||
{ "i-braking-ezt2:", btLampkaHamowanie2zes },
|
{ "i-braking-ezt2:", btLampkaHamowanie2zes },
|
||||||
{ "i-compressor:", btLampkaSprezarka },
|
{ "i-compressor:", btLampkaSprezarka },
|
||||||
|
|||||||
8
Train.h
8
Train.h
@@ -114,6 +114,9 @@ class TTrain
|
|||||||
bool is_eztoer() const;
|
bool is_eztoer() const;
|
||||||
// locates nearest vehicle belonging to the consist
|
// locates nearest vehicle belonging to the consist
|
||||||
TDynamicObject *find_nearest_consist_vehicle() const;
|
TDynamicObject *find_nearest_consist_vehicle() const;
|
||||||
|
// moves train brake lever to specified position, potentially emits switch sound if conditions are met
|
||||||
|
void set_train_brake( int const Position );
|
||||||
|
|
||||||
|
|
||||||
// command handlers
|
// command handlers
|
||||||
// NOTE: we're currently using universal handlers and static handler map but it may be beneficial to have these implemented on individual class instance basis
|
// NOTE: we're currently using universal handlers and static handler map but it may be beneficial to have these implemented on individual class instance basis
|
||||||
@@ -377,6 +380,10 @@ public: // reszta może by?publiczna
|
|||||||
TButton btLampkaHamienie;
|
TButton btLampkaHamienie;
|
||||||
TButton btLampkaBrakingOff;
|
TButton btLampkaBrakingOff;
|
||||||
TButton btLampkaED; // Stele 161228 hamowanie elektrodynamiczne
|
TButton btLampkaED; // Stele 161228 hamowanie elektrodynamiczne
|
||||||
|
TButton btLampkaBrakeProfileG; // cargo train brake acting speed
|
||||||
|
TButton btLampkaBrakeProfileP; // passenger train brake acting speed
|
||||||
|
TButton btLampkaBrakeProfileR; // rapid brake acting speed
|
||||||
|
|
||||||
// KURS90
|
// KURS90
|
||||||
TButton btLampkaBoczniki;
|
TButton btLampkaBoczniki;
|
||||||
TButton btLampkaMaxSila;
|
TButton btLampkaMaxSila;
|
||||||
@@ -468,7 +475,6 @@ private:
|
|||||||
|
|
||||||
double fPoslizgTimer;
|
double fPoslizgTimer;
|
||||||
TTrack *tor;
|
TTrack *tor;
|
||||||
int keybrakecount;
|
|
||||||
// McZapkie-240302 - przyda sie do tachometru
|
// McZapkie-240302 - przyda sie do tachometru
|
||||||
float fTachoVelocity{ 0.0f };
|
float fTachoVelocity{ 0.0f };
|
||||||
float fTachoVelocityJump{ 0.0f }; // ze skakaniem
|
float fTachoVelocityJump{ 0.0f }; // ze skakaniem
|
||||||
|
|||||||
Reference in New Issue
Block a user