mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 22:09:19 +02:00
cab change logic tweak, event launcher execution fix
This commit is contained in:
38
Train.cpp
38
Train.cpp
@@ -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 );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 §ionlist = sections( Global.pCamera.Pos, range );
|
auto const §ionlist = sections( Global.pCamera.Pos, range );
|
||||||
|
|||||||
Reference in New Issue
Block a user