16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-22 20:59:19 +02:00

cooling fan cab control, dedicated tempomat cab control, minor vehicle preparation ai logic tweaks, minor timetable ui panel tweaks

This commit is contained in:
tmj-fstate
2019-03-14 20:09:30 +01:00
parent b8ff8703c5
commit cf91f7e031
12 changed files with 108 additions and 17 deletions

View File

@@ -2521,6 +2521,10 @@ bool TController::PrepareEngine()
mvOccupied->MotorBlowersSwitch( true, end::front ); mvOccupied->MotorBlowersSwitch( true, end::front );
mvOccupied->MotorBlowersSwitchOff( false, end::rear ); mvOccupied->MotorBlowersSwitchOff( false, end::rear );
mvOccupied->MotorBlowersSwitch( true, end::rear ); mvOccupied->MotorBlowersSwitch( true, end::rear );
// enable train brake if it's off
if( mvOccupied->fBrakeCtrlPos == mvOccupied->Handle->GetPos( bh_NP ) ) {
mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_RP ) );
}
} }
} }
else else

View File

@@ -976,12 +976,13 @@ public:
double TUHEX_Sum2 = 750; /*nastawa2 sterownika hamowania ED*/ double TUHEX_Sum2 = 750; /*nastawa2 sterownika hamowania ED*/
double TUHEX_Sum3 = 750; /*nastawa3 sterownika hamowania ED*/ double TUHEX_Sum3 = 750; /*nastawa3 sterownika hamowania ED*/
int TUHEX_Stages = 0; /*liczba stopni hamowania ED*/ int TUHEX_Stages = 0; /*liczba stopni hamowania ED*/
// TODO: wrap resistor fans variables and state into a device
int RVentType = 0; /*0 - brak, 1 - jest, 2 - automatycznie wlaczany*/ int RVentType = 0; /*0 - brak, 1 - jest, 2 - automatycznie wlaczany*/
double RVentnmax = 1.0; /*maks. obroty wentylatorow oporow rozruchowych*/ double RVentnmax = 1.0; /*maks. obroty wentylatorow oporow rozruchowych*/
double RVentCutOff = 0.0; /*rezystancja wylaczania wentylatorow dla RVentType=2*/ double RVentCutOff = 0.0; /*rezystancja wylaczania wentylatorow dla RVentType=2*/
double RVentSpeed { 0.5 }; //rozpedzanie sie wentylatora obr/s^2} double RVentSpeed { 0.5 }; //rozpedzanie sie wentylatora obr/s^2}
double RVentMinI { 50.0 }; //przy jakim pradzie sie wylaczaja} double RVentMinI { 50.0 }; //przy jakim pradzie sie wylaczaja}
bool RVentForceOn { false }; // forced activation switch
int CompressorPower = 1; // 0: main circuit, 1: z przetwornicy, reczne, 2: w przetwornicy, stale, 3: diesel engine, 4: converter of unit in front, 5: converter of unit behind int CompressorPower = 1; // 0: main circuit, 1: z przetwornicy, reczne, 2: w przetwornicy, stale, 3: diesel engine, 4: converter of unit in front, 5: converter of unit behind
int SmallCompressorPower = 0; /*Winger ZROBIC*/ int SmallCompressorPower = 0; /*Winger ZROBIC*/
bool Trafo = false; /*pojazd wyposażony w transformator*/ bool Trafo = false; /*pojazd wyposażony w transformator*/

View File

