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

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.
This commit is contained in:
firleju
2016-01-17 15:56:07 +01:00
parent c50ebbef83
commit 7e0cb417ce

View File

@@ -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