mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 15:09:19 +02:00
Dodane zapamiętywanie ograniczeń róznych typów i wybór z najmniejszego
This commit is contained in:
88
Driver.cpp
88
Driver.cpp
@@ -151,7 +151,7 @@ void TSpeedPos::CommandCheck()
|
|||||||
iFlags |= spSectionVel;
|
iFlags |= spSectionVel;
|
||||||
break;
|
break;
|
||||||
case cm_RoadVelocity:
|
case cm_RoadVelocity:
|
||||||
// prędkość drogowa (od tej pory będzie jako domyślna najwyższa
|
// prędkość drogowa (od tej pory będzie jako domyślna najwyższa)
|
||||||
fVelNext = value1;
|
fVelNext = value1;
|
||||||
iFlags |= spRoadVel;
|
iFlags |= spRoadVel;
|
||||||
break;
|
break;
|
||||||
@@ -162,10 +162,12 @@ void TSpeedPos::CommandCheck()
|
|||||||
fVelNext = 0.0; // TrainParams->IsStop()?0.0:-1.0; //na razie tak
|
fVelNext = 0.0; // TrainParams->IsStop()?0.0:-1.0; //na razie tak
|
||||||
iFlags |= spPassengerStopPoint; // niestety nie da się w tym miejscu współpracować z rozkładem
|
iFlags |= spPassengerStopPoint; // niestety nie da się w tym miejscu współpracować z rozkładem
|
||||||
break;
|
break;
|
||||||
case cm_SetProximityVelocity:
|
//case cm_SetProximityVelocity:
|
||||||
// ignorować
|
// // odcinek z ograniczeniem prędkości o podanej długości
|
||||||
fVelNext = -1;
|
// fVelNext = value1;
|
||||||
break;
|
// iFlags |= spProximityVelocity;
|
||||||
|
// fSectionVelocityDist = value2;
|
||||||
|
// break;
|
||||||
case cm_OutsideStation:
|
case cm_OutsideStation:
|
||||||
// w trybie manewrowym: skanować od niej wstecz i stanąć po wyjechaniu za sygnalizator i
|
// w trybie manewrowym: skanować od niej wstecz i stanąć po wyjechaniu za sygnalizator i
|
||||||
// zmienić kierunek
|
// zmienić kierunek
|
||||||
@@ -660,9 +662,9 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
~(moveTrackEnd | moveSwitchFound); // te flagi są ustawiane tutaj, w razie potrzeby
|
~(moveTrackEnd | moveSwitchFound); // te flagi są ustawiane tutaj, w razie potrzeby
|
||||||
for (i = iFirst; k > 0; --k, i = (i + 1) % iSpeedTableSize)
|
for (i = iFirst; k > 0; --k, i = (i + 1) % iSpeedTableSize)
|
||||||
{ // sprawdzenie rekordów od (iFirst) do (iLast), o ile są istotne
|
{ // sprawdzenie rekordów od (iFirst) do (iLast), o ile są istotne
|
||||||
if (sSpeedTable[i].iFlags & 1) // badanie istotności
|
if (sSpeedTable[i].iFlags & spEnabled) // badanie istotności
|
||||||
{ // o ile dana pozycja tabelki jest istotna
|
{ // o ile dana pozycja tabelki jest istotna
|
||||||
if (sSpeedTable[i].iFlags & 0x400)
|
if (sSpeedTable[i].iFlags & spPassengerStopPoint)
|
||||||
{ // jeśli przystanek, trzeba obsłużyć wg rozkładu
|
{ // jeśli przystanek, trzeba obsłużyć wg rozkładu
|
||||||
if (sSpeedTable[i].evEvent->CommandGet() != asNextStop)
|
if (sSpeedTable[i].evEvent->CommandGet() != asNextStop)
|
||||||
{ // jeśli nazwa nie jest zgodna
|
{ // jeśli nazwa nie jest zgodna
|
||||||
@@ -917,26 +919,27 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
} // koniec obsługi W4
|
} // koniec obsługi W4
|
||||||
v = sSpeedTable[i].fVelNext; // odczyt prędkości do zmiennej pomocniczej
|
v = sSpeedTable[i].fVelNext; // odczyt prędkości do zmiennej pomocniczej
|
||||||
if (sSpeedTable[i].iFlags &
|
if (sSpeedTable[i].iFlags &
|
||||||
8) // zwrotnice są usuwane z tabelki dopiero po zjechaniu z nich
|
spSwitch) // zwrotnice są usuwane z tabelki dopiero po zjechaniu z nich
|
||||||
iDrivigFlags |=
|
iDrivigFlags |=
|
||||||
moveSwitchFound; // rozjazd z przodu/pod ogranicza np. sens skanowania wstecz
|
moveSwitchFound; // rozjazd z przodu/pod ogranicza np. sens skanowania wstecz
|
||||||
else if (sSpeedTable[i].iFlags & 0x100) // W4 może się deaktywować
|
else if (sSpeedTable[i].iFlags & spEvent) // W4 może się deaktywować
|
||||||
{ // jeżeli event, może być potrzeba wysłania komendy, aby ruszył
|
{ // jeżeli event, może być potrzeba wysłania komendy, aby ruszył
|
||||||
if (sSpeedTable[i].iFlags & 0x2000)
|
//sprawdzanie eventów pasywnych miniętych
|
||||||
|
if (sSpeedTable[i].iFlags & spOutsideStation)
|
||||||
{ // jeśli W5, to reakcja zależna od trybu jazdy
|
{ // jeśli W5, to reakcja zależna od trybu jazdy
|
||||||
if (OrderCurrentGet() & Obey_train)
|
if (OrderCurrentGet() & Obey_train)
|
||||||
{ // w trybie pociągowym: można przyspieszyć do wskazanej prędkości (po
|
{ // w trybie pociągowym: można przyspieszyć do wskazanej prędkości (po
|
||||||
// zjechaniu z rozjazdów)
|
// zjechaniu z rozjazdów)
|
||||||
v = -1.0; // ignorować?
|
v = -1.0; // ignorować?
|
||||||
|
//TODO trzeba zmienić przypisywanie VelSignal na VelSignalLast
|
||||||
if (sSpeedTable[i].fDist < 0.0) // jeśli wskaźnik został minięty
|
if (sSpeedTable[i].fDist < 0.0) // jeśli wskaźnik został minięty
|
||||||
{
|
{
|
||||||
VelSignal = v; //!!! ustawienie, gdy przejechany jest lepsze niż wcale,
|
VelSignalLast = v; //ustawienie prędkości na -1
|
||||||
// ale to jeszcze nie to
|
|
||||||
// iStationStart=TrainParams->StationIndex; //zaktualizować
|
// iStationStart=TrainParams->StationIndex; //zaktualizować
|
||||||
// wyświetlanie rozkładu
|
// wyświetlanie rozkładu
|
||||||
}
|
}
|
||||||
else if (!(iDrivigFlags & moveSwitchFound)) // jeśli rozjazdy już minięte
|
else if (!(iDrivigFlags & moveSwitchFound)) // jeśli rozjazdy już minięte
|
||||||
VelSignal = v; //!!! to też koniec ograniczenia
|
VelSignalLast = v; //!!! to też koniec ograniczenia
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // w trybie manewrowym: skanować od niego wstecz, stanąć po wyjechaniu za
|
{ // w trybie manewrowym: skanować od niego wstecz, stanąć po wyjechaniu za
|
||||||
@@ -948,7 +951,7 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
// koniec toru)
|
// koniec toru)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sSpeedTable[i].iFlags & 0x800)
|
else if (sSpeedTable[i].iFlags & spStopOnSBL)
|
||||||
{ // jeśli S1 na SBL
|
{ // jeśli S1 na SBL
|
||||||
if (mvOccupied->Vel < 2.0) // stanąć nie musi, ale zwolnić przynajmniej
|
if (mvOccupied->Vel < 2.0) // stanąć nie musi, ale zwolnić przynajmniej
|
||||||
if (sSpeedTable[i].fDist < fMaxProximityDist) // jest w maksymalnym zasięgu
|
if (sSpeedTable[i].fDist < fMaxProximityDist) // jest w maksymalnym zasięgu
|
||||||
@@ -963,25 +966,43 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
// pociągu z przodu!
|
// pociągu z przodu!
|
||||||
}
|
}
|
||||||
if (eSignSkip != sSpeedTable[i].evEvent) // jeśli ten SBL nie jest do pominięcia
|
if (eSignSkip != sSpeedTable[i].evEvent) // jeśli ten SBL nie jest do pominięcia
|
||||||
|
// TODO sprawdzić do której zmiennej jest przypisywane v i zmienić to tutaj
|
||||||
v = sSpeedTable[i].evEvent->ValueGet(1); // to ma 0 odczytywać
|
v = sSpeedTable[i].evEvent->ValueGet(1); // to ma 0 odczytywać
|
||||||
}
|
}
|
||||||
|
else if (sSpeedTable[i].iFlags & spSemaphor)
|
||||||
|
{ // to semaphor
|
||||||
|
if (sSpeedTable[i].fDist < 0)
|
||||||
|
VelSignalLast = sSpeedTable[i].fVelNext; //minięty daje prędkość obowiązującą
|
||||||
|
}
|
||||||
|
else if (sSpeedTable[i].iFlags & spRoadVel)
|
||||||
|
{ // to W6
|
||||||
|
if (sSpeedTable[i].fDist < 0)
|
||||||
|
VelRoad = sSpeedTable[i].fVelNext;
|
||||||
|
}
|
||||||
|
else if (sSpeedTable[i].iFlags & spSectionVel)
|
||||||
|
{ // to W27
|
||||||
|
if (sSpeedTable[i].fDist < 0)
|
||||||
|
VelLimitLast = sSpeedTable[i].fVelNext;
|
||||||
|
}
|
||||||
|
|
||||||
|
//sprawdzenie eventów pasywnych przed nami
|
||||||
if ((mvOccupied->CategoryFlag & 1) ?
|
if ((mvOccupied->CategoryFlag & 1) ?
|
||||||
sSpeedTable[i].fDist > pVehicles[0]->fTrackBlock - 20.0 :
|
sSpeedTable[i].fDist > pVehicles[0]->fTrackBlock - 20.0 :
|
||||||
false) // jak sygnał jest dalej niż zawalidroga
|
false) // jak sygnał jest dalej niż zawalidroga
|
||||||
v = 0.0; // to może być podany dla tamtego: jechać tak, jakby tam stop był
|
v = 0.0; // to może być podany dla tamtego: jechać tak, jakby tam stop był
|
||||||
else
|
else
|
||||||
{ // zawalidrogi nie ma (albo pojazd jest samochodem), sprawdzić sygnał
|
{ // zawalidrogi nie ma (albo pojazd jest samochodem), sprawdzić sygnał
|
||||||
if (sSpeedTable[i].iFlags & 0x200) // jeśli Tm - w zasadzie to sprawdzić
|
if (sSpeedTable[i].iFlags & spShuntSemaphor) // jeśli Tm - w zasadzie to sprawdzić
|
||||||
// komendę!
|
// komendę!
|
||||||
{ // jeśli podana prędkość manewrowa
|
{ // jeśli podana prędkość manewrowa
|
||||||
if ((OrderCurrentGet() & Obey_train) ? v == 0.0 : false)
|
if ((OrderCurrentGet() & Obey_train) ? v == 0.0 : false)
|
||||||
{ // jeśli tryb pociągowy a tarcze ma ShuntVelocity 0 0
|
{ // jeśli tryb pociągowy a tarcze ma ShuntVelocity 0 0
|
||||||
v = -1; // ignorować, chyba że prędkość stanie się niezerowa
|
v = -1; // ignorować, chyba że prędkość stanie się niezerowa
|
||||||
if (sSpeedTable[i].iFlags & 0x20) // a jak przejechana
|
if (sSpeedTable[i].iFlags & spElapsed) // a jak przejechana
|
||||||
sSpeedTable[i].iFlags = 0; // to można usunąć, bo podstawowy automat
|
sSpeedTable[i].iFlags = 0; // to można usunąć, bo podstawowy automat
|
||||||
// usuwa tylko niezerowe
|
// usuwa tylko niezerowe
|
||||||
}
|
}
|
||||||
else if (go <= cm_Ready) // jeśli jeszcze nie ma komendy
|
else if (go == cm_Unknown) // jeśli jeszcze nie ma komendy
|
||||||
if (v != 0.0) // komenda jest tylko gdy ma jechać, bo stoi na podstawie
|
if (v != 0.0) // komenda jest tylko gdy ma jechać, bo stoi na podstawie
|
||||||
// tabelki
|
// tabelki
|
||||||
{ // jeśli nie było komendy wcześniej - pierwsza się liczy - ustawianie
|
{ // jeśli nie było komendy wcześniej - pierwsza się liczy - ustawianie
|
||||||
@@ -1002,9 +1023,8 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // if (sSpeedTable[i].iFlags&0x100) //jeśli semafor !!! Komendę trzeba
|
else //jeśli jakiś event pasywny ale nie tarcza manewrowa
|
||||||
// sprawdzić !!!!
|
if (go == cm_Unknown) // jeśli nie było komendy wcześniej - pierwsza się liczy
|
||||||
if (go <= cm_Ready) // jeśli nie było komendy wcześniej - pierwsza się liczy
|
|
||||||
// - ustawianie VelSignal
|
// - ustawianie VelSignal
|
||||||
if (v < 0.0 ? true : v >= 1.0) // bo wartość 0.1 służy do hamowania tylko
|
if (v < 0.0 ? true : v >= 1.0) // bo wartość 0.1 służy do hamowania tylko
|
||||||
{
|
{
|
||||||
@@ -1050,12 +1070,15 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
if (v >= 0.0)
|
if (v >= 0.0)
|
||||||
{ // pozycje z prędkością -1 można spokojnie pomijać
|
{ // pozycje z prędkością -1 można spokojnie pomijać
|
||||||
d = sSpeedTable[i].fDist;
|
d = sSpeedTable[i].fDist;
|
||||||
if ((sSpeedTable[i].iFlags & 0x20) ?
|
if ((sSpeedTable[i].iFlags & spElapsed) ?
|
||||||
false :
|
false :
|
||||||
d > 0.0) // sygnał lub ograniczenie z przodu (+32=przejechane)
|
d > 0.0) // sygnał lub ograniczenie z przodu (+32=przejechane)
|
||||||
{ // 2014-02: jeśli stoi, a ma do przejechania kawałek, to niech jedzie
|
{ // 2014-02: jeśli stoi, a ma do przejechania kawałek, to niech jedzie
|
||||||
if ((mvOccupied->Vel == 0.0) ?
|
if ((mvOccupied->Vel == 0.0) ?
|
||||||
((sSpeedTable[i].iFlags & 0x501) == 0x501) && (d > fMaxProximityDist) :
|
((sSpeedTable[i].iFlags &
|
||||||
|
(spEnabled | spEvent | spPassengerStopPoint)) ==
|
||||||
|
(spEnabled | spEvent | spPassengerStopPoint)) &&
|
||||||
|
(d > fMaxProximityDist) :
|
||||||
false)
|
false)
|
||||||
a = (iDrivigFlags & moveStopCloser) ? fAcc : 0.0; // ma podjechać bliżej -
|
a = (iDrivigFlags & moveStopCloser) ? fAcc : 0.0; // ma podjechać bliżej -
|
||||||
// czy na pewno w tym
|
// czy na pewno w tym
|
||||||
@@ -1069,7 +1092,7 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
fVelDes = v; // ograniczenie aktualnej prędkości
|
fVelDes = v; // ograniczenie aktualnej prędkości
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sSpeedTable[i].iFlags & 2) // jeśli tor
|
else if (sSpeedTable[i].iFlags & spTrack) // jeśli tor
|
||||||
{ // tor ogranicza prędkość, dopóki cały skład nie przejedzie,
|
{ // tor ogranicza prędkość, dopóki cały skład nie przejedzie,
|
||||||
// d=fLength+d; //zamiana na długość liczoną do przodu
|
// d=fLength+d; //zamiana na długość liczoną do przodu
|
||||||
if (v >= 1.0) // EU06 się zawieszało po dojechaniu na koniec toru postojowego
|
if (v >= 1.0) // EU06 się zawieszało po dojechaniu na koniec toru postojowego
|
||||||
@@ -1102,7 +1125,8 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
} // if (v>=0.0)
|
} // if (v>=0.0)
|
||||||
if (fNext >= 0.0)
|
if (fNext >= 0.0)
|
||||||
{ // jeśli ograniczenie
|
{ // jeśli ograniczenie
|
||||||
if ((sSpeedTable[i].iFlags & 0x101) == 0x101) // tylko sygnał przypisujemy
|
if ((sSpeedTable[i].iFlags & (spEnabled | spEvent)) ==
|
||||||
|
(spEnabled | spEvent)) // tylko sygnał przypisujemy
|
||||||
if (!eSignNext) // jeśli jeszcze nic nie zapisane tam
|
if (!eSignNext) // jeśli jeszcze nic nie zapisane tam
|
||||||
eSignNext = sSpeedTable[i].evEvent; // dla informacji
|
eSignNext = sSpeedTable[i].evEvent; // dla informacji
|
||||||
if (fNext == 0.0)
|
if (fNext == 0.0)
|
||||||
@@ -1110,6 +1134,12 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
}
|
}
|
||||||
} // if (sSpeedTable[i].iFlags&1)
|
} // if (sSpeedTable[i].iFlags&1)
|
||||||
} // for
|
} // for
|
||||||
|
if (fVelDes > VelSignalLast) //analiza spisanych z tabelki ograniczeń i nadpisanie aktualnego
|
||||||
|
fVelDes = VelSignalLast;
|
||||||
|
else if (fVelDes > VelLimitLast)
|
||||||
|
fVelDes = VelLimitLast;
|
||||||
|
else if (fVelDes > VelRoad)
|
||||||
|
fVelDes = VelRoad;
|
||||||
return go;
|
return go;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1175,6 +1205,9 @@ TController::TController(bool AI, TDynamicObject *NewControll, bool InitPsyche,
|
|||||||
VelSignal = 0.0; // normalnie na początku ma stać, no chyba że jedzie
|
VelSignal = 0.0; // normalnie na początku ma stać, no chyba że jedzie
|
||||||
VelLimit = -1.0; // brak ograniczenia prędkości
|
VelLimit = -1.0; // brak ograniczenia prędkości
|
||||||
VelNext = 120.0;
|
VelNext = 120.0;
|
||||||
|
VelLimitLast = -1.0; // ostatnie ograniczenie bez ograniczenia
|
||||||
|
VelSignalLast = -1.0; // ostatni semafor też bez ograniczenia
|
||||||
|
VelRoad = -1.0; // prędkość drogowa bez ograniczenia
|
||||||
AIControllFlag = AI;
|
AIControllFlag = AI;
|
||||||
pVehicle = NewControll;
|
pVehicle = NewControll;
|
||||||
ControllingSet(); // utworzenie połączenia do sterowanego pojazdu
|
ControllingSet(); // utworzenie połączenia do sterowanego pojazdu
|
||||||
@@ -3210,11 +3243,8 @@ bool TController::UpdateSituation(double dt)
|
|||||||
if (fMass > 1000000.0)
|
if (fMass > 1000000.0)
|
||||||
fBrakeDist *= 2.0; // korekta dla ciężkich, bo przeżynają - da to coś?
|
fBrakeDist *= 2.0; // korekta dla ciężkich, bo przeżynają - da to coś?
|
||||||
if (mvOccupied->BrakeDelayFlag == bdelay_G)
|
if (mvOccupied->BrakeDelayFlag == bdelay_G)
|
||||||
fBrakeDist =
|
fBrakeDist = fBrakeDist + 2 * mvOccupied->Vel; // dla nastawienia G
|
||||||
fBrakeDist +
|
// koniecznie należy wydłużyć drogę na czas reakcji
|
||||||
2 *
|
|
||||||
mvOccupied
|
|
||||||
->Vel; // dla nastawienia G koniecznie należy wydłużyć drogę na czas reakcji
|
|
||||||
// double scanmax=(mvOccupied->Vel>0.0)?3*fDriverDist+fBrakeDist:10.0*fDriverDist;
|
// double scanmax=(mvOccupied->Vel>0.0)?3*fDriverDist+fBrakeDist:10.0*fDriverDist;
|
||||||
double scanmax = (mvOccupied->Vel > 5.0) ?
|
double scanmax = (mvOccupied->Vel > 5.0) ?
|
||||||
400 + fBrakeDist :
|
400 + fBrakeDist :
|
||||||
|
|||||||
13
Driver.h
13
Driver.h
@@ -50,7 +50,11 @@ enum TMovementStatus
|
|||||||
moveGuardSignal = 0x8000, // sygnał od kierownika (minął czas postoju)
|
moveGuardSignal = 0x8000, // sygnał od kierownika (minął czas postoju)
|
||||||
moveVisibility = 0x10000, // jazda na widoczność po przejechaniu S1 na SBL
|
moveVisibility = 0x10000, // jazda na widoczność po przejechaniu S1 na SBL
|
||||||
moveDoorOpened = 0x20000, // drzwi zostały otwarte - doliczyć czas na zamknięcie
|
moveDoorOpened = 0x20000, // drzwi zostały otwarte - doliczyć czas na zamknięcie
|
||||||
movePushPull = 0x40000 // zmiana czoła przez zmianę kabiny - nie odczepiać przy zmianie kierunku
|
movePushPull = 0x40000, // zmiana czoła przez zmianę kabiny - nie odczepiać przy zmianie kierunku
|
||||||
|
moveSemaphorFound = 0x80000, // na drodze skanowania został znaleziony semafor
|
||||||
|
moveSemaphorWasElapsed = 0x100000, // minięty został semafor
|
||||||
|
moveTrainInsideStation = 0x200000, // pociąg między semaforem a rozjazdami lub następnym semaforem
|
||||||
|
moveSpeedLimitFound = 0x400000 // pociąg w ograniczeniu z podaną jego długością
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TStopReason
|
enum TStopReason
|
||||||
@@ -111,6 +115,7 @@ enum TSpeedPosFlag
|
|||||||
spSemaphor = 0x4000, // semafor pociągowy
|
spSemaphor = 0x4000, // semafor pociągowy
|
||||||
spRoadVel = 0x8000, // zadanie prędkości drogowej
|
spRoadVel = 0x8000, // zadanie prędkości drogowej
|
||||||
spSectionVel = 0x20000, // odcinek z ograniczeniem
|
spSectionVel = 0x20000, // odcinek z ograniczeniem
|
||||||
|
// spProximityVelocity = 0x40000, // odcinek z ograniczeniem i podaną jego długościa
|
||||||
spEndOfTable = 0x10000 // zatkanie tabelki
|
spEndOfTable = 0x10000 // zatkanie tabelki
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -119,6 +124,7 @@ class TSpeedPos
|
|||||||
public:
|
public:
|
||||||
double fDist; // aktualna odległość (ujemna gdy minięte)
|
double fDist; // aktualna odległość (ujemna gdy minięte)
|
||||||
double fVelNext; // prędkość obowiązująca od tego miejsca
|
double fVelNext; // prędkość obowiązująca od tego miejsca
|
||||||
|
double fSectionVelocityDist; //długość ograniczenia prędkości
|
||||||
// double fAcc;
|
// double fAcc;
|
||||||
int iFlags; //flagi typu wpisu do tabelki
|
int iFlags; //flagi typu wpisu do tabelki
|
||||||
// 1=istotny,2=tor,4=odwrotnie,8-zwrotnica (może się zmienić),16-stan
|
// 1=istotny,2=tor,4=odwrotnie,8-zwrotnica (może się zmienić),16-stan
|
||||||
@@ -224,8 +230,11 @@ class TController
|
|||||||
private:
|
private:
|
||||||
double VelforDriver; // prędkość, używana przy zmianie kierunku (ograniczenie przy nieznajmości
|
double VelforDriver; // prędkość, używana przy zmianie kierunku (ograniczenie przy nieznajmości
|
||||||
// szlaku?)
|
// szlaku?)
|
||||||
double VelSignal; // predkość zadawana przez semafor (funkcją SetVelocity())
|
double VelSignal; // ograniczenie prędkości z kompilacji znaków i sygnałów
|
||||||
double VelLimit; // predkość zadawana przez event jednokierunkowego ograniczenia prędkości
|
double VelLimit; // predkość zadawana przez event jednokierunkowego ograniczenia prędkości
|
||||||
|
double VelSignalLast; // prędkość zadana na ostatnim semaforze
|
||||||
|
double VelLimitLast; // prędkość zadana przez ograniczenie
|
||||||
|
double VelRoad; // aktualna prędkość drogowa (ze znaku W27)
|
||||||
// (PutValues albo komendą)
|
// (PutValues albo komendą)
|
||||||
public:
|
public:
|
||||||
double VelNext; // prędkość, jaka ma być po przejechaniu długości ProximityDist
|
double VelNext; // prędkość, jaka ma być po przejechaniu długości ProximityDist
|
||||||
|
|||||||
10
Event.cpp
10
Event.cpp
@@ -353,11 +353,11 @@ void TEvent::Load(cParser *parser, vector3 *org)
|
|||||||
bEnabled = false;
|
bEnabled = false;
|
||||||
Params[6].asCommand = cm_ShuntVelocity;
|
Params[6].asCommand = cm_ShuntVelocity;
|
||||||
}
|
}
|
||||||
else if (str == "SetProximityVelocity")
|
//else if (str == "SetProximityVelocity")
|
||||||
{
|
//{
|
||||||
bEnabled = false;
|
// bEnabled = false;
|
||||||
Params[6].asCommand = cm_SetProximityVelocity;
|
// Params[6].asCommand = cm_SetProximityVelocity;
|
||||||
}
|
//}
|
||||||
else if (str == "OutsideStation")
|
else if (str == "OutsideStation")
|
||||||
{
|
{
|
||||||
bEnabled = false; // ma byæ skanowny, aby AI nie przekracza³o W5
|
bEnabled = false; // ma byæ skanowny, aby AI nie przekracza³o W5
|
||||||
|
|||||||
Reference in New Issue
Block a user