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

master controller return delay

This commit is contained in:
tmj-fstate
2018-12-08 14:31:19 +01:00
parent ad1bb8fcb8
commit 57327f9653
2 changed files with 25 additions and 17 deletions

View File

@@ -742,11 +742,20 @@ void TTrain::OnCommand_aidriverdisable( TTrain *Train, command_data const &Comma
} }
} }
auto const EU07_CONTROLLER_BASERETURNDELAY { 0.5f };
auto const EU07_CONTROLLER_KEYBOARDETURNDELAY { 1.5f };
void TTrain::OnCommand_mastercontrollerincrease( TTrain *Train, command_data const &Command ) { void TTrain::OnCommand_mastercontrollerincrease( TTrain *Train, command_data const &Command ) {
if( Command.action != GLFW_RELEASE ) { if( Command.action != GLFW_RELEASE ) {
// on press or hold // on press or hold
Train->mvControlled->IncMainCtrl( 1 ); Train->mvControlled->IncMainCtrl( 1 );
Train->m_mastercontrollerinuse = true;
}
else {
// release
Train->m_mastercontrollerinuse = false;
Train->m_mastercontrollerreturndelay = EU07_CONTROLLER_KEYBOARDETURNDELAY + EU07_CONTROLLER_BASERETURNDELAY;
} }
} }
@@ -768,6 +777,7 @@ void TTrain::OnCommand_mastercontrollerdecrease( TTrain *Train, command_data con
else { else {
// release // release
Train->m_mastercontrollerinuse = false; Train->m_mastercontrollerinuse = false;
Train->m_mastercontrollerreturndelay = EU07_CONTROLLER_KEYBOARDETURNDELAY + EU07_CONTROLLER_BASERETURNDELAY;
} }
} }
@@ -789,6 +799,7 @@ void TTrain::OnCommand_mastercontrollerset( TTrain *Train, command_data const &C
else { else {
// release // release
Train->m_mastercontrollerinuse = false; Train->m_mastercontrollerinuse = false;
Train->m_mastercontrollerreturndelay = EU07_CONTROLLER_BASERETURNDELAY; // NOTE: keyboard return delay is omitted for other input sources
} }
} }
@@ -802,14 +813,6 @@ void TTrain::OnCommand_secondcontrollerincrease( TTrain *Train, command_data con
Train->mvControlled->AnPos + 0.025, Train->mvControlled->AnPos + 0.025,
0.0, 1.0 ); 0.0, 1.0 );
} }
else {
Train->mvControlled->IncScndCtrl( 1 );
}
Train->m_mastercontrollerinuse = true;
}
else {
// release
Train->m_mastercontrollerinuse = false;
} }
} }
@@ -3698,7 +3701,7 @@ void TTrain::OnCommand_redmarkerstoggle( TTrain *Train, command_data const &Comm
int const CouplNr { int const CouplNr {
clamp( clamp(
vehicle->DirectionGet() vehicle->DirectionGet()
* ( LengthSquared3( vehicle->HeadPosition() - Global.pCamera.Pos ) > LengthSquared3( vehicle->RearPosition() - Global.pCamera.Pos ) ? * ( Math3D::LengthSquared3( vehicle->HeadPosition() - Global.pCamera.Pos ) > Math3D::LengthSquared3( vehicle->RearPosition() - Global.pCamera.Pos ) ?
1 : 1 :
-1 ), -1 ),
0, 1 ) }; // z [-1,1] zrobić [0,1] 0, 1 ) }; // z [-1,1] zrobić [0,1]
@@ -3724,7 +3727,7 @@ void TTrain::OnCommand_endsignalstoggle( TTrain *Train, command_data const &Comm
int const CouplNr { int const CouplNr {
clamp( clamp(
vehicle->DirectionGet() vehicle->DirectionGet()
* ( LengthSquared3( vehicle->HeadPosition() - Global.pCamera.Pos ) > LengthSquared3( vehicle->RearPosition() - Global.pCamera.Pos ) ? * ( Math3D::LengthSquared3( vehicle->HeadPosition() - Global.pCamera.Pos ) > Math3D::LengthSquared3( vehicle->RearPosition() - Global.pCamera.Pos ) ?
1 : 1 :
-1 ), -1 ),
0, 1 ) }; // z [-1,1] zrobić [0,1] 0, 1 ) }; // z [-1,1] zrobić [0,1]
@@ -4878,6 +4881,9 @@ bool TTrain::Update( double const Deltatime )
|| ( input::command == user_command::mastercontrollerdecrease ) ) ) { || ( input::command == user_command::mastercontrollerdecrease ) ) ) {
*/ */
if( false == m_mastercontrollerinuse ) { if( false == m_mastercontrollerinuse ) {
m_mastercontrollerreturndelay -= Deltatime;
if( m_mastercontrollerreturndelay < 0.f ) {
m_mastercontrollerreturndelay = EU07_CONTROLLER_BASERETURNDELAY;
if( mvOccupied->MainCtrlPos > mvOccupied->MainCtrlActualPos ) { if( mvOccupied->MainCtrlPos > mvOccupied->MainCtrlActualPos ) {
mvOccupied->DecMainCtrl( 1 ); mvOccupied->DecMainCtrl( 1 );
} }
@@ -4887,6 +4893,7 @@ bool TTrain::Update( double const Deltatime )
} }
} }
} }
}
/* /*
if( ( mvOccupied->BrakeHandle == TBrakeHandle::FVel6 ) if( ( mvOccupied->BrakeHandle == TBrakeHandle::FVel6 )
&& ( mvOccupied->fBrakeCtrlPos < 0.0 ) && ( mvOccupied->fBrakeCtrlPos < 0.0 )

View File

@@ -644,6 +644,7 @@ private:
// McZapkie: do syczenia // McZapkie: do syczenia
float fPPress, fNPress; float fPPress, fNPress;
bool m_mastercontrollerinuse { false }; bool m_mastercontrollerinuse { false };
float m_mastercontrollerreturndelay { 0.f };
int iRadioChannel { 1 }; // numer aktualnego kana?u radiowego int iRadioChannel { 1 }; // numer aktualnego kana?u radiowego
std::vector<std::pair<std::string, texture_handle>> m_screens; std::vector<std::pair<std::string, texture_handle>> m_screens;