mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 13:59:19 +02:00
Improve connect mode. If track is blocked by another train AI search bakcward for sign if before the another train is signal.
This commit is contained in:
@@ -695,6 +695,7 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
double a; // przyspieszenie
|
double a; // przyspieszenie
|
||||||
double v; // prędkość
|
double v; // prędkość
|
||||||
double d; // droga
|
double d; // droga
|
||||||
|
double d_to_next_sem = 10000.0; //ustaiwamy na pewno dalej niż widzi AI
|
||||||
TCommandType go = cm_Unknown;
|
TCommandType go = cm_Unknown;
|
||||||
eSignNext = NULL;
|
eSignNext = NULL;
|
||||||
int i, k = iLast - iFirst + 1;
|
int i, k = iLast - iFirst + 1;
|
||||||
@@ -1016,7 +1017,10 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
if (sSpeedTable[i].fDist < 0)
|
if (sSpeedTable[i].fDist < 0)
|
||||||
VelSignalLast = sSpeedTable[i].fVelNext; //minięty daje prędkość obowiązującą
|
VelSignalLast = sSpeedTable[i].fVelNext; //minięty daje prędkość obowiązującą
|
||||||
else
|
else
|
||||||
|
{
|
||||||
iDrivigFlags |= moveSemaphorFound; //jeśli z przodu to dajemy falgę, że jest
|
iDrivigFlags |= moveSemaphorFound; //jeśli z przodu to dajemy falgę, że jest
|
||||||
|
d_to_next_sem = Min0R(sSpeedTable[i].fDist, d_to_next_sem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (sSpeedTable[i].iFlags & spRoadVel)
|
else if (sSpeedTable[i].iFlags & spRoadVel)
|
||||||
{ // to W6
|
{ // to W6
|
||||||
@@ -1231,6 +1235,7 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
if (VelRoad >= 0.0)
|
if (VelRoad >= 0.0)
|
||||||
fVelDes = Min0R(fVelDes, VelRoad);
|
fVelDes = Min0R(fVelDes, VelRoad);
|
||||||
// nastepnego semafora albo zwrotnicy to uznajemy, że mijamy W5
|
// nastepnego semafora albo zwrotnicy to uznajemy, że mijamy W5
|
||||||
|
FirstSemaphorDist = d_to_next_sem; // przepisanie znalezionej wartosci do zmiennej
|
||||||
return go;
|
return go;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1291,6 +1296,7 @@ TController::TController(bool AI, TDynamicObject *NewControll, bool InitPsyche,
|
|||||||
HelpMeFlag = false;
|
HelpMeFlag = false;
|
||||||
// fProximityDist=1; //nie używane
|
// fProximityDist=1; //nie używane
|
||||||
ActualProximityDist = 1;
|
ActualProximityDist = 1;
|
||||||
|
FirstSemaphorDist = 10000.0;
|
||||||
vCommandLocation.x = 0;
|
vCommandLocation.x = 0;
|
||||||
vCommandLocation.y = 0;
|
vCommandLocation.y = 0;
|
||||||
vCommandLocation.z = 0;
|
vCommandLocation.z = 0;
|
||||||
@@ -3902,7 +3908,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 || pVehicles[0]->fTrackBlock > FirstSemaphorDist) :
|
||||||
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,
|
||||||
|
|||||||
1
Driver.h
1
Driver.h
@@ -242,6 +242,7 @@ class TController
|
|||||||
private:
|
private:
|
||||||
double fProximityDist; //odleglosc podawana w SetProximityVelocity(); >0:przeliczać do
|
double fProximityDist; //odleglosc podawana w SetProximityVelocity(); >0:przeliczać do
|
||||||
// punktu, <0:podana wartość
|
// punktu, <0:podana wartość
|
||||||
|
double FirstSemaphorDist; // odległość do pierwszego znalezionego semafora
|
||||||
public:
|
public:
|
||||||
double
|
double
|
||||||
ActualProximityDist; // odległość brana pod uwagę przy wyliczaniu prędkości i przyspieszenia
|
ActualProximityDist; // odległość brana pod uwagę przy wyliczaniu prędkości i przyspieszenia
|
||||||
|
|||||||
Reference in New Issue
Block a user