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

cab change logic tweak, event launcher execution fix

This commit is contained in:
tmj-fstate
2019-08-06 14:08:22 +02:00
parent fbd2ff85fa
commit d317dc2296
2 changed files with 33 additions and 8 deletions

View File

@@ -5049,12 +5049,23 @@ void TTrain::OnCommand_radiocall3send( TTrain *Train, command_data const &Comman
void TTrain::OnCommand_cabchangeforward( TTrain *Train, command_data const &Command ) { void TTrain::OnCommand_cabchangeforward( TTrain *Train, command_data const &Command ) {
if( Command.action == GLFW_PRESS ) { if( Command.action == GLFW_PRESS ) {
if( false == Train->CabChange( 1 ) ) { auto const movedirection {
if( TestFlag( Train->DynamicObject->MoverParameters->Couplers[ end::front ].CouplingFlag, coupling::gangway ) ) { 1 * ( Train->DynamicObject->ctOwner->Vehicle( end::front )->DirectionGet() == Train->DynamicObject->DirectionGet() ?
1 :
-1 ) };
if( false == Train->CabChange( movedirection ) ) {
auto const exitdirection { (
movedirection > 0 ?
end::front :
end::rear ) };
if( TestFlag( Train->DynamicObject->MoverParameters->Couplers[ exitdirection ].CouplingFlag, coupling::gangway ) ) {
// przejscie do nastepnego pojazdu // przejscie do nastepnego pojazdu
Global.changeDynObj = Train->DynamicObject->PrevConnected(); Global.changeDynObj = (
exitdirection == end::front ?
Train->DynamicObject->PrevConnected() :
Train->DynamicObject->NextConnected() );
Global.changeDynObj->MoverParameters->ActiveCab = ( Global.changeDynObj->MoverParameters->ActiveCab = (
Train->DynamicObject->MoverParameters->Neighbours[end::front].vehicle_end ? Train->DynamicObject->MoverParameters->Neighbours[ exitdirection ].vehicle_end ?
-1 : -1 :
1 ); 1 );
} }
@@ -5069,12 +5080,23 @@ void TTrain::OnCommand_cabchangeforward( TTrain *Train, command_data const &Comm
void TTrain::OnCommand_cabchangebackward( TTrain *Train, command_data const &Command ) { void TTrain::OnCommand_cabchangebackward( TTrain *Train, command_data const &Command ) {
if( Command.action == GLFW_PRESS ) { if( Command.action == GLFW_PRESS ) {
if( false == Train->CabChange( -1 ) ) { auto const movedirection {
if( TestFlag( Train->DynamicObject->MoverParameters->Couplers[ end::rear ].CouplingFlag, coupling::gangway ) ) { -1 * ( Train->DynamicObject->ctOwner->Vehicle( end::front )->DirectionGet() == Train->DynamicObject->DirectionGet() ?
1 :
-1 ) };
if( false == Train->CabChange( movedirection ) ) {
auto const exitdirection { (
movedirection > 0 ?
end::front :
end::rear ) };
if( TestFlag( Train->DynamicObject->MoverParameters->Couplers[ exitdirection ].CouplingFlag, coupling::gangway ) ) {
// przejscie do nastepnego pojazdu // przejscie do nastepnego pojazdu
Global.changeDynObj = Train->DynamicObject->NextConnected(); Global.changeDynObj = (
exitdirection == end::front ?
Train->DynamicObject->PrevConnected() :
Train->DynamicObject->NextConnected() );
Global.changeDynObj->MoverParameters->ActiveCab = ( Global.changeDynObj->MoverParameters->ActiveCab = (
Train->DynamicObject->MoverParameters->Neighbours[end::rear].vehicle_end ? Train->DynamicObject->MoverParameters->Neighbours[ exitdirection ].vehicle_end ?
-1 : -1 :
1 ); 1 );
} }

View File

@@ -950,6 +950,9 @@ basic_region::on_click( TAnimModel const *Instance ) {
// legacy method, polls event launchers around camera // legacy method, polls event launchers around camera
void void
basic_region::update_events() { basic_region::update_events() {
if( false == simulation::is_ready ) { return; }
// render events and sounds from sectors near enough to the viewer // render events and sounds from sectors near enough to the viewer
auto const range = EU07_SECTIONSIZE; // arbitrary range auto const range = EU07_SECTIONSIZE; // arbitrary range
auto const &sectionlist = sections( Global.pCamera.Pos, range ); auto const &sectionlist = sections( Global.pCamera.Pos, range );