From 7e0cb417ce109c91181eeefab950494d9608ce5f Mon Sep 17 00:00:00 2001 From: firleju Date: Sun, 17 Jan 2016 15:56:07 +0100 Subject: [PATCH] Repair bug with changing VelNext in each step of TController::UpdateSituation() Repair bug of wrong if statement when check if could scan backward in shunt mode. --- Driver.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Driver.cpp b/Driver.cpp index 9947cddd..2055e77e 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -427,8 +427,8 @@ void TController::TableTraceRoute(double fDistance, TDynamicObject *pVehicle) } sSpeedTable[iLast].iFlags &= 0xBE; // kontynuować próby doskanowania } - else if (VelNext == 0) - return; // znaleziono semafor lub tor z prędkością zero i nie ma co dalej sprawdzać + //else if (VelNext == 0) + // return; // znaleziono semafor lub tor z prędkością zero i nie ma co dalej sprawdzać //trzeba dalej sprawdzać, gdyż przy stopinfo potrafił zgubić semafor pTrack = sSpeedTable[iLast].trTrack; // ostatnio sprawdzony tor if (!pTrack) @@ -3700,7 +3700,7 @@ bool TController::UpdateSituation(double dt) case Change_direction | Connect: // zmiana kierunku podczas podłączania if (OrderList[OrderPos] != Obey_train) // spokojne manewry { - VelSignal = Min0R(VelSignal, 40); // jeśli manewry, to ograniczamy prędkość + VelSignal = Global::Min0RSpeed(VelSignal, 40); // jeśli manewry, to ograniczamy prędkość if (AIControllFlag) { // to poniżej tylko dla AI if (iVehicleCount >= 0) // jeśli jest co odczepić @@ -3834,7 +3834,7 @@ bool TController::UpdateSituation(double dt) // następnie ograniczana if (TrainParams) // jeśli ma rozkład if (TrainParams->TTVmax > 0.0) // i ograniczenie w rozkładzie - VelDesired = Min0R(VelDesired, + VelDesired = Global::Min0RSpeed(VelDesired, TrainParams->TTVmax); // to nie przekraczać rozkladowej SetDriverPsyche(); // ustawia AccPreferred (potrzebne tu?) // Ra: odczyt (ActualProximityDist), (VelNext) i (AccPreferred) z tabelki prędkosci @@ -3902,7 +3902,7 @@ bool TController::UpdateSituation(double dt) // ma taboru do podłączenia // Ra 2F1H: z tym (fTrackBlock) to nie jest najlepszy pomysł, bo lepiej by // było porównać z odległością od sygnalizatora z przodu - if ((OrderList[OrderPos] | Connect) ? pVehicles[0]->fTrackBlock > 2000 : + if ((OrderList[OrderPos] & Connect) ? pVehicles[0]->fTrackBlock > 2000 : true) if ((comm = BackwardScan()) != cm_Unknown) // jeśli w drugą można jechać { // należy sprawdzać odległość od znalezionego sygnalizatora, @@ -4043,22 +4043,22 @@ bool TController::UpdateSituation(double dt) // else if (VelSignal<0) // VelDesired=fVelMax; //ile fabryka dala (Ra: uwzględione wagony) else if (VelSignal >= 0) // jeśli skład był zatrzymany na początku i teraz już może jechać - VelDesired = Min0R(VelDesired, VelSignal); + VelDesired = Global::Min0RSpeed(VelDesired, VelSignal); if (mvOccupied->RunningTrack.Velmax >= 0) // ograniczenie prędkości z trajektorii ruchu VelDesired = - Min0R(VelDesired, + Global::Min0RSpeed(VelDesired, mvOccupied->RunningTrack.Velmax); // uwaga na ograniczenia szlakowej! if (VelforDriver >= 0) // tu jest zero przy zmianie kierunku jazdy - VelDesired = Min0R(VelDesired, VelforDriver); // Ra: tu może być 40, jeśli + VelDesired = Global::Min0RSpeed(VelDesired, VelforDriver); // Ra: tu może być 40, jeśli // mechanik nie ma znajomości // szlaaku, albo kierowca jeździ // 70 if (TrainParams) if (TrainParams->CheckTrainLatency() < 5.0) if (TrainParams->TTVmax > 0.0) - VelDesired = Min0R( + VelDesired = Global::Min0RSpeed( VelDesired, TrainParams ->TTVmax); // jesli nie spozniony to nie przekraczać rozkladowej