mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 22:09: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
|
sSpeedTable[iLast].iFlags &= 0xBE; // kontynuować próby doskanowania
|
||||||
}
|
}
|
||||||
else if (VelNext == 0)
|
//else if (VelNext == 0)
|
||||||
return; // znaleziono semafor lub tor z prędkością zero i nie ma co dalej sprawdzać
|
// 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
|
//trzeba dalej sprawdzać, gdyż przy stopinfo potrafił zgubić semafor
|
||||||
pTrack = sSpeedTable[iLast].trTrack; // ostatnio sprawdzony tor
|
pTrack = sSpeedTable[iLast].trTrack; // ostatnio sprawdzony tor
|
||||||
if (!pTrack)
|
if (!pTrack)
|
||||||
@@ -3700,7 +3700,7 @@ bool TController::UpdateSituation(double dt)
|
|||||||
case Change_direction | Connect: // zmiana kierunku podczas podłączania
|
case Change_direction | Connect: // zmiana kierunku podczas podłączania
|
||||||
if (OrderList[OrderPos] != Obey_train) // spokojne manewry
|
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)
|
if (AIControllFlag)
|
||||||
{ // to poniżej tylko dla AI
|
{ // to poniżej tylko dla AI
|
||||||
if (iVehicleCount >= 0) // jeśli jest co odczepić
|
if (iVehicleCount >= 0) // jeśli jest co odczepić
|
||||||
@@ -3834,7 +3834,7 @@ bool TController::UpdateSituation(double dt)
|
|||||||
// następnie ograniczana
|
// następnie ograniczana
|
||||||
if (TrainParams) // jeśli ma rozkład
|
if (TrainParams) // jeśli ma rozkład
|
||||||
if (TrainParams->TTVmax > 0.0) // i ograniczenie w rozkładzie
|
if (TrainParams->TTVmax > 0.0) // i ograniczenie w rozkładzie
|
||||||
VelDesired = Min0R(VelDesired,
|
VelDesired = Global::Min0RSpeed(VelDesired,
|
||||||
TrainParams->TTVmax); // to nie przekraczać rozkladowej
|
TrainParams->TTVmax); // to nie przekraczać rozkladowej
|
||||||
SetDriverPsyche(); // ustawia AccPreferred (potrzebne tu?)
|
SetDriverPsyche(); // ustawia AccPreferred (potrzebne tu?)
|
||||||
// Ra: odczyt (ActualProximityDist), (VelNext) i (AccPreferred) z tabelki prędkosci
|
// Ra: odczyt (ActualProximityDist), (VelNext) i (AccPreferred) z tabelki prędkosci
|
||||||
@@ -3902,7 +3902,7 @@ bool TController::UpdateSituation(double dt)
|
|||||||
// ma taboru do podłączenia
|
// ma taboru do podłączenia
|
||||||
// Ra 2F1H: z tym (fTrackBlock) to nie jest najlepszy pomysł, bo lepiej by
|
// 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
|
// 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)
|
true)
|
||||||
if ((comm = BackwardScan()) != cm_Unknown) // jeśli w drugą można jechać
|
if ((comm = BackwardScan()) != cm_Unknown) // jeśli w drugą można jechać
|
||||||
{ // należy sprawdzać odległość od znalezionego sygnalizatora,
|
{ // należy sprawdzać odległość od znalezionego sygnalizatora,
|
||||||
@@ -4043,22 +4043,22 @@ bool TController::UpdateSituation(double dt)
|
|||||||
// else if (VelSignal<0)
|
// else if (VelSignal<0)
|
||||||
// VelDesired=fVelMax; //ile fabryka dala (Ra: uwzględione wagony)
|
// 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ć
|
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 >=
|
if (mvOccupied->RunningTrack.Velmax >=
|
||||||
0) // ograniczenie prędkości z trajektorii ruchu
|
0) // ograniczenie prędkości z trajektorii ruchu
|
||||||
VelDesired =
|
VelDesired =
|
||||||
Min0R(VelDesired,
|
Global::Min0RSpeed(VelDesired,
|
||||||
mvOccupied->RunningTrack.Velmax); // uwaga na ograniczenia szlakowej!
|
mvOccupied->RunningTrack.Velmax); // uwaga na ograniczenia szlakowej!
|
||||||
if (VelforDriver >= 0) // tu jest zero przy zmianie kierunku jazdy
|
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
|
// mechanik nie ma znajomości
|
||||||
// szlaaku, albo kierowca jeździ
|
// szlaaku, albo kierowca jeździ
|
||||||
// 70
|
// 70
|
||||||
if (TrainParams)
|
if (TrainParams)
|
||||||
if (TrainParams->CheckTrainLatency() < 5.0)
|
if (TrainParams->CheckTrainLatency() < 5.0)
|
||||||
if (TrainParams->TTVmax > 0.0)
|
if (TrainParams->TTVmax > 0.0)
|
||||||
VelDesired = Min0R(
|
VelDesired = Global::Min0RSpeed(
|
||||||
VelDesired,
|
VelDesired,
|
||||||
TrainParams
|
TrainParams
|
||||||
->TTVmax); // jesli nie spozniony to nie przekraczać rozkladowej
|
->TTVmax); // jesli nie spozniony to nie przekraczać rozkladowej
|
||||||
|
|||||||
Reference in New Issue
Block a user