@@ -4400,8 +4400,9 @@ double TMoverParameters::TractionForce( double dt ) {
switch( RVentType ) { switch( RVentType ) {
case 1: { // manual case 1: { // manual
if( ( ActiveDir != 0 ) if( ( true == RVentForceOn )
&& ( RList[ MainCtrlActualPos ].R > RVentCutOff ) ) { || ( ( ActiveDir != 0 )
&& ( RList[ MainCtrlActualPos ].R > RVentCutOff ) ) ) {
RventRot += ( RVentnmax - RventRot ) * RVentSpeed * dt; RventRot += ( RVentnmax - RventRot ) * RVentSpeed * dt;
} }
else { else {
@@ -4423,9 +4424,12 @@ double TMoverParameters::TractionForce( double dt ) {
* RVentSpeed * dt; * RVentSpeed * dt;
} }
else if( ( DynamicBrakeType == dbrake_automatic ) else if( ( DynamicBrakeType == dbrake_automatic )
&& ( true == DynamicBrakeFlag ) ) { && ( true == DynamicBrakeFlag ) ) {
RventRot += ( RVentnmax * motorcurrent / ImaxLo - RventRot ) * RVentSpeed * dt; RventRot += ( RVentnmax * motorcurrent / ImaxLo - RventRot ) * RVentSpeed * dt;
} }
else if( RVentForceOn ) {
RventRot += ( RVentnmax - RventRot ) * RVentSpeed * dt;
}
else { else {
RventRot *= std::max( 0.0, 1.0 - RVentSpeed * dt ); RventRot *= std::max( 0.0, 1.0 - RVentSpeed * dt );
} }

View File

@@ -170,6 +170,7 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
{ user_command::secondcontrollerdecreasefast, &TTrain::OnCommand_secondcontrollerdecreasefast }, { user_command::secondcontrollerdecreasefast, &TTrain::OnCommand_secondcontrollerdecreasefast },
{ user_command::secondcontrollerset, &TTrain::OnCommand_secondcontrollerset }, { user_command::secondcontrollerset, &TTrain::OnCommand_secondcontrollerset },
{ user_command::notchingrelaytoggle, &TTrain::OnCommand_notchingrelaytoggle }, { user_command::notchingrelaytoggle, &TTrain::OnCommand_notchingrelaytoggle },
{ user_command::tempomattoggle, &TTrain::OnCommand_tempomattoggle },
{ user_command::mucurrentindicatorothersourceactivate, &TTrain::OnCommand_mucurrentindicatorothersourceactivate }, { user_command::mucurrentindicatorothersourceactivate, &TTrain::OnCommand_mucurrentindicatorothersourceactivate },
{ user_command::independentbrakeincrease, &TTrain::OnCommand_independentbrakeincrease }, { user_command::independentbrakeincrease, &TTrain::OnCommand_independentbrakeincrease },
{ user_command::independentbrakeincreasefast, &TTrain::OnCommand_independentbrakeincreasefast }, { user_command::independentbrakeincreasefast, &TTrain::OnCommand_independentbrakeincreasefast },
@@ -262,6 +263,7 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
{ user_command::motorblowerstogglefront, &TTrain::OnCommand_motorblowerstogglefront }, { user_command::motorblowerstogglefront, &TTrain::OnCommand_motorblowerstogglefront },
{ user_command::motorblowerstogglerear, &TTrain::OnCommand_motorblowerstogglerear }, { user_command::motorblowerstogglerear, &TTrain::OnCommand_motorblowerstogglerear },
{ user_command::motorblowersdisableall, &TTrain::OnCommand_motorblowersdisableall }, { user_command::motorblowersdisableall, &TTrain::OnCommand_motorblowersdisableall },
{ user_command::coolingfanstoggle, &TTrain::OnCommand_coolingfanstoggle },
{ user_command::motorconnectorsopen, &TTrain::OnCommand_motorconnectorsopen }, { user_command::motorconnectorsopen, &TTrain::OnCommand_motorconnectorsopen },
{ user_command::motorconnectorsclose, &TTrain::OnCommand_motorconnectorsclose }, { user_command::motorconnectorsclose, &TTrain::OnCommand_motorconnectorsclose },
{ user_command::motordisconnect, &TTrain::OnCommand_motordisconnect }, { user_command::motordisconnect, &TTrain::OnCommand_motordisconnect },
@@ -931,6 +933,45 @@ void TTrain::OnCommand_notchingrelaytoggle( TTrain *Train, command_data const &C
} }
} }
void TTrain::OnCommand_tempomattoggle( TTrain *Train, command_data const &Command ) {
if( Command.action == GLFW_REPEAT ) { return; }
if( Train->ggScndCtrlButton.type() == TGaugeType::push ) {
// impulse switch
if( Command.action == GLFW_RELEASE ) {
// just move the button back to default position
// visual feedback
Train->ggScndCtrlButton.UpdateValue( 0.0, Train->dsbSwitch );
return;
}
// glfw_press
if( Train->mvControlled->ScndCtrlPos == 0 ) {
// turn on if needed
Train->mvControlled->IncScndCtrl( 1 );
}
// visual feedback
Train->ggScndCtrlButton.UpdateValue( 1.0, Train->dsbSwitch );
}
else {
// two-state switch
if( Command.action == GLFW_RELEASE ) { return; }
if( Train->mvControlled->ScndCtrlPos == 0 ) {
// turn on
Train->mvControlled->IncScndCtrl( 1 );
// visual feedback
Train->ggScndCtrlButton.UpdateValue( 1.0, Train->dsbSwitch );
}
else {
//turn off
Train->mvControlled->DecScndCtrl( 2 );
// visual feedback
Train->ggScndCtrlButton.UpdateValue( 0.0, Train->dsbSwitch );
}
}
}
void TTrain::OnCommand_mucurrentindicatorothersourceactivate( TTrain *Train, command_data const &Command ) { void TTrain::OnCommand_mucurrentindicatorothersourceactivate( TTrain *Train, command_data const &Command ) {
if( Train->ggNextCurrentButton.SubModel == nullptr ) { if( Train->ggNextCurrentButton.SubModel == nullptr ) {
@@ -3059,6 +3100,13 @@ void TTrain::OnCommand_motorblowersdisableall( TTrain *Train, command_data const
} }
} }
void TTrain::OnCommand_coolingfanstoggle( TTrain *Train, command_data const &Command ) {
if( Command.action != GLFW_PRESS ) { return; }
Train->mvControlled->RVentForceOn = ( !Train->mvControlled->RVentForceOn );
}
void TTrain::OnCommand_motorconnectorsopen( TTrain *Train, command_data const &Command ) { void TTrain::OnCommand_motorconnectorsopen( TTrain *Train, command_data const &Command ) {
// TODO: don't rely on presense of 3d model to determine presence of the switch // TODO: don't rely on presense of 3d model to determine presence of the switch
@@ -5189,10 +5237,10 @@ bool TTrain::Update( double const Deltatime )
fPress[i][0] = p->MoverParameters->BrakePress; fPress[i][0] = p->MoverParameters->BrakePress;
fPress[i][1] = p->MoverParameters->PipePress; fPress[i][1] = p->MoverParameters->PipePress;
fPress[i][2] = p->MoverParameters->ScndPipePress; fPress[i][2] = p->MoverParameters->ScndPipePress;
bDoors[i][1] = ( false == p->MoverParameters->Doors.instances[ side::left ].is_closed ); bDoors[i][1] = ( p->MoverParameters->Doors.instances[ side::left ].position > 0.f );
bDoors[i][2] = ( false == p->MoverParameters->Doors.instances[ side::right ].is_closed ); bDoors[i][2] = ( p->MoverParameters->Doors.instances[ side::right ].position > 0.f );
bDoors[i][3] = ( p->MoverParameters->Doors.instances[ side::left ].step_position > 0.0 ); bDoors[i][3] = ( p->MoverParameters->Doors.instances[ side::left ].step_position > 0.f );
bDoors[i][4] = ( p->MoverParameters->Doors.instances[ side::right ].step_position > 0.0 ); bDoors[i][4] = ( p->MoverParameters->Doors.instances[ side::right ].step_position > 0.f );
bDoors[i][0] = ( bDoors[i][1] || bDoors[i][2] ); bDoors[i][0] = ( bDoors[i][1] || bDoors[i][2] );
iDoorNo[i] = p->iAnimType[ANIM_DOORS]; iDoorNo[i] = p->iAnimType[ANIM_DOORS];
iUnits[i] = iUnitNo; iUnits[i] = iUnitNo;
@@ -5868,6 +5916,7 @@ bool TTrain::Update( double const Deltatime )
dsbNastawnikBocz ); dsbNastawnikBocz );
ggScndCtrl.Update(); ggScndCtrl.Update();
} }
ggScndCtrlButton.Update();
if (ggDirKey.SubModel) { if (ggDirKey.SubModel) {
if (mvControlled->TrainType != dt_EZT) if (mvControlled->TrainType != dt_EZT)
ggDirKey.UpdateValue( ggDirKey.UpdateValue(
@@ -7193,6 +7242,7 @@ void TTrain::clear_cab_controls()
ggMainCtrl.Clear(); ggMainCtrl.Clear();
ggMainCtrlAct.Clear(); ggMainCtrlAct.Clear();
ggScndCtrl.Clear(); ggScndCtrl.Clear();
ggScndCtrlButton.Clear();
ggDirKey.Clear(); ggDirKey.Clear();
ggBrakeCtrl.Clear(); ggBrakeCtrl.Clear();
ggLocalBrake.Clear(); ggLocalBrake.Clear();
@@ -7661,6 +7711,13 @@ void TTrain::set_cab_controls( int const Cab ) {
1.f : 1.f :
0.f ); 0.f );
} }
// tempomat
if( ggScndCtrlButton.type() != TGaugeType::push ) {
ggScndCtrlButton.PutValue(
( mvControlled->ScndCtrlPos > 0 ) ?
1.f :
0.f );
}
// we reset all indicators, as they're set during the update pass // we reset all indicators, as they're set during the update pass
// TODO: when cleaning up break setting indicator state into a separate function, so we can reuse it // TODO: when cleaning up break setting indicator state into a separate function, so we can reuse it
@@ -7919,6 +7976,7 @@ bool TTrain::initialize_gauge(cParser &Parser, std::string const &Label, int con
{ "cablight_sw:", ggCabLightButton }, { "cablight_sw:", ggCabLightButton },
{ "cablightdim_sw:", ggCabLightDimButton }, { "cablightdim_sw:", ggCabLightDimButton },
{ "battery_sw:", ggBatteryButton }, { "battery_sw:", ggBatteryButton },
{ "tempomat_sw:", ggScndCtrlButton },
{ "universal0:", ggUniversals[ 0 ] }, { "universal0:", ggUniversals[ 0 ] },
{ "universal1:", ggUniversals[ 1 ] }, { "universal1:", ggUniversals[ 1 ] },
{ "universal2:", ggUniversals[ 2 ] }, { "universal2:", ggUniversals[ 2 ] },
@@ -7940,7 +7998,8 @@ bool TTrain::initialize_gauge(cParser &Parser, std::string const &Label, int con
} }
// TODO: move viable dedicated gauges to the automatic array // TODO: move viable dedicated gauges to the automatic array
std::unordered_map<std::string, bool *> const autoboolgauges = { std::unordered_map<std::string, bool *> const autoboolgauges = {
{ "doorstep_sw:", &mvOccupied->Doors.step_enabled } { "doorstep_sw:", &mvOccupied->Doors.step_enabled },
{ "coolingfans_sw:", &mvControlled->RVentForceOn }
}; };
{ {
auto lookup = autoboolgauges.find( Label ); auto lookup = autoboolgauges.find( Label );

View File

@@ -169,6 +169,7 @@ class TTrain
static void OnCommand_secondcontrollerdecreasefast( TTrain *Train, command_data const &Command ); static void OnCommand_secondcontrollerdecreasefast( TTrain *Train, command_data const &Command );
static void OnCommand_secondcontrollerset( TTrain *Train, command_data const &Command ); static void OnCommand_secondcontrollerset( TTrain *Train, command_data const &Command );
static void OnCommand_notchingrelaytoggle( TTrain *Train, command_data const &Command ); static void OnCommand_notchingrelaytoggle( TTrain *Train, command_data const &Command );
static void OnCommand_tempomattoggle( TTrain *Train, command_data const &Command );
static void OnCommand_mucurrentindicatorothersourceactivate( TTrain *Train, command_data const &Command ); static void OnCommand_mucurrentindicatorothersourceactivate( TTrain *Train, command_data const &Command );
static void OnCommand_independentbrakeincrease( TTrain *Train, command_data const &Command ); static void OnCommand_independentbrakeincrease( TTrain *Train, command_data const &Command );
static void OnCommand_independentbrakeincreasefast( TTrain *Train, command_data const &Command ); static void OnCommand_independentbrakeincreasefast( TTrain *Train, command_data const &Command );
@@ -265,6 +266,7 @@ class TTrain
static void OnCommand_motorblowersenablerear( TTrain *Train, command_data const &Command ); static void OnCommand_motorblowersenablerear( TTrain *Train, command_data const &Command );
static void OnCommand_motorblowersdisablerear( TTrain *Train, command_data const &Command ); static void OnCommand_motorblowersdisablerear( TTrain *Train, command_data const &Command );
static void OnCommand_motorblowersdisableall( TTrain *Train, command_data const &Command ); static void OnCommand_motorblowersdisableall( TTrain *Train, command_data const &Command );
static void OnCommand_coolingfanstoggle( TTrain *Train, command_data const &Command );
static void OnCommand_motorconnectorsopen( TTrain *Train, command_data const &Command ); static void OnCommand_motorconnectorsopen( TTrain *Train, command_data const &Command );
static void OnCommand_motorconnectorsclose( TTrain *Train, command_data const &Command ); static void OnCommand_motorconnectorsclose( TTrain *Train, command_data const &Command );
static void OnCommand_motordisconnect( TTrain *Train, command_data const &Command ); static void OnCommand_motordisconnect( TTrain *Train, command_data const &Command );
@@ -379,7 +381,7 @@ public: // reszta może by?publiczna
TGauge ggMainCtrl; TGauge ggMainCtrl;
TGauge ggMainCtrlAct; TGauge ggMainCtrlAct;
TGauge ggScndCtrl; TGauge ggScndCtrl;
TGauge ggScndCtrlButton; // NOTE: not used? TGauge ggScndCtrlButton;
TGauge ggDirKey; TGauge ggDirKey;
TGauge ggBrakeCtrl; TGauge ggBrakeCtrl;
TGauge ggLocalBrake; TGauge ggLocalBrake;

View File

@@ -224,7 +224,9 @@ commanddescription_sequence Commands_descriptions = {
{ "batterydisable", command_target::vehicle }, { "batterydisable", command_target::vehicle },
{ "motorblowerstogglefront", command_target::vehicle }, { "motorblowerstogglefront", command_target::vehicle },
{ "motorblowerstogglerear", command_target::vehicle }, { "motorblowerstogglerear", command_target::vehicle },
{ "motorblowersdisableall", command_target::vehicle } { "motorblowersdisableall", command_target::vehicle },
{ "coolingfanstoggle", command_target::vehicle },
{ "tempomattoggle", command_target::vehicle }
}; };

View File

@@ -218,6 +218,8 @@ enum class user_command {
motorblowerstogglefront, motorblowerstogglefront,
motorblowerstogglerear, motorblowerstogglerear,
motorblowersdisableall, motorblowersdisableall,
coolingfanstoggle,
tempomattoggle,
none = -1 none = -1
}; };

View File

@@ -227,7 +227,8 @@ driverkeyboard_input::default_bindings() {
{ user_command::motorblowerstogglefront, GLFW_KEY_N | keymodifier::shift }, { user_command::motorblowerstogglefront, GLFW_KEY_N | keymodifier::shift },
{ user_command::motorblowerstogglerear, GLFW_KEY_M | keymodifier::shift }, { user_command::motorblowerstogglerear, GLFW_KEY_M | keymodifier::shift },
{ user_command::motorblowersdisableall, GLFW_KEY_M | keymodifier::control } { user_command::motorblowersdisableall, GLFW_KEY_M | keymodifier::control }
// coolingfanstoggle
// tempomattoggle
}; };
} }

