mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
conversion of remaining train controls to the new control system, fix for potentially incorrect rendering of flex track pieces
This commit is contained in:
14
Track.cpp
14
Track.cpp
@@ -487,8 +487,18 @@ void TTrack::Load(cParser *parser, vector3 pOrigin)
|
||||
}
|
||||
if( fRadius != 0 ) // gdy podany promień
|
||||
segsize = clamp( std::fabs( fRadius ) * ( 0.02 / Global::SplineFidelity ), 2.0 / Global::SplineFidelity, 10.0 );
|
||||
else
|
||||
segsize = 10.0; // for straights, 10m per segment works good enough
|
||||
else {
|
||||
// HACK: crude check whether claimed straight is an actual straight piece
|
||||
// NOTE: won't detect cases where control points are placed on the straight line formed by the ends, but, eh
|
||||
if( ( cp1 == Math3D::vector3() )
|
||||
&& ( cp1 == Math3D::vector3() ) ) {
|
||||
segsize = 10.0; // for straights, 10m per segment works good enough
|
||||
}
|
||||
else {
|
||||
// HACK: divide roughly in 10 segments.
|
||||
segsize = clamp( fTrackLength * ( 0.1 / Global::SplineFidelity ), 2.0 / Global::SplineFidelity, 10.0 );
|
||||
}
|
||||
}
|
||||
|
||||
if ((((p1 + p1 + p2) / 3.0 - p1 - cp1).Length() < 0.02) ||
|
||||
(((p1 + p2 + p2) / 3.0 - p2 + cp1).Length() < 0.02))
|
||||
|
||||
623
Train.cpp
623
Train.cpp
@@ -16,6 +16,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include "Train.h"
|
||||
|
||||
#include "Globals.h"
|
||||
#include "simulation.h"
|
||||
#include "Logs.h"
|
||||
#include "MdlMngr.h"
|
||||
#include "Timer.h"
|
||||
@@ -194,6 +195,8 @@ void TCab::Update()
|
||||
// TBD, TODO: consider this approach if we ever want to have customized consist behaviour to received commands, based on the consist/vehicle type or whatever
|
||||
TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
||||
|
||||
{ user_command::aidriverenable, &TTrain::OnCommand_aidriverenable },
|
||||
{ user_command::aidriverdisable, &TTrain::OnCommand_aidriverdisable },
|
||||
{ user_command::mastercontrollerincrease, &TTrain::OnCommand_mastercontrollerincrease },
|
||||
{ user_command::mastercontrollerincreasefast, &TTrain::OnCommand_mastercontrollerincreasefast },
|
||||
{ user_command::mastercontrollerdecrease, &TTrain::OnCommand_mastercontrollerdecrease },
|
||||
@@ -216,7 +219,12 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
||||
{ user_command::trainbrakefirstservice, &TTrain::OnCommand_trainbrakefirstservice },
|
||||
{ user_command::trainbrakeservice, &TTrain::OnCommand_trainbrakeservice },
|
||||
{ user_command::trainbrakefullservice, &TTrain::OnCommand_trainbrakefullservice },
|
||||
{ user_command::trainbrakehandleoff, &TTrain::OnCommand_trainbrakehandleoff },
|
||||
{ user_command::trainbrakeemergency, &TTrain::OnCommand_trainbrakeemergency },
|
||||
{ user_command::trainbrakebasepressureincrease, &TTrain::OnCommand_trainbrakebasepressureincrease },
|
||||
{ user_command::trainbrakebasepressuredecrease, &TTrain::OnCommand_trainbrakebasepressuredecrease },
|
||||
{ user_command::trainbrakebasepressurereset, &TTrain::OnCommand_trainbrakebasepressurereset },
|
||||
{ user_command::trainbrakeoperationtoggle, &TTrain::OnCommand_trainbrakeoperationtoggle },
|
||||
{ user_command::manualbrakeincrease, &TTrain::OnCommand_manualbrakeincrease },
|
||||
{ user_command::manualbrakedecrease, &TTrain::OnCommand_manualbrakedecrease },
|
||||
{ user_command::alarmchaintoggle, &TTrain::OnCommand_alarmchaintoggle },
|
||||
@@ -225,6 +233,8 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
||||
{ user_command::epbrakecontroltoggle, &TTrain::OnCommand_epbrakecontroltoggle },
|
||||
{ user_command::brakeactingspeedincrease, &TTrain::OnCommand_brakeactingspeedincrease },
|
||||
{ user_command::brakeactingspeeddecrease, &TTrain::OnCommand_brakeactingspeeddecrease },
|
||||
{ user_command::brakeloadcompensationincrease, &TTrain::OnCommand_brakeloadcompensationincrease },
|
||||
{ user_command::brakeloadcompensationdecrease, &TTrain::OnCommand_brakeloadcompensationdecrease },
|
||||
{ user_command::mubrakingindicatortoggle, &TTrain::OnCommand_mubrakingindicatortoggle },
|
||||
{ user_command::reverserincrease, &TTrain::OnCommand_reverserincrease },
|
||||
{ user_command::reverserdecrease, &TTrain::OnCommand_reverserdecrease },
|
||||
@@ -258,6 +268,8 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
||||
{ user_command::headlighttogglerearupper, &TTrain::OnCommand_headlighttogglerearupper },
|
||||
{ user_command::redmarkertogglerearleft, &TTrain::OnCommand_redmarkertogglerearleft },
|
||||
{ user_command::redmarkertogglerearright, &TTrain::OnCommand_redmarkertogglerearright },
|
||||
{ user_command::redmarkerstoggle, &TTrain::OnCommand_redmarkerstoggle },
|
||||
{ user_command::endsignalstoggle, &TTrain::OnCommand_endsignalstoggle },
|
||||
{ user_command::headlightsdimtoggle, &TTrain::OnCommand_headlightsdimtoggle },
|
||||
{ user_command::interiorlighttoggle, &TTrain::OnCommand_interiorlighttoggle },
|
||||
{ user_command::interiorlightdimtoggle, &TTrain::OnCommand_interiorlightdimtoggle },
|
||||
@@ -265,11 +277,17 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
||||
{ user_command::doorlocktoggle, &TTrain::OnCommand_doorlocktoggle },
|
||||
{ user_command::doortoggleleft, &TTrain::OnCommand_doortoggleleft },
|
||||
{ user_command::doortoggleright, &TTrain::OnCommand_doortoggleright },
|
||||
{ user_command::carcouplingincrease, &TTrain::OnCommand_carcouplingincrease },
|
||||
{ user_command::carcouplingdisconnect, &TTrain::OnCommand_carcouplingdisconnect },
|
||||
{ user_command::departureannounce, &TTrain::OnCommand_departureannounce },
|
||||
{ user_command::hornlowactivate, &TTrain::OnCommand_hornlowactivate },
|
||||
{ user_command::hornhighactivate, &TTrain::OnCommand_hornhighactivate },
|
||||
{ user_command::radiotoggle, &TTrain::OnCommand_radiotoggle },
|
||||
{ user_command::radiochannelincrease, &TTrain::OnCommand_radiochannelincrease },
|
||||
{ user_command::radiochanneldecrease, &TTrain::OnCommand_radiochanneldecrease },
|
||||
{ user_command::radiostoptest, &TTrain::OnCommand_radiostoptest },
|
||||
{ user_command::cabchangeforward, &TTrain::OnCommand_cabchangeforward },
|
||||
{ user_command::cabchangebackward, &TTrain::OnCommand_cabchangebackward },
|
||||
{ user_command::generictoggle0, &TTrain::OnCommand_generictoggle },
|
||||
{ user_command::generictoggle1, &TTrain::OnCommand_generictoggle },
|
||||
{ user_command::generictoggle2, &TTrain::OnCommand_generictoggle },
|
||||
@@ -528,7 +546,46 @@ bool TTrain::is_eztoer() const {
|
||||
&& ( mvControlled->ActiveDir != 0 ) ); // od yB
|
||||
}
|
||||
|
||||
// locates nearest vehicle belonging to the consist
|
||||
TDynamicObject *
|
||||
TTrain::find_nearest_consist_vehicle() const {
|
||||
|
||||
if( false == FreeFlyModeFlag ) {
|
||||
return DynamicObject;
|
||||
}
|
||||
auto coupler { -2 }; // scan for vehicle, not any specific coupler
|
||||
auto *vehicle{ DynamicObject->ABuScanNearestObject( DynamicObject->GetTrack(), 1, 1500, coupler ) };
|
||||
if( vehicle == nullptr )
|
||||
vehicle = DynamicObject->ABuScanNearestObject( DynamicObject->GetTrack(), -1, 1500, coupler );
|
||||
// TBD, TODO: perform owner test for the located vehicle
|
||||
return vehicle;
|
||||
}
|
||||
|
||||
|
||||
// command handlers
|
||||
void TTrain::OnCommand_aidriverenable( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
// on press
|
||||
if( Train->DynamicObject->Mechanik == nullptr ) { return; }
|
||||
|
||||
if( true == Train->DynamicObject->Mechanik->AIControllFlag ) {
|
||||
//żeby nie trzeba było rozłączać dla zresetowania
|
||||
Train->DynamicObject->Mechanik->TakeControl( false );
|
||||
}
|
||||
Train->DynamicObject->Mechanik->TakeControl( true );
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_aidriverdisable( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
// on press
|
||||
if( Train->DynamicObject->Mechanik )
|
||||
Train->DynamicObject->Mechanik->TakeControl( false );
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_mastercontrollerincrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
@@ -690,25 +747,42 @@ void TTrain::OnCommand_independentbrakedecreasefast( TTrain *Train, command_data
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_independentbrakebailoff( TTrain *Train, command_data const &Command ) {
|
||||
// TODO: check if this set of conditions can be simplified.
|
||||
// it'd be more flexible to have an attribute indicating whether bail off position is supported
|
||||
if( ( Train->mvControlled->TrainType != dt_EZT )
|
||||
&& ( ( Train->mvControlled->EngineType == ElectricSeriesMotor )
|
||||
|| ( Train->mvControlled->EngineType == DieselElectric )
|
||||
|| ( Train->mvControlled->EngineType == ElectricInductionMotor ) )
|
||||
&& ( Train->mvOccupied->BrakeCtrlPosNo > 0 ) ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
// press or hold
|
||||
Train->mvOccupied->BrakeReleaser( 1 );
|
||||
// visual feedback
|
||||
Train->ggReleaserButton.UpdateValue( 1.0, Train->dsbSwitch );
|
||||
if( false == FreeFlyModeFlag ) {
|
||||
// TODO: check if this set of conditions can be simplified.
|
||||
// it'd be more flexible to have an attribute indicating whether bail off position is supported
|
||||
if( ( Train->mvControlled->TrainType != dt_EZT )
|
||||
&& ( ( Train->mvControlled->EngineType == ElectricSeriesMotor )
|
||||
|| ( Train->mvControlled->EngineType == DieselElectric )
|
||||
|| ( Train->mvControlled->EngineType == ElectricInductionMotor ) )
|
||||
&& ( Train->mvOccupied->BrakeCtrlPosNo > 0 ) ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
// press or hold
|
||||
Train->mvOccupied->BrakeReleaser( 1 );
|
||||
// visual feedback
|
||||
Train->ggReleaserButton.UpdateValue( 1.0, Train->dsbSwitch );
|
||||
}
|
||||
else {
|
||||
// release
|
||||
Train->mvOccupied->BrakeReleaser( 0 );
|
||||
// visual feedback
|
||||
Train->ggReleaserButton.UpdateValue( 0.0, Train->dsbSwitch );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// release
|
||||
Train->mvOccupied->BrakeReleaser( 0 );
|
||||
// visual feedback
|
||||
Train->ggReleaserButton.UpdateValue( 0.0, Train->dsbSwitch );
|
||||
}
|
||||
else {
|
||||
// car brake handling, while in walk mode
|
||||
auto *vehicle { Train->find_nearest_consist_vehicle() };
|
||||
if( vehicle != nullptr ) {
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
// press or hold
|
||||
vehicle->MoverParameters->BrakeReleaser( 1 );
|
||||
}
|
||||
else {
|
||||
// release
|
||||
vehicle->MoverParameters->BrakeReleaser( 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -874,6 +948,14 @@ void TTrain::OnCommand_trainbrakefullservice( TTrain *Train, command_data const
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_trainbrakehandleoff( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
Train->mvOccupied->BrakeLevelSet( Train->mvOccupied->Handle->GetPos( bh_NP ) );
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_trainbrakeemergency( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
@@ -888,14 +970,70 @@ void TTrain::OnCommand_trainbrakeemergency( TTrain *Train, command_data const &C
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_trainbrakebasepressureincrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
|
||||
switch( Train->mvOccupied->BrakeHandle ) {
|
||||
case FV4a: {
|
||||
Train->mvOccupied->BrakeCtrlPos2 = clamp( Train->mvOccupied->BrakeCtrlPos2 - 0.01, -1.5, 2.0 );
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
Train->mvOccupied->BrakeLevelAdd( 0.01 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_trainbrakebasepressuredecrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
|
||||
switch( Train->mvOccupied->BrakeHandle ) {
|
||||
case FV4a: {
|
||||
Train->mvOccupied->BrakeCtrlPos2 = clamp( Train->mvOccupied->BrakeCtrlPos2 + 0.01, -1.5, 2.0 );
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
Train->mvOccupied->BrakeLevelAdd( -0.01 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_trainbrakebasepressurereset( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
Train->mvOccupied->BrakeCtrlPos2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_trainbrakeoperationtoggle( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
|
||||
auto *vehicle { Train->find_nearest_consist_vehicle() };
|
||||
if( vehicle == nullptr ) { return; }
|
||||
|
||||
vehicle->MoverParameters->Hamulec->SetBrakeStatus( vehicle->MoverParameters->Hamulec->GetBrakeStatus() ^ b_dmg );
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_manualbrakeincrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
|
||||
if( ( Train->mvOccupied->LocalBrake == ManualBrake )
|
||||
|| ( Train->mvOccupied->MBrake == true ) ) {
|
||||
auto *vehicle { Train->find_nearest_consist_vehicle() };
|
||||
if( vehicle == nullptr ) { return; }
|
||||
|
||||
Train->mvOccupied->IncManualBrakeLevel( 1 );
|
||||
if( ( vehicle->MoverParameters->LocalBrake == ManualBrake )
|
||||
|| ( vehicle->MoverParameters->MBrake == true ) ) {
|
||||
|
||||
vehicle->MoverParameters->IncManualBrakeLevel( 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -904,10 +1042,13 @@ void TTrain::OnCommand_manualbrakedecrease( TTrain *Train, command_data const &C
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
|
||||
if( ( Train->mvOccupied->LocalBrake == ManualBrake )
|
||||
|| ( Train->mvOccupied->MBrake == true ) ) {
|
||||
auto *vehicle { Train->find_nearest_consist_vehicle() };
|
||||
if( vehicle == nullptr ) { return; }
|
||||
|
||||
Train->mvOccupied->DecManualBrakeLevel( 1 );
|
||||
if( ( vehicle->MoverParameters->LocalBrake == ManualBrake )
|
||||
|| ( vehicle->MoverParameters->MBrake == true ) ) {
|
||||
|
||||
vehicle->MoverParameters->DecManualBrakeLevel( 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -940,26 +1081,38 @@ void TTrain::OnCommand_wheelspinbrakeactivate( TTrain *Train, command_data const
|
||||
}
|
||||
return;
|
||||
}
|
||||
if( Train->mvOccupied->BrakeSystem == ElectroPneumatic ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
// press or hold
|
||||
Train->mvControlled->AntiSlippingBrake();
|
||||
// visual feedback
|
||||
Train->ggAntiSlipButton.UpdateValue( 1.0, Train->dsbSwitch );
|
||||
if( Train->mvOccupied->BrakeSystem != ElectroPneumatic ) {
|
||||
// standard behaviour
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
// press or hold
|
||||
Train->mvControlled->AntiSlippingBrake();
|
||||
// visual feedback
|
||||
Train->ggAntiSlipButton.UpdateValue( 1.0, Train->dsbSwitch );
|
||||
}
|
||||
else {
|
||||
// release
|
||||
// visual feedback
|
||||
Train->ggAntiSlipButton.UpdateValue( 0.0 );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// release
|
||||
/*
|
||||
// audio feedback
|
||||
if( Train->ggAntiSlipButton.GetValue() > 0.5 ) {
|
||||
Train->play_sound( Train->dsbSwitch );
|
||||
// electro-pneumatic, custom case
|
||||
if( Command.action != GLFW_RELEASE ) {
|
||||
// press or hold
|
||||
if( ( Train->mvOccupied->BrakeHandle == St113 )
|
||||
&& ( Train->mvControlled->EpFuse == true ) ) {
|
||||
Train->mvOccupied->SwitchEPBrake( 1 );
|
||||
}
|
||||
// visual feedback
|
||||
Train->ggAntiSlipButton.UpdateValue( 1.0, Train->dsbPneumaticSwitch );
|
||||
}
|
||||
else {
|
||||
// release
|
||||
Train->mvOccupied->SwitchEPBrake( 0 );
|
||||
// visual feedback
|
||||
Train->ggAntiSlipButton.UpdateValue( 0.0 );
|
||||
}
|
||||
*/
|
||||
// visual feedback
|
||||
Train->ggAntiSlipButton.UpdateValue( 0.0 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1023,36 +1176,45 @@ void TTrain::OnCommand_epbrakecontroltoggle( TTrain *Train, command_data const &
|
||||
void TTrain::OnCommand_brakeactingspeedincrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
if( ( Train->mvOccupied->BrakeDelayFlag & bdelay_M ) != 0 ) {
|
||||
|
||||
auto *vehicle { Train->find_nearest_consist_vehicle() };
|
||||
if( vehicle == nullptr ) { return; }
|
||||
|
||||
if( ( vehicle->MoverParameters->BrakeDelayFlag & bdelay_M ) != 0 ) {
|
||||
// can't speed it up any more than this
|
||||
return;
|
||||
}
|
||||
auto const fasterbrakesetting = (
|
||||
Train->mvOccupied->BrakeDelayFlag < bdelay_R ?
|
||||
Train->mvOccupied->BrakeDelayFlag << 1 :
|
||||
Train->mvOccupied->BrakeDelayFlag | bdelay_M );
|
||||
if( true == Train->mvOccupied->BrakeDelaySwitch( fasterbrakesetting ) ) {
|
||||
// visual feedback
|
||||
if( Train->ggBrakeProfileCtrl.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileCtrl.UpdateValue(
|
||||
( ( Train->mvOccupied->BrakeDelayFlag & bdelay_R ) != 0 ?
|
||||
2.0 :
|
||||
Train->mvOccupied->BrakeDelayFlag - 1 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
if( Train->ggBrakeProfileG.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileG.UpdateValue(
|
||||
( Train->mvOccupied->BrakeDelayFlag == bdelay_G ?
|
||||
1.0 :
|
||||
0.0 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
if( Train->ggBrakeProfileR.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileR.UpdateValue(
|
||||
( ( Train->mvOccupied->BrakeDelayFlag & bdelay_R ) != 0 ?
|
||||
1.0 :
|
||||
0.0 ),
|
||||
Train->dsbSwitch );
|
||||
vehicle->MoverParameters->BrakeDelayFlag < bdelay_R ?
|
||||
vehicle->MoverParameters->BrakeDelayFlag << 1 :
|
||||
vehicle->MoverParameters->BrakeDelayFlag | bdelay_M );
|
||||
|
||||
if( true == vehicle->MoverParameters->BrakeDelaySwitch( fasterbrakesetting ) ) {
|
||||
|
||||
if( vehicle == Train->DynamicObject ) {
|
||||
// visual feedback
|
||||
// TODO: add setting indicator to vehicle
|
||||
if( Train->ggBrakeProfileCtrl.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileCtrl.UpdateValue(
|
||||
( ( Train->mvOccupied->BrakeDelayFlag & bdelay_R ) != 0 ?
|
||||
2.0 :
|
||||
Train->mvOccupied->BrakeDelayFlag - 1 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
if( Train->ggBrakeProfileG.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileG.UpdateValue(
|
||||
( Train->mvOccupied->BrakeDelayFlag == bdelay_G ?
|
||||
1.0 :
|
||||
0.0 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
if( Train->ggBrakeProfileR.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileR.UpdateValue(
|
||||
( ( Train->mvOccupied->BrakeDelayFlag & bdelay_R ) != 0 ?
|
||||
1.0 :
|
||||
0.0 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1061,41 +1223,72 @@ void TTrain::OnCommand_brakeactingspeedincrease( TTrain *Train, command_data con
|
||||
void TTrain::OnCommand_brakeactingspeeddecrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
if( Train->mvOccupied->BrakeDelayFlag == bdelay_G ) {
|
||||
|
||||
auto *vehicle { Train->find_nearest_consist_vehicle() };
|
||||
if( vehicle == nullptr ) { return; }
|
||||
|
||||
if( vehicle->MoverParameters->BrakeDelayFlag == bdelay_G ) {
|
||||
// can't slow it down any more than this
|
||||
return;
|
||||
}
|
||||
auto const slowerbrakesetting = (
|
||||
Train->mvOccupied->BrakeDelayFlag < bdelay_M ?
|
||||
Train->mvOccupied->BrakeDelayFlag >> 1 :
|
||||
Train->mvOccupied->BrakeDelayFlag ^ bdelay_M );
|
||||
if( true == Train->mvOccupied->BrakeDelaySwitch( slowerbrakesetting ) ) {
|
||||
// visual feedback
|
||||
if( Train->ggBrakeProfileCtrl.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileCtrl.UpdateValue(
|
||||
( ( Train->mvOccupied->BrakeDelayFlag & bdelay_R ) != 0 ?
|
||||
2.0 :
|
||||
Train->mvOccupied->BrakeDelayFlag - 1 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
if( Train->ggBrakeProfileG.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileG.UpdateValue(
|
||||
( Train->mvOccupied->BrakeDelayFlag == bdelay_G ?
|
||||
1.0 :
|
||||
0.0 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
if( Train->ggBrakeProfileR.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileR.UpdateValue(
|
||||
( ( Train->mvOccupied->BrakeDelayFlag & bdelay_R ) != 0 ?
|
||||
1.0 :
|
||||
0.0 ),
|
||||
Train->dsbSwitch );
|
||||
vehicle->MoverParameters->BrakeDelayFlag < bdelay_M ?
|
||||
vehicle->MoverParameters->BrakeDelayFlag >> 1 :
|
||||
vehicle->MoverParameters->BrakeDelayFlag ^ bdelay_M );
|
||||
|
||||
if( true == vehicle->MoverParameters->BrakeDelaySwitch( slowerbrakesetting ) ) {
|
||||
|
||||
if( vehicle == Train->DynamicObject ) {
|
||||
// visual feedback
|
||||
// TODO: add setting indicator to vehicle
|
||||
if( Train->ggBrakeProfileCtrl.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileCtrl.UpdateValue(
|
||||
( ( Train->mvOccupied->BrakeDelayFlag & bdelay_R ) != 0 ?
|
||||
2.0 :
|
||||
Train->mvOccupied->BrakeDelayFlag - 1 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
if( Train->ggBrakeProfileG.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileG.UpdateValue(
|
||||
( Train->mvOccupied->BrakeDelayFlag == bdelay_G ?
|
||||
1.0 :
|
||||
0.0 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
if( Train->ggBrakeProfileR.SubModel != nullptr ) {
|
||||
Train->ggBrakeProfileR.UpdateValue(
|
||||
( ( Train->mvOccupied->BrakeDelayFlag & bdelay_R ) != 0 ?
|
||||
1.0 :
|
||||
0.0 ),
|
||||
Train->dsbSwitch );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_brakeloadcompensationincrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( ( true == FreeFlyModeFlag )
|
||||
&& ( Command.action == GLFW_PRESS ) ) {
|
||||
auto *vehicle { Train->find_nearest_consist_vehicle() };
|
||||
if( vehicle != nullptr ) {
|
||||
vehicle->MoverParameters->IncBrakeMult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_brakeloadcompensationdecrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( ( true == FreeFlyModeFlag )
|
||||
&& ( Command.action == GLFW_PRESS ) ) {
|
||||
auto *vehicle { Train->find_nearest_consist_vehicle() };
|
||||
if( vehicle != nullptr ) {
|
||||
vehicle->MoverParameters->DecBrakeMult();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_mubrakingindicatortoggle( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Train->ggSignallingButton.SubModel == nullptr ) {
|
||||
@@ -2442,6 +2635,58 @@ void TTrain::OnCommand_redmarkertogglerearright( TTrain *Train, command_data con
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_redmarkerstoggle( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( ( true == FreeFlyModeFlag )
|
||||
&& ( Command.action == GLFW_PRESS ) ) {
|
||||
|
||||
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 10, false, true ) ) };
|
||||
|
||||
if( vehicle == nullptr ) { return; }
|
||||
|
||||
int const CouplNr {
|
||||
clamp(
|
||||
vehicle->DirectionGet()
|
||||
* ( LengthSquared3( vehicle->HeadPosition() - Global::pCameraPosition ) > LengthSquared3( vehicle->RearPosition() - Global::pCameraPosition ) ?
|
||||
1 :
|
||||
-1 ),
|
||||
0, 1 ) }; // z [-1,1] zrobić [0,1]
|
||||
|
||||
auto const lightset { light::redmarker_left | light::redmarker_right };
|
||||
|
||||
vehicle->iLights[ CouplNr ] = (
|
||||
false == TestFlag( vehicle->iLights[ CouplNr ], lightset ) ?
|
||||
vehicle->iLights[ CouplNr ] |= lightset : // turn signals on
|
||||
vehicle->iLights[ CouplNr ] ^= lightset ); // turn signals off
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_endsignalstoggle( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( ( true == FreeFlyModeFlag )
|
||||
&& ( Command.action == GLFW_PRESS ) ) {
|
||||
|
||||
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 10, false, true ) ) };
|
||||
|
||||
if( vehicle == nullptr ) { return; }
|
||||
|
||||
int const CouplNr {
|
||||
clamp(
|
||||
vehicle->DirectionGet()
|
||||
* ( LengthSquared3( vehicle->HeadPosition() - Global::pCameraPosition ) > LengthSquared3( vehicle->RearPosition() - Global::pCameraPosition ) ?
|
||||
1 :
|
||||
-1 ),
|
||||
0, 1 ) }; // z [-1,1] zrobić [0,1]
|
||||
|
||||
auto const lightset { light::rearendsignals };
|
||||
|
||||
vehicle->iLights[ CouplNr ] = (
|
||||
false == TestFlag( vehicle->iLights[ CouplNr ], lightset ) ?
|
||||
vehicle->iLights[ CouplNr ] |= lightset : // turn signals on
|
||||
vehicle->iLights[ CouplNr ] ^= lightset ); // turn signals off
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_headlightsdimtoggle( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
// NOTE: the check is disabled, as we're presuming light control is present in every vehicle
|
||||
@@ -2721,6 +2966,48 @@ void TTrain::OnCommand_doortoggleright( TTrain *Train, command_data const &Comma
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_carcouplingincrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( true == FreeFlyModeFlag ) {
|
||||
// tryb freefly
|
||||
auto coupler { -1 };
|
||||
auto *vehicle { Train->DynamicObject->ABuScanNearestObject( Train->DynamicObject->GetTrack(), 1, 1500, coupler ) };
|
||||
if( vehicle == nullptr )
|
||||
vehicle = Train->DynamicObject->ABuScanNearestObject( Train->DynamicObject->GetTrack(), -1, 1500, coupler );
|
||||
|
||||
if( ( coupler != -1 )
|
||||
&& ( vehicle != nullptr ) ) {
|
||||
|
||||
vehicle->couple( coupler );
|
||||
}
|
||||
if( Train->DynamicObject->Mechanik ) {
|
||||
// aktualizacja flag kierunku w składzie
|
||||
Train->DynamicObject->Mechanik->CheckVehicles( Connect );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_carcouplingdisconnect( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( true == FreeFlyModeFlag ) {
|
||||
// tryb freefly
|
||||
auto coupler { -1 };
|
||||
auto *vehicle { Train->DynamicObject->ABuScanNearestObject( Train->DynamicObject->GetTrack(), 1, 1500, coupler ) };
|
||||
if( vehicle == nullptr )
|
||||
vehicle = Train->DynamicObject->ABuScanNearestObject( Train->DynamicObject->GetTrack(), -1, 1500, coupler );
|
||||
|
||||
if( ( coupler != -1 )
|
||||
&& ( vehicle != nullptr ) ) {
|
||||
|
||||
vehicle->uncouple( coupler );
|
||||
}
|
||||
if( Train->DynamicObject->Mechanik ) {
|
||||
// aktualizacja flag kierunku w składzie
|
||||
Train->DynamicObject->Mechanik->CheckVehicles( Disconnect );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_departureannounce( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Train->ggDepartureSignalButton.SubModel == nullptr ) {
|
||||
@@ -2854,6 +3141,21 @@ void TTrain::OnCommand_radiotoggle( TTrain *Train, command_data const &Command )
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_radiochannelincrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
Train->iRadioChannel = clamp( Train->iRadioChannel + 1, 1, 10 );
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_radiochanneldecrease( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
Train->iRadioChannel = clamp( Train->iRadioChannel - 1, 1, 10 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void TTrain::OnCommand_radiostoptest( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
@@ -2861,6 +3163,38 @@ void TTrain::OnCommand_radiostoptest( TTrain *Train, command_data const &Command
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_cabchangeforward( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
if( false == Train->CabChange( 1 ) ) {
|
||||
if( TestFlag( Train->DynamicObject->MoverParameters->Couplers[ side::front ].CouplingFlag, coupling::gangway ) ) {
|
||||
// przejscie do nastepnego pojazdu
|
||||
Global::changeDynObj = Train->DynamicObject->PrevConnected;
|
||||
Global::changeDynObj->MoverParameters->ActiveCab = (
|
||||
Train->DynamicObject->PrevConnectedNo ?
|
||||
-1 :
|
||||
1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnCommand_cabchangebackward( TTrain *Train, command_data const &Command ) {
|
||||
|
||||
if( Command.action == GLFW_PRESS ) {
|
||||
if( false == Train->CabChange( -1 ) ) {
|
||||
if( TestFlag( Train->DynamicObject->MoverParameters->Couplers[ side::rear ].CouplingFlag, coupling::gangway ) ) {
|
||||
// przejscie do nastepnego pojazdu
|
||||
Global::changeDynObj = Train->DynamicObject->NextConnected;
|
||||
Global::changeDynObj->MoverParameters->ActiveCab = (
|
||||
Train->DynamicObject->NextConnectedNo ?
|
||||
-1 :
|
||||
1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TTrain::OnKeyDown(int cKey)
|
||||
{ // naciśnięcie klawisza
|
||||
bool const isEztOer =
|
||||
@@ -2870,32 +3204,15 @@ void TTrain::OnKeyDown(int cKey)
|
||||
&& ( mvOccupied->BrakeSubsystem == ss_ESt )
|
||||
&& ( mvControlled->ActiveDir != 0 ) ); // od yB
|
||||
|
||||
if (Global::shiftState)
|
||||
if ( false == Global::shiftState)
|
||||
{ // wciśnięty [Shift]
|
||||
if( cKey == Global::Keys[ k_BrakeProfile ] ) // McZapkie-240302-B:
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
if( cKey == Global::Keys[ k_BrakeProfile ] ) // McZapkie-240302-B:
|
||||
//-----------
|
||||
|
||||
// przelacznik opoznienia
|
||||
// hamowania
|
||||
// przelacznik opoznienia hamowania
|
||||
{ // yB://ABu: male poprawki, zeby bylo mozna ustawic dowolny wagon
|
||||
int CouplNr = -2;
|
||||
if( !FreeFlyModeFlag )
|
||||
{
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
if( Global::ctrlState )
|
||||
if (mvOccupied->BrakeDelaySwitch(bdelay_R + bdelay_M))
|
||||
{
|
||||
play_sound( dsbPneumaticRelay );
|
||||
}
|
||||
else
|
||||
;
|
||||
else if (mvOccupied->BrakeDelaySwitch(bdelay_P))
|
||||
{
|
||||
play_sound( dsbPneumaticRelay );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
if( true == FreeFlyModeFlag )
|
||||
{
|
||||
TDynamicObject *temp;
|
||||
temp = (DynamicObject->ABuScanNearestObject(DynamicObject->GetTrack(), -1, 1500, CouplNr));
|
||||
@@ -2917,43 +3234,20 @@ void TTrain::OnKeyDown(int cKey)
|
||||
temp->MoverParameters->BrakeDelayFlag < bdelay_R ?
|
||||
temp->MoverParameters->BrakeDelayFlag << 1 :
|
||||
temp->MoverParameters->BrakeDelayFlag | bdelay_M );
|
||||
if( true == temp->MoverParameters->BrakeDelaySwitch( fasterbrakesetting ) ) {
|
||||
#ifdef EU07_USE_OLD_SOUNDCODE
|
||||
dsbPneumaticRelay.play();
|
||||
#endif
|
||||
}
|
||||
temp->MoverParameters->BrakeDelaySwitch( fasterbrakesetting );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( cKey == GLFW_KEY_Q ) // ze Shiftem - włączenie AI
|
||||
{ // McZapkie-240302 - wlaczanie automatycznego pilota (zadziala tylko w
|
||||
// trybie debugmode)
|
||||
{ // McZapkie-240302 - wlaczanie automatycznego pilota (zadziala tylko w trybie debugmode)
|
||||
if (DynamicObject->Mechanik)
|
||||
{
|
||||
if (DebugModeFlag)
|
||||
if (DynamicObject->Mechanik->AIControllFlag) //żeby nie trzeba było
|
||||
// rozłączać dla
|
||||
// zresetowania
|
||||
DynamicObject->Mechanik->TakeControl(false);
|
||||
DynamicObject->Mechanik->TakeControl(true);
|
||||
}
|
||||
}
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
else if (cKey == Global::Keys[k_UpperSign]) // ABu 060205: światło górne -
|
||||
// włączenie
|
||||
{
|
||||
if (mvOccupied->LightsPosNo > 0) //kręciolek od swiatel
|
||||
{
|
||||
if ((mvOccupied->LightsPos < mvOccupied->LightsPosNo) || (mvOccupied->LightsWrap))
|
||||
{
|
||||
mvOccupied->LightsPos++;
|
||||
if (mvOccupied->LightsPos > mvOccupied->LightsPosNo)
|
||||
{
|
||||
mvOccupied->LightsPos = 1;
|
||||
if( DynamicObject->Mechanik->AIControllFlag ) {
|
||||
//żeby nie trzeba było rozłączać dla zresetowania
|
||||
DynamicObject->Mechanik->TakeControl( false );
|
||||
}
|
||||
play_sound( dsbSwitch );
|
||||
SetLights();
|
||||
}
|
||||
DynamicObject->Mechanik->TakeControl(true);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2963,7 +3257,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
if( cKey == Global::Keys[ k_IncLocalBrakeLevel ] )
|
||||
{ // Ra 2014-09: w
|
||||
// trybie latania
|
||||
// trybie latania
|
||||
// obsługa jest w
|
||||
// World.cpp
|
||||
if (!FreeFlyModeFlag)
|
||||
@@ -2993,9 +3287,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
mvOccupied->DecLocalBrakeLevel(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (cKey == Global::Keys[k_Brake2]) {
|
||||
else 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?
|
||||
@@ -3007,13 +3299,12 @@ void TTrain::OnKeyDown(int cKey)
|
||||
mvOccupied->BrakeCtrlPos2 = 0; // wyrownaj kapturek
|
||||
}
|
||||
}
|
||||
if (cKey == Global::Keys[k_BrakeProfile])
|
||||
else if (cKey == Global::Keys[k_BrakeProfile])
|
||||
{ // yB://ABu: male poprawki, zeby
|
||||
// bylo mozna ustawic dowolny
|
||||
// wagon
|
||||
int CouplNr = -2;
|
||||
if( false == FreeFlyModeFlag ) {
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
if( Global::ctrlState )
|
||||
if (mvOccupied->BrakeDelaySwitch(bdelay_R))
|
||||
{
|
||||
@@ -3025,7 +3316,6 @@ void TTrain::OnKeyDown(int cKey)
|
||||
{
|
||||
play_sound( dsbPneumaticRelay );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
TDynamicObject *temp;
|
||||
@@ -3066,11 +3356,13 @@ void TTrain::OnKeyDown(int cKey)
|
||||
else if (cKey == Global::Keys[k_CabForward])
|
||||
{
|
||||
if( !CabChange( 1 ) ) {
|
||||
if( TestFlag( DynamicObject->MoverParameters->Couplers[ 0 ].CouplingFlag,
|
||||
ctrain_passenger ) ) { // przejscie do nastepnego pojazdu
|
||||
if( TestFlag( DynamicObject->MoverParameters->Couplers[ 0 ].CouplingFlag, ctrain_passenger ) ) {
|
||||
// przejscie do nastepnego pojazdu
|
||||
Global::changeDynObj = DynamicObject->PrevConnected;
|
||||
Global::changeDynObj->MoverParameters->ActiveCab =
|
||||
DynamicObject->PrevConnectedNo ? -1 : 1;
|
||||
Global::changeDynObj->MoverParameters->ActiveCab = (
|
||||
DynamicObject->PrevConnectedNo ?
|
||||
-1 :
|
||||
1 );
|
||||
}
|
||||
}
|
||||
/*
|
||||
@@ -3082,12 +3374,13 @@ void TTrain::OnKeyDown(int cKey)
|
||||
else if (cKey == Global::Keys[k_CabBackward])
|
||||
{
|
||||
if (!CabChange(-1))
|
||||
if (TestFlag(DynamicObject->MoverParameters->Couplers[1].CouplingFlag,
|
||||
ctrain_passenger))
|
||||
{ // przejscie do poprzedniego
|
||||
if (TestFlag(DynamicObject->MoverParameters->Couplers[1].CouplingFlag, ctrain_passenger)) {
|
||||
// przejscie do poprzedniego
|
||||
Global::changeDynObj = DynamicObject->NextConnected;
|
||||
Global::changeDynObj->MoverParameters->ActiveCab =
|
||||
DynamicObject->NextConnectedNo ? -1 : 1;
|
||||
Global::changeDynObj->MoverParameters->ActiveCab = (
|
||||
DynamicObject->NextConnectedNo ?
|
||||
-1 :
|
||||
1 );
|
||||
}
|
||||
/*
|
||||
NOTE: disabled to allow 'prototypical' 'tricking' pantograph compressor to run unattended
|
||||
@@ -3117,7 +3410,6 @@ void TTrain::OnKeyDown(int cKey)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else if (cKey == Global::Keys[k_DeCouple]) {
|
||||
|
||||
@@ -3141,7 +3433,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
// else
|
||||
if (DebugModeFlag)
|
||||
{ // przesuwanie składu o 100m
|
||||
@@ -3189,6 +3481,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
if (cKey == GLFW_KEY_MINUS)
|
||||
{ // zmniejszenie numeru kanału radiowego
|
||||
if (iRadioChannel > 0)
|
||||
@@ -3199,6 +3492,7 @@ void TTrain::OnKeyDown(int cKey)
|
||||
if (iRadioChannel < 8)
|
||||
++iRadioChannel; // 0=wyłączony
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4758,8 +5052,7 @@ bool TTrain::Update( double const Deltatime )
|
||||
btInstrumentLight.Turn( false );
|
||||
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
// hunter-091012: przepisanie univ4 i zrobione z uwzglednieniem przelacznika
|
||||
// swiatla
|
||||
// hunter-091012: przepisanie univ4 i zrobione z uwzglednieniem przelacznika swiatla
|
||||
if (Console::Pressed(Global::Keys[k_Univ4]))
|
||||
{
|
||||
if( Global::shiftState )
|
||||
@@ -4813,7 +5106,6 @@ bool TTrain::Update( double const Deltatime )
|
||||
play_sound( dsbPneumaticSwitch );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if ((mvOccupied->BrakeHandle == FV4a) && (Console::Pressed(Global::Keys[k_IncBrakeLevel])))
|
||||
{
|
||||
if (Global::ctrlState)
|
||||
@@ -4822,7 +5114,6 @@ bool TTrain::Update( double const Deltatime )
|
||||
if (mvOccupied->BrakeCtrlPos2 < -1.5)
|
||||
mvOccupied->BrakeCtrlPos2 = -1.5;
|
||||
}
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
else
|
||||
{
|
||||
// mvOccupied->BrakeCtrlPosR+=(mvOccupied->BrakeCtrlPosR>mvOccupied->BrakeCtrlPosNo?0:dt*2);
|
||||
@@ -4830,7 +5121,6 @@ bool TTrain::Update( double const Deltatime )
|
||||
// mvOccupied->BrakeCtrlPos=
|
||||
// floor(mvOccupied->BrakeCtrlPosR+0.499);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((mvOccupied->BrakeHandle == FV4a) && (Console::Pressed(Global::Keys[k_DecBrakeLevel])))
|
||||
@@ -4841,7 +5131,6 @@ bool TTrain::Update( double const Deltatime )
|
||||
if (mvOccupied->BrakeCtrlPos2 < -3)
|
||||
mvOccupied->BrakeCtrlPos2 = -3;
|
||||
}
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
else
|
||||
{
|
||||
// mvOccupied->BrakeCtrlPosR-=(mvOccupied->BrakeCtrlPosR<-1?0:dt*2);
|
||||
@@ -4849,7 +5138,6 @@ bool TTrain::Update( double const Deltatime )
|
||||
// floor(mvOccupied->BrakeCtrlPosR+0.499);
|
||||
mvOccupied->BrakeLevelAdd(-dt * 2);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if( ( mvOccupied->BrakeSystem == ElectroPneumatic )
|
||||
@@ -4871,7 +5159,6 @@ bool TTrain::Update( double const Deltatime )
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
if (Console::Pressed(Global::Keys[k_DepartureSignal]))
|
||||
{
|
||||
ggDepartureSignalButton.PutValue(1);
|
||||
|
||||
20
Train.h
20
Train.h
@@ -113,9 +113,14 @@ class TTrain
|
||||
bool initialize_button(cParser &Parser, std::string const &Label, int const Cabindex);
|
||||
// helper, returns true for EMU with oerlikon brake
|
||||
bool is_eztoer() const;
|
||||
// locates nearest vehicle belonging to the consist
|
||||
TDynamicObject *find_nearest_consist_vehicle() const;
|
||||
|
||||
// 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
|
||||
// TBD, TODO: consider this approach if we ever want to have customized consist behaviour to received commands, based on the consist/vehicle type or whatever
|
||||
static void OnCommand_aidriverenable( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_aidriverdisable( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_mastercontrollerincrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_mastercontrollerincreasefast( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_mastercontrollerdecrease( TTrain *Train, command_data const &Command );
|
||||
@@ -138,7 +143,12 @@ class TTrain
|
||||
static void OnCommand_trainbrakefirstservice( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_trainbrakeservice( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_trainbrakefullservice( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_trainbrakehandleoff( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_trainbrakeemergency( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_trainbrakebasepressureincrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_trainbrakebasepressuredecrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_trainbrakebasepressurereset( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_trainbrakeoperationtoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_manualbrakeincrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_manualbrakedecrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_alarmchaintoggle( TTrain *Train, command_data const &Command );
|
||||
@@ -147,6 +157,8 @@ class TTrain
|
||||
static void OnCommand_epbrakecontroltoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_brakeactingspeedincrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_brakeactingspeeddecrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_brakeloadcompensationincrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_brakeloadcompensationdecrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_mubrakingindicatortoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_reverserincrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_reverserdecrease( TTrain *Train, command_data const &Command );
|
||||
@@ -180,6 +192,8 @@ class TTrain
|
||||
static void OnCommand_headlighttogglerearupper( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_redmarkertogglerearleft( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_redmarkertogglerearright( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_redmarkerstoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_endsignalstoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_headlightsdimtoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_interiorlighttoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_interiorlightdimtoggle( TTrain *Train, command_data const &Command );
|
||||
@@ -187,11 +201,17 @@ class TTrain
|
||||
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 );
|
||||
static void OnCommand_carcouplingincrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_carcouplingdisconnect( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_departureannounce( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_hornlowactivate( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_hornhighactivate( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_radiotoggle( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_radiochannelincrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_radiochanneldecrease( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_radiostoptest( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_cabchangeforward( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_cabchangebackward( TTrain *Train, command_data const &Command );
|
||||
static void OnCommand_generictoggle( TTrain *Train, command_data const &Command );
|
||||
|
||||
// members
|
||||
|
||||
31
World.cpp
31
World.cpp
@@ -338,8 +338,7 @@ bool TWorld::Init( GLFWwindow *Window ) {
|
||||
return true;
|
||||
};
|
||||
|
||||
void TWorld::OnKeyDown(int cKey)
|
||||
{
|
||||
void TWorld::OnKeyDown(int cKey) {
|
||||
// dump keypress info in the log
|
||||
if( !Global::iPause ) {
|
||||
// podczas pauzy klawisze nie działają
|
||||
@@ -647,32 +646,28 @@ void TWorld::OnKeyDown(int cKey)
|
||||
else if (!Global::iPause) //podczas pauzy sterownaie nie działa
|
||||
if (Train)
|
||||
if (Controlled)
|
||||
if( ( cKey == GLFW_KEY_Q )
|
||||
|| ( ( Controlled->Controller == Humandriver )
|
||||
|| ( true == DebugModeFlag ) ) ) {
|
||||
if( ( Controlled->Controller == Humandriver )
|
||||
|| ( true == DebugModeFlag ) ) {
|
||||
Train->OnKeyDown( cKey ); // przekazanie klawisza do kabiny
|
||||
}
|
||||
|
||||
if (FreeFlyModeFlag) // aby nie odluźniało wagonu za lokomotywą
|
||||
{ // operacje wykonywane na dowolnym pojeździe, przeniesione tu z kabiny
|
||||
/*
|
||||
// NOTE: disabled so it doesn't interfere with new system controls in outside view
|
||||
// TODO: implement as part of the new system
|
||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||
if (cKey == Global::Keys[k_Releaser]) // odluźniacz
|
||||
{ // działa globalnie, sprawdzić zasięg
|
||||
TDynamicObject *temp = Global::DynamicNearest();
|
||||
if (temp) {
|
||||
if (Global::ctrlState) // z ctrl odcinanie {
|
||||
temp->MoverParameters->Hamulec->SetBrakeStatus( temp->MoverParameters->Hamulec->GetBrakeStatus() ^ 128 );
|
||||
}
|
||||
else {
|
||||
temp->MoverParameters->BrakeReleaser(1);
|
||||
}
|
||||
TDynamicObject *temp{ std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 10, false, false ) ) };
|
||||
if( temp ) {
|
||||
if( Global::ctrlState ) // z ctrl odcinanie {
|
||||
temp->MoverParameters->Hamulec->SetBrakeStatus( temp->MoverParameters->Hamulec->GetBrakeStatus() ^ b_dmg );
|
||||
}
|
||||
else {
|
||||
temp->MoverParameters->BrakeReleaser( 1 );
|
||||
}
|
||||
}
|
||||
else
|
||||
*/
|
||||
if (cKey == Global::Keys[k_Heating]) // Ra: klawisz nie jest najszczęśliwszy
|
||||
else if (cKey == Global::Keys[k_Heating]) // Ra: klawisz nie jest najszczęśliwszy
|
||||
{ // zmiana próżny/ładowny; Ra: zabrane z kabiny
|
||||
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 10, false, false ) ) };
|
||||
if (vehicle)
|
||||
@@ -744,6 +739,7 @@ void TWorld::OnKeyDown(int cKey)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1453,6 +1449,7 @@ TWorld::Update_UI() {
|
||||
|
||||
uitextline3 +=
|
||||
"; LcB: " + to_string( vehicle->MoverParameters->LocBrakePress, 2 )
|
||||
+ "; hat: " + to_string( vehicle->MoverParameters->BrakeCtrlPos2, 2 )
|
||||
+ "; pipes: " + to_string( vehicle->MoverParameters->PipePress, 2 )
|
||||
+ "/" + to_string( vehicle->MoverParameters->ScndPipePress, 2 )
|
||||
+ "/" + to_string( vehicle->MoverParameters->EqvtPipePress, 2 )
|
||||
|
||||
38
command.cpp
38
command.cpp
@@ -19,6 +19,8 @@ namespace simulation {
|
||||
command_queue Commands;
|
||||
commanddescription_sequence Commands_descriptions = {
|
||||
|
||||
{ "aidriverenable", command_target::vehicle },
|
||||
{ "aidriverdisable", command_target::vehicle },
|
||||
{ "mastercontrollerincrease", command_target::vehicle },
|
||||
{ "mastercontrollerincreasefast", command_target::vehicle },
|
||||
{ "mastercontrollerdecrease", command_target::vehicle },
|
||||
@@ -40,7 +42,12 @@ commanddescription_sequence Commands_descriptions = {
|
||||
{ "trainbrakefirstservice", command_target::vehicle },
|
||||
{ "trainbrakeservice", command_target::vehicle },
|
||||
{ "trainbrakefullservice", command_target::vehicle },
|
||||
{ "trainbrakehandleoff", command_target::vehicle },
|
||||
{ "trainbrakeemergency", command_target::vehicle },
|
||||
{ "trainbrakebasepressureincrease", command_target::vehicle },
|
||||
{ "trainbrakebasepressuredecrease", command_target::vehicle },
|
||||
{ "trainbrakebasepressurereset", command_target::vehicle },
|
||||
{ "trainbrakeoperationtoggle", command_target::vehicle },
|
||||
{ "manualbrakeincrease", command_target::vehicle },
|
||||
{ "manualbrakedecrease", command_target::vehicle },
|
||||
{ "alarmchaintoggle", command_target::vehicle },
|
||||
@@ -60,12 +67,19 @@ commanddescription_sequence Commands_descriptions = {
|
||||
{ "epbrakecontroltoggle", command_target::vehicle },
|
||||
{ "brakeactingspeedincrease", command_target::vehicle },
|
||||
{ "brakeactingspeeddecrease", command_target::vehicle },
|
||||
{ "brakeloadcompensationincrease", command_target::vehicle },
|
||||
{ "brakeloadcompensationdecrease", command_target::vehicle },
|
||||
{ "mubrakingindicatortoggle", command_target::vehicle },
|
||||
{ "alerteracknowledge", command_target::vehicle },
|
||||
{ "hornlowactivate", command_target::vehicle },
|
||||
{ "hornhighactivate", command_target::vehicle },
|
||||
{ "radiotoggle", command_target::vehicle },
|
||||
{ "radiochannelincrease", command_target::vehicle },
|
||||
{ "radiochanneldecrease", command_target::vehicle },
|
||||
{ "radiostoptest", command_target::vehicle },
|
||||
// TBD, TODO: make cab change controls entity-centric
|
||||
{ "cabchangeforward", command_target::vehicle },
|
||||
{ "cabchangebackward", command_target::vehicle },
|
||||
|
||||
{ "viewturn", command_target::entity },
|
||||
{ "movehorizontal", command_target::entity },
|
||||
@@ -78,15 +92,9 @@ commanddescription_sequence Commands_descriptions = {
|
||||
{ "moveback", command_target::entity },
|
||||
{ "moveup", command_target::entity },
|
||||
{ "movedown", command_target::entity },
|
||||
/*
|
||||
const int k_CabForward = 42;
|
||||
const int k_CabBackward = 43;
|
||||
const int k_Couple = 44;
|
||||
const int k_DeCouple = 45;
|
||||
const int k_ProgramQuit = 46;
|
||||
// const int k_ProgramPause= 47;
|
||||
const int k_ProgramHelp = 48;
|
||||
*/
|
||||
// TBD, TODO: make coupling controls entity-centric
|
||||
{ "carcouplingincrease", command_target::vehicle },
|
||||
{ "carcouplingdisconnect", command_target::vehicle },
|
||||
{ "doortoggleleft", command_target::vehicle },
|
||||
{ "doortoggleright", command_target::vehicle },
|
||||
{ "departureannounce", command_target::vehicle },
|
||||
@@ -97,9 +105,6 @@ const int k_ProgramHelp = 48;
|
||||
{ "pantographtogglerear", command_target::vehicle },
|
||||
{ "pantographlowerall", command_target::vehicle },
|
||||
{ "heatingtoggle", command_target::vehicle },
|
||||
/*
|
||||
// const int k_FreeFlyMode= 59;
|
||||
*/
|
||||
{ "lightspresetactivatenext", command_target::vehicle },
|
||||
{ "lightspresetactivateprevious", command_target::vehicle },
|
||||
{ "headlighttoggleleft", command_target::vehicle },
|
||||
@@ -112,16 +117,14 @@ const int k_ProgramHelp = 48;
|
||||
{ "headlighttogglerearupper", command_target::vehicle },
|
||||
{ "redmarkertogglerearleft", command_target::vehicle },
|
||||
{ "redmarkertogglerearright", command_target::vehicle },
|
||||
{ "redmarkerstoggle", command_target::vehicle },
|
||||
{ "endsignalstoggle", command_target::vehicle },
|
||||
{ "headlightsdimtoggle", command_target::vehicle },
|
||||
{ "motorconnectorsopen", command_target::vehicle },
|
||||
{ "motordisconnect", command_target::vehicle },
|
||||
{ "interiorlighttoggle", command_target::vehicle },
|
||||
{ "interiorlightdimtoggle", command_target::vehicle },
|
||||
{ "instrumentlighttoggle", command_target::vehicle },
|
||||
/*
|
||||
const int k_EndSign = 70;
|
||||
const int k_Active = 71;
|
||||
*/
|
||||
{ "generictoggle0", command_target::vehicle },
|
||||
{ "generictoggle1", command_target::vehicle },
|
||||
{ "generictoggle2", command_target::vehicle },
|
||||
@@ -133,9 +136,6 @@ const int k_Active = 71;
|
||||
{ "generictoggle8", command_target::vehicle },
|
||||
{ "generictoggle9", command_target::vehicle },
|
||||
{ "batterytoggle", command_target::vehicle }
|
||||
/*
|
||||
const int k_WalkMode = 73;
|
||||
*/
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
38
command.h
38
command.h
@@ -14,6 +14,8 @@ http://mozilla.org/MPL/2.0/.
|
||||
|
||||
enum class user_command {
|
||||
|
||||
aidriverenable,
|
||||
aidriverdisable,
|
||||
mastercontrollerincrease,
|
||||
mastercontrollerincreasefast,
|
||||
mastercontrollerdecrease,
|
||||
@@ -35,7 +37,12 @@ enum class user_command {
|
||||
trainbrakefirstservice,
|
||||
trainbrakeservice,
|
||||
trainbrakefullservice,
|
||||
trainbrakehandleoff,
|
||||
trainbrakeemergency,
|
||||
trainbrakebasepressureincrease,
|
||||
trainbrakebasepressuredecrease,
|
||||
trainbrakebasepressurereset,
|
||||
trainbrakeoperationtoggle,
|
||||
manualbrakeincrease,
|
||||
manualbrakedecrease,
|
||||
alarmchaintoggle,
|
||||
@@ -55,12 +62,18 @@ enum class user_command {
|
||||
epbrakecontroltoggle,
|
||||
brakeactingspeedincrease,
|
||||
brakeactingspeeddecrease,
|
||||
brakeloadcompensationincrease,
|
||||
brakeloadcompensationdecrease,
|
||||
mubrakingindicatortoggle,
|
||||
alerteracknowledge,
|
||||
hornlowactivate,
|
||||
hornhighactivate,
|
||||
radiotoggle,
|
||||
radiochannelincrease,
|
||||
radiochanneldecrease,
|
||||
radiostoptest,
|
||||
cabchangeforward,
|
||||
cabchangebackward,
|
||||
|
||||
viewturn,
|
||||
movehorizontal,
|
||||
@@ -73,15 +86,9 @@ enum class user_command {
|
||||
moveback,
|
||||
moveup,
|
||||
movedown,
|
||||
/*
|
||||
const int k_CabForward = 42;
|
||||
const int k_CabBackward = 43;
|
||||
const int k_Couple = 44;
|
||||
const int k_DeCouple = 45;
|
||||
const int k_ProgramQuit = 46;
|
||||
// const int k_ProgramPause= 47;
|
||||
const int k_ProgramHelp = 48;
|
||||
*/
|
||||
|
||||
carcouplingincrease,
|
||||
carcouplingdisconnect,
|
||||
doortoggleleft,
|
||||
doortoggleright,
|
||||
departureannounce,
|
||||
@@ -92,9 +99,6 @@ const int k_ProgramHelp = 48;
|
||||
pantographtogglerear,
|
||||
pantographlowerall,
|
||||
heatingtoggle,
|
||||
/*
|
||||
// const int k_FreeFlyMode= 59;
|
||||
*/
|
||||
lightspresetactivatenext,
|
||||
lightspresetactivateprevious,
|
||||
headlighttoggleleft,
|
||||
@@ -107,16 +111,14 @@ const int k_ProgramHelp = 48;
|
||||
headlighttogglerearupper,
|
||||
redmarkertogglerearleft,
|
||||
redmarkertogglerearright,
|
||||
redmarkerstoggle,
|
||||
endsignalstoggle,
|
||||
headlightsdimtoggle,
|
||||
motorconnectorsopen,
|
||||
motordisconnect,
|
||||
interiorlighttoggle,
|
||||
interiorlightdimtoggle,
|
||||
instrumentlighttoggle,
|
||||
/*
|
||||
const int k_EndSign = 70;
|
||||
const int k_Active = 71;
|
||||
*/
|
||||
generictoggle0,
|
||||
generictoggle1,
|
||||
generictoggle2,
|
||||
@@ -128,9 +130,7 @@ const int k_Active = 71;
|
||||
generictoggle8,
|
||||
generictoggle9,
|
||||
batterytoggle,
|
||||
/*
|
||||
const int k_WalkMode = 73;
|
||||
*/
|
||||
|
||||
none = -1
|
||||
};
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ keyboard_input::recall_bindings() {
|
||||
std::unordered_map<std::string, int> nametokeymap = {
|
||||
{ "0", GLFW_KEY_0 }, { "1", GLFW_KEY_1 }, { "2", GLFW_KEY_2 }, { "3", GLFW_KEY_3 }, { "4", GLFW_KEY_4 },
|
||||
{ "5", GLFW_KEY_5 }, { "6", GLFW_KEY_6 }, { "7", GLFW_KEY_7 }, { "8", GLFW_KEY_8 }, { "9", GLFW_KEY_9 },
|
||||
{ "-", GLFW_KEY_MINUS }, { "=", GLFW_KEY_EQUAL },
|
||||
{ "a", GLFW_KEY_A }, { "b", GLFW_KEY_B }, { "c", GLFW_KEY_C }, { "d", GLFW_KEY_D }, { "e", GLFW_KEY_E },
|
||||
{ "f", GLFW_KEY_F }, { "g", GLFW_KEY_G }, { "h", GLFW_KEY_H }, { "i", GLFW_KEY_I }, { "j", GLFW_KEY_J },
|
||||
{ "k", GLFW_KEY_K }, { "l", GLFW_KEY_L }, { "m", GLFW_KEY_M }, { "n", GLFW_KEY_N }, { "o", GLFW_KEY_O },
|
||||
@@ -41,6 +42,7 @@ keyboard_input::recall_bindings() {
|
||||
{ ";", GLFW_KEY_SEMICOLON }, { "'", GLFW_KEY_APOSTROPHE }, { "enter", GLFW_KEY_ENTER },
|
||||
{ ",", GLFW_KEY_COMMA }, { ".", GLFW_KEY_PERIOD }, { "/", GLFW_KEY_SLASH },
|
||||
{ "space", GLFW_KEY_SPACE },
|
||||
{ "insert", GLFW_KEY_INSERT },{ "delete", GLFW_KEY_DELETE }, { "home", GLFW_KEY_HOME }, { "end", GLFW_KEY_END },
|
||||
// numpad block
|
||||
{ "num_/", GLFW_KEY_KP_DIVIDE }, { "num_*", GLFW_KEY_KP_MULTIPLY }, { "num_-", GLFW_KEY_KP_SUBTRACT },
|
||||
{ "num_7", GLFW_KEY_KP_7 }, { "num_8", GLFW_KEY_KP_8 }, { "num_9", GLFW_KEY_KP_9 }, { "num_+", GLFW_KEY_KP_ADD },
|
||||
@@ -165,6 +167,10 @@ void
|
||||
keyboard_input::default_bindings() {
|
||||
|
||||
m_commands = {
|
||||
// aidriverenable
|
||||
{ GLFW_KEY_Q | keymodifier::shift },
|
||||
// aidriverdisable
|
||||
{ GLFW_KEY_Q },
|
||||
// mastercontrollerincrease
|
||||
{ GLFW_KEY_KP_ADD },
|
||||
// mastercontrollerincreasefast
|
||||
@@ -207,17 +213,27 @@ keyboard_input::default_bindings() {
|
||||
{ GLFW_KEY_KP_5 },
|
||||
// trainbrakefullservice
|
||||
{ GLFW_KEY_KP_2 },
|
||||
// trainbrakehandleoff
|
||||
{ GLFW_KEY_KP_5 | keymodifier::control },
|
||||
// trainbrakeemergency
|
||||
{ GLFW_KEY_KP_0 },
|
||||
// trainbrakebasepressureincrease
|
||||
{ GLFW_KEY_KP_3 | keymodifier::control },
|
||||
// trainbrakebasepressuredecrease
|
||||
{ GLFW_KEY_KP_9 | keymodifier::control },
|
||||
// trainbrakebasepressurereset
|
||||
{ GLFW_KEY_KP_6 | keymodifier::control },
|
||||
// trainbrakeoperationtoggle
|
||||
{ GLFW_KEY_KP_4 | keymodifier::control },
|
||||
// manualbrakeincrease
|
||||
{ GLFW_KEY_KP_1 | keymodifier::control },
|
||||
// manualbrakedecrease
|
||||
{ GLFW_KEY_KP_7 | keymodifier::control },
|
||||
// alarm chain toggle
|
||||
{ GLFW_KEY_B | keymodifier::shift | keymodifier::control },
|
||||
// wheelspinbrakeactivate,
|
||||
// wheelspinbrakeactivate
|
||||
{ GLFW_KEY_KP_ENTER },
|
||||
// sandboxactivate,
|
||||
// sandboxactivate
|
||||
{ GLFW_KEY_S },
|
||||
// reverserincrease
|
||||
{ GLFW_KEY_D },
|
||||
@@ -247,6 +263,10 @@ keyboard_input::default_bindings() {
|
||||
{ GLFW_KEY_B | keymodifier::shift },
|
||||
// brakeactingspeeddecrease
|
||||
{ GLFW_KEY_B },
|
||||
// brakeloadcompensationincrease
|
||||
{ GLFW_KEY_H | keymodifier::shift | keymodifier::control },
|
||||
// brakeloadcompensationdecrease
|
||||
{ GLFW_KEY_H | keymodifier::control },
|
||||
// mubrakingindicatortoggle
|
||||
{ GLFW_KEY_L | keymodifier::shift },
|
||||
// alerteracknowledge
|
||||
@@ -257,8 +277,16 @@ keyboard_input::default_bindings() {
|
||||
{ GLFW_KEY_A | keymodifier::shift },
|
||||
// radiotoggle
|
||||
{ GLFW_KEY_R | keymodifier::control },
|
||||
// radiochannelincrease
|
||||
{ GLFW_KEY_R | keymodifier::shift },
|
||||
// radiochanneldecrease
|
||||
{ GLFW_KEY_R },
|
||||
// radiostoptest
|
||||
{ GLFW_KEY_R | keymodifier::shift | keymodifier::control },
|
||||
// cabchangeforward
|
||||
{ GLFW_KEY_HOME },
|
||||
// cabchangebackward
|
||||
{ GLFW_KEY_END },
|
||||
// viewturn
|
||||
{ -1 },
|
||||
// movehorizontal
|
||||
@@ -281,11 +309,11 @@ keyboard_input::default_bindings() {
|
||||
{ GLFW_KEY_PAGE_UP },
|
||||
// movedown
|
||||
{ GLFW_KEY_PAGE_DOWN },
|
||||
// carcouplingincrease
|
||||
{ GLFW_KEY_INSERT },
|
||||
// carcouplingdisconnect
|
||||
{ GLFW_KEY_DELETE },
|
||||
/*
|
||||
const int k_CabForward = 42;
|
||||
const int k_CabBackward = 43;
|
||||
const int k_Couple = 44;
|
||||
const int k_DeCouple = 45;
|
||||
const int k_ProgramQuit = 46;
|
||||
// const int k_ProgramPause= 47;
|
||||
const int k_ProgramHelp = 48;
|
||||
@@ -337,12 +365,16 @@ const int k_ProgramHelp = 48;
|
||||
{ GLFW_KEY_Y | keymodifier::control | keymodifier::shift },
|
||||
// redmarkertogglerearright
|
||||
{ GLFW_KEY_I | keymodifier::control | keymodifier::shift },
|
||||
// redmarkerstoggle
|
||||
{ GLFW_KEY_E | keymodifier::shift },
|
||||
// endsignalstoggle
|
||||
{ GLFW_KEY_E },
|
||||
// headlightsdimtoggle
|
||||
{ GLFW_KEY_L | keymodifier::control },
|
||||
// motorconnectorsopen
|
||||
{ GLFW_KEY_L },
|
||||
// motordisconnect
|
||||
{ GLFW_KEY_E | keymodifier::shift },
|
||||
{ GLFW_KEY_E | keymodifier::control },
|
||||
// interiorlighttoggle
|
||||
{ GLFW_KEY_APOSTROPHE },
|
||||
// interiorlightdimtoggle
|
||||
@@ -350,7 +382,6 @@ const int k_ProgramHelp = 48;
|
||||
// instrumentlighttoggle
|
||||
{ GLFW_KEY_SEMICOLON },
|
||||
/*
|
||||
const int k_EndSign = 70;
|
||||
const int k_Active = 71;
|
||||
*/
|
||||
// "generictoggle0"
|
||||
|
||||
Reference in New Issue
Block a user