mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-19 16:59:17 +02:00
build 170831. scan table fixes, emergency brake control, mouse support for manual brake
This commit is contained in:
97
Train.cpp
97
Train.cpp
@@ -217,6 +217,9 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
||||
{ user_command::trainbrakeservice, &TTrain::OnCommand_trainbrakeservice },
|
||||
{ user_command::trainbrakefullservice, &TTrain::OnCommand_trainbrakefullservice },
|
||||
{ user_command::trainbrakeemergency, &TTrain::OnCommand_trainbrakeemergency },
|
||||
{ user_command::manualbrakeincrease, &TTrain::OnCommand_manualbrakeincrease },
|
||||
{ user_command::manualbrakedecrease, &TTrain::OnCommand_manualbrakedecrease },
|
||||
{ user_command::alarmchaintoggle, &TTrain::OnCommand_alarmchaintoggle },
|
||||
{ user_command::wheelspinbrakeactivate, &TTrain::OnCommand_wheelspinbrakeactivate },
|
||||
{ user_command::sandboxactivate, &TTrain::OnCommand_sandboxactivate },
|
||||
{ user_command::epbrakecontroltoggle, &TTrain::OnCommand_epbrakecontroltoggle },
|
||||
@@ -836,7 +839,7 @@ void TTrain::OnCommand_trainbrakecharging( TTrain *Train, command_data const &Co
|
||||
|
||||
void TTrain::OnCommand_trainbrakerelease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
// sound feedback
|
||||
if( ( Train->is_eztoer() )
|
||||
@@ -851,7 +854,7 @@ void TTrain::OnCommand_trainbrakerelease( TTrain *Train, command_data const &Com
|
||||
|
||||
void TTrain::OnCommand_trainbrakefirstservice( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
// sound feedback
|
||||
if( ( Train->is_eztoer() )
|
||||
@@ -866,7 +869,7 @@ void TTrain::OnCommand_trainbrakefirstservice( TTrain *Train, command_data const
|
||||
|
||||
void TTrain::OnCommand_trainbrakeservice( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
// sound feedback
|
||||
if( ( Train->is_eztoer() )
|
||||
@@ -879,14 +882,14 @@ void TTrain::OnCommand_trainbrakeservice( TTrain *Train, command_data const &Com
|
||||
Train->mvOccupied->BrakeLevelSet(
|
||||
Train->mvOccupied->BrakeCtrlPosNo / 2
|
||||
+ ( Train->mvOccupied->BrakeHandle == FV4a ?
|
||||
1 :
|
||||
0 ) );
|
||||
1 :
|
||||
0 ) );
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_trainbrakefullservice( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
// sound feedback
|
||||
if( ( Train->is_eztoer() )
|
||||
@@ -901,13 +904,58 @@ void TTrain::OnCommand_trainbrakefullservice( TTrain *Train, command_data const
|
||||
|
||||
void TTrain::OnCommand_trainbrakeemergency( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
Train->mvOccupied->BrakeLevelSet( Train->mvOccupied->Handle->GetPos( bh_EB ) );
|
||||
/*
|
||||
if( Train->mvOccupied->BrakeCtrlPosNo <= 0.1 ) {
|
||||
// hamulec bezpieczeństwa dla wagonów
|
||||
Train->mvOccupied->RadioStopFlag = true;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_manualbrakeincrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
|
||||
if( ( Train->mvOccupied->LocalBrake == ManualBrake )
|
||||
|| ( Train->mvOccupied->MBrake == true ) ) {
|
||||
|
||||
Train->mvOccupied->IncManualBrakeLevel( 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_manualbrakedecrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
|
||||
if( ( Train->mvOccupied->LocalBrake == ManualBrake )
|
||||
|| ( Train->mvOccupied->MBrake == true ) ) {
|
||||
|
||||
Train->mvOccupied->DecManualBrakeLevel( 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_alarmchaintoggle( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
if( false == Train->mvOccupied->AlarmChainFlag ) {
|
||||
// pull
|
||||
Train->mvOccupied->AlarmChainSwitch( true );
|
||||
// visual feedback
|
||||
Train->ggAlarmChain.UpdateValue( 1.0 );
|
||||
}
|
||||
else {
|
||||
// release
|
||||
Train->mvOccupied->AlarmChainSwitch( false );
|
||||
// visual feedback
|
||||
Train->ggAlarmChain.UpdateValue( 0.0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2871,6 +2919,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
}
|
||||
else // McZapkie-240302 - klawisze bez shifta
|
||||
{
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
if( cKey == Global::Keys[ k_IncLocalBrakeLevel ] )
|
||||
{ // Ra 2014-09: w
|
||||
// trybie latania
|
||||
@@ -2883,10 +2932,8 @@ void TTrain::OnKeyDown(int cKey)
|
||||
{
|
||||
mvOccupied->IncManualBrakeLevel(1);
|
||||
}
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
else if (mvOccupied->LocalBrake != ManualBrake)
|
||||
mvOccupied->IncLocalBrakeLevel(1);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if (cKey == Global::Keys[k_DecLocalBrakeLevel])
|
||||
@@ -2899,16 +2946,15 @@ void TTrain::OnKeyDown(int cKey)
|
||||
if (Global::ctrlState)
|
||||
if ((mvOccupied->LocalBrake == ManualBrake) || (mvOccupied->MBrake == true))
|
||||
mvOccupied->DecManualBrakeLevel(1);
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
else // Ra 1014-06: AI potrafi zahamować pomocniczym mimo jego braku -
|
||||
// odhamować jakoś trzeba
|
||||
if ((mvOccupied->LocalBrake != ManualBrake) || mvOccupied->LocalBrakePos)
|
||||
mvOccupied->DecLocalBrakeLevel(1);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if (cKey == Global::Keys[k_Brake2])
|
||||
{
|
||||
else
|
||||
#endif
|
||||
if (cKey == Global::Keys[k_Brake2]) {
|
||||
if (Global::ctrlState)
|
||||
mvOccupied->BrakeLevelSet(
|
||||
mvOccupied->Handle->GetPos(bh_NP)); // yB: czy ten stos funkcji nie powinien być jako oddzielna funkcja movera?
|
||||
@@ -6414,6 +6460,7 @@ void TTrain::clear_cab_controls()
|
||||
ggBrakeCtrl.Clear();
|
||||
ggLocalBrake.Clear();
|
||||
ggManualBrake.Clear();
|
||||
ggAlarmChain.Clear();
|
||||
ggBrakeProfileCtrl.Clear();
|
||||
ggBrakeProfileG.Clear();
|
||||
ggBrakeProfileR.Clear();
|
||||
@@ -6541,8 +6588,8 @@ void TTrain::clear_cab_controls()
|
||||
ggRearUpperLightButton.Clear();
|
||||
ggRearLeftEndLightButton.Clear();
|
||||
ggRearRightEndLightButton.Clear();
|
||||
btHaslerBrakes.Clear(12); // ciśnienie w cylindrach do odbijania na haslerze
|
||||
btHaslerCurrent.Clear(13); // prąd na silnikach do odbijania na haslerze
|
||||
btHaslerBrakes.Clear(12); // ciśnienie w cylindrach do odbijania na haslerze
|
||||
btHaslerCurrent.Clear(13); // prąd na silnikach do odbijania na haslerze
|
||||
}
|
||||
|
||||
// NOTE: we can get rid of this function once we have per-cab persistent state
|
||||
@@ -6642,10 +6689,20 @@ void TTrain::set_cab_controls() {
|
||||
ggUpperLightButton.PutValue( 1.0 );
|
||||
}
|
||||
if( ( DynamicObject->iLights[ lightsindex ] & TMoverParameters::light::redmarker_left ) != 0 ) {
|
||||
ggLeftEndLightButton.PutValue( 1.0 );
|
||||
if( ggLeftEndLightButton.SubModel != nullptr ) {
|
||||
ggLeftEndLightButton.PutValue( 1.0 );
|
||||
}
|
||||
else {
|
||||
ggLeftLightButton.PutValue( -1.0 );
|
||||
}
|
||||
}
|
||||
if( ( DynamicObject->iLights[ lightsindex ] & TMoverParameters::light::redmarker_right ) != 0 ) {
|
||||
ggRightEndLightButton.PutValue( 1.0 );
|
||||
if( ggRightEndLightButton.SubModel != nullptr ) {
|
||||
ggRightEndLightButton.PutValue( 1.0 );
|
||||
}
|
||||
else {
|
||||
ggRightLightButton.PutValue( -1.0 );
|
||||
}
|
||||
}
|
||||
if( true == DynamicObject->DimHeadlights ) {
|
||||
ggDimHeadlightsButton.PutValue( 1.0 );
|
||||
@@ -6691,6 +6748,11 @@ void TTrain::set_cab_controls() {
|
||||
1.0 :
|
||||
0.0 );
|
||||
}
|
||||
// alarm chain
|
||||
ggAlarmChain.PutValue(
|
||||
mvControlled->AlarmChainFlag ?
|
||||
1.0 :
|
||||
0.0 );
|
||||
// brake signalling
|
||||
ggSignallingButton.PutValue(
|
||||
mvControlled->Signalling ?
|
||||
@@ -6959,6 +7021,7 @@ bool TTrain::initialize_gauge(cParser &Parser, std::string const &Label, int con
|
||||
{ "brakectrl:", ggBrakeCtrl },
|
||||
{ "localbrake:", ggLocalBrake },
|
||||
{ "manualbrake:", ggManualBrake },
|
||||
{ "alarmchain:", ggAlarmChain },
|
||||
{ "brakeprofile_sw:", ggBrakeProfileCtrl },
|
||||
{ "brakeprofileg_sw:", ggBrakeProfileG },
|
||||
{ "brakeprofiler_sw:", ggBrakeProfileR },
|
||||
|
||||
Reference in New Issue
Block a user