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:
18
Driver.cpp
18
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
|
||||
|
||||
Reference in New Issue
Block a user