View File

@@ -494,6 +494,9 @@ drivermouse_input::default_bindings() {
{ "shuntmodepower:", { { "shuntmodepower:", {
user_command::secondcontrollerincrease, user_command::secondcontrollerincrease,
user_command::secondcontrollerdecrease } }, user_command::secondcontrollerdecrease } },
{ "tempomat_sw:", {
user_command::tempomattoggle,
user_command::none } },
{ "dirkey:", { { "dirkey:", {
user_command::reverserincrease, user_command::reverserincrease,
user_command::reverserdecrease } }, user_command::reverserdecrease } },
@@ -552,6 +555,9 @@ drivermouse_input::default_bindings() {
{ "motorblowersalloff_sw:", { { "motorblowersalloff_sw:", {
user_command::motorblowersdisableall, user_command::motorblowersdisableall,
user_command::none } }, user_command::none } },
{ "coolingfans_sw:", {
user_command::coolingfanstoggle,
user_command::none } },
{ "main_off_bt:", { { "main_off_bt:", {
user_command::linebreakeropen, user_command::linebreakeropen,
user_command::none } }, user_command::none } },

View File

@@ -238,12 +238,14 @@ timetable_panel::update() {
{ // current time { // current time
std::snprintf( std::snprintf(
m_buffer.data(), m_buffer.size(), m_buffer.data(), m_buffer.size(),
locale::strings[ locale::string::driver_timetable_time ].c_str(), locale::strings[ locale::string::driver_timetable_header ].c_str(),
40, 40,
locale::strings[ locale::string::driver_timetable_name ].c_str(),
time.wHour, time.wHour,
time.wMinute, time.wMinute,
time.wSecond ); time.wSecond );
text_lines.emplace_back( m_buffer.data(), Global.UITextColor ); title = m_buffer.data();
} }
auto *vehicle { ( auto *vehicle { (

View File

@@ -56,8 +56,8 @@ init() {
"Drive according to signals and timetable", "Drive according to signals and timetable",
"Bank consist ahead", "Bank consist ahead",
"%-*.*s Time: %d:%02d:%02d", // HACK: some manual padding to account for longer 'time' equivalent in polish version
"Timetable", "Timetable",
"Time: %d:%02d:%02d",
"(no timetable)", "(no timetable)",
"Consist weight: %d t (specified) %d t (actual)\nConsist length: %d m", "Consist weight: %d t (specified) %d t (actual)\nConsist length: %d m",
@@ -84,6 +84,7 @@ init() {
"master controller", "master controller",
"second controller", "second controller",
"shunt mode power", "shunt mode power",
"tempomat",
"reverser", "reverser",
"train brake", "train brake",
"independent brake", "independent brake",
@@ -104,6 +105,7 @@ init() {
"motor blowers A", "motor blowers A",
"motor blowers B", "motor blowers B",
"all motor blowers", "all motor blowers",
"cooling fans",
"line breaker", "line breaker",
"line breaker", "line breaker",
"alerter", "alerter",
@@ -219,8 +221,8 @@ init() {
"Prowadzic sklad wedlug sygnalow i rozkladu", "Prowadzic sklad wedlug sygnalow i rozkladu",
"Popychac sklad z przodu", "Popychac sklad z przodu",
"%-*.*s Godzina: %d:%02d:%02d",
"Rozklad jazdy", "Rozklad jazdy",
"Godzina: %d:%02d:%02d",
"(brak rozkladu)", "(brak rozkladu)",
"Brutto: %d t (rozkladowe) %d t (rzeczywiste)\nDlugosc pociagu: %d m", "Brutto: %d t (rozkladowe) %d t (rzeczywiste)\nDlugosc pociagu: %d m",
@@ -247,6 +249,7 @@ init() {
"nastawnik jazdy", "nastawnik jazdy",
"nastawnik dodatkowy", "nastawnik dodatkowy",
"sterowanie analogowe", "sterowanie analogowe",
"tempomat",
"nastawnik kierunku", "nastawnik kierunku",
"hamulec zespolony", "hamulec zespolony",
"hamulec pomocniczy", "hamulec pomocniczy",
@@ -267,6 +270,7 @@ init() {
"wentylatory silnikow trakcyjnych A", "wentylatory silnikow trakcyjnych A",
"wentylatory silnikow trakcyjnych B", "wentylatory silnikow trakcyjnych B",
"wszystkie wentylatory silnikow trakcyjnych", "wszystkie wentylatory silnikow trakcyjnych",
"wentylatory oporow rozruchowych",
"wylacznik szybki", "wylacznik szybki",
"wylacznik szybki", "wylacznik szybki",
"czuwak", "czuwak",
@@ -363,6 +367,7 @@ init() {
"jointctrl:", "jointctrl:",
"scndctrl:", "scndctrl:",
"shuntmodepower:", "shuntmodepower:",
"tempomat_sw:",
"dirkey:", "dirkey:",
"brakectrl:", "brakectrl:",
"localbrake:", "localbrake:",
@@ -383,6 +388,7 @@ init() {
"motorblowersfront_sw:", "motorblowersfront_sw:",
"motorblowersrear_sw:", "motorblowersrear_sw:",
"motorblowersalloff_sw:", "motorblowersalloff_sw:",
"coolingfans_sw:",
"main_off_bt:", "main_off_bt:",
"main_on_bt:", "main_on_bt:",
"security_reset_bt:", "security_reset_bt:",

View File

@@ -46,7 +46,7 @@ enum string {
driver_scenario_bank, driver_scenario_bank,
driver_timetable_header, driver_timetable_header,
driver_timetable_time, driver_timetable_name,
driver_timetable_notimetable, driver_timetable_notimetable,
driver_timetable_consistdata, driver_timetable_consistdata,
@@ -73,6 +73,7 @@ enum string {
cab_jointctrl, cab_jointctrl,
cab_scndctrl, cab_scndctrl,
cab_shuntmodepower, cab_shuntmodepower,
cab_tempomat,
cab_dirkey, cab_dirkey,
cab_brakectrl, cab_brakectrl,
cab_localbrake, cab_localbrake,
@@ -93,6 +94,7 @@ enum string {
cab_motorblowersfront_sw, cab_motorblowersfront_sw,
cab_motorblowersrear_sw, cab_motorblowersrear_sw,
cab_motorblowersalloff_sw, cab_motorblowersalloff_sw,
cab_coolingfans_sw,
cab_main_off_bt, cab_main_off_bt,
cab_main_on_bt, cab_main_on_bt,
cab_security_reset_bt, cab_security_reset_bt,