mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 13:59:19 +02:00
train timetable rewind fix
This commit is contained in:
80
Driver.cpp
80
Driver.cpp
@@ -815,8 +815,10 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
{
|
{
|
||||||
// porównuje do następnej stacji, więc trzeba przewinąć do poprzedniej
|
// porównuje do następnej stacji, więc trzeba przewinąć do poprzedniej
|
||||||
// nastepnie ustawić następną na aktualną tak żeby prawidłowo ją obsłużył w następnym kroku
|
// nastepnie ustawić następną na aktualną tak żeby prawidłowo ją obsłużył w następnym kroku
|
||||||
TrainParams->RewindTimeTable(sSpeedTable[i].evEvent->CommandGet());
|
if( true == TrainParams->RewindTimeTable( sSpeedTable[ i ].evEvent->CommandGet() ) ) {
|
||||||
asNextStop = TrainParams->NextStop();
|
asNextStop = TrainParams->NextStop();
|
||||||
|
iStationStart = TrainParams->StationIndex;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if( sSpeedTable[ i ].fDist < -fLength ) {
|
else if( sSpeedTable[ i ].fDist < -fLength ) {
|
||||||
// jeśli został przejechany
|
// jeśli został przejechany
|
||||||
@@ -996,13 +998,13 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
|
|||||||
#endif
|
#endif
|
||||||
asNextStop = TrainParams->NextStop(); // informacja o końcu trasy
|
asNextStop = TrainParams->NextStop(); // informacja o końcu trasy
|
||||||
TrainParams->NewName("none"); // czyszczenie nieaktualnego rozkładu
|
TrainParams->NewName("none"); // czyszczenie nieaktualnego rozkładu
|
||||||
// TableClear(); //aby od nowa sprawdziło W4 z inną nazwą już - to
|
// ma nie podjeżdżać pod W4 i ma je pomijać
|
||||||
// nie jest dobry pomysł
|
iDrivigFlags &= ~( moveStopCloser );
|
||||||
iDrivigFlags &=
|
if( false == TestFlag( iDrivigFlags, movePushPull ) ) {
|
||||||
~(moveStopCloser |
|
// if the consist can change direction through a simple cab change it doesn't need fiddling with recognition of passenger stops
|
||||||
moveStopPoint); // ma nie podjeżdżać pod W4 i ma je pomijać
|
iDrivigFlags &= ~( moveStopPoint );
|
||||||
sSpeedTable[i].iFlags =
|
}
|
||||||
0; // W4 nie liczy się już (nie wyśle SetVelocity)
|
sSpeedTable[i].iFlags = 0; // W4 nie liczy się już (nie wyśle SetVelocity)
|
||||||
sSpeedTable[i].fVelNext = -1; // można jechać za W4
|
sSpeedTable[i].fVelNext = -1; // można jechać za W4
|
||||||
fLastStopExpDist = -1.0f; // nie ma rozkładu, nie ma usuwania stacji
|
fLastStopExpDist = -1.0f; // nie ma rozkładu, nie ma usuwania stacji
|
||||||
WaitingSet(60); // tak ze 2 minuty, aż wszyscy wysiądą
|
WaitingSet(60); // tak ze 2 minuty, aż wszyscy wysiądą
|
||||||
@@ -3271,8 +3273,7 @@ bool TController::PutCommand( std::string NewCommand, double NewValue1, double N
|
|||||||
// CheckVehicles(); //sprawdzenie składu, AI zapali światła
|
// CheckVehicles(); //sprawdzenie składu, AI zapali światła
|
||||||
TableClear(); // wyczyszczenie tabelki prędkości, bo na nowo trzeba określić kierunek i
|
TableClear(); // wyczyszczenie tabelki prędkości, bo na nowo trzeba określić kierunek i
|
||||||
// sprawdzić przystanki
|
// sprawdzić przystanki
|
||||||
OrdersInit(
|
OrdersInit(fabs(NewValue1)); // ustalenie tabelki komend wg rozkładu oraz prędkości początkowej
|
||||||
fabs(NewValue1)); // ustalenie tabelki komend wg rozkładu oraz prędkości początkowej
|
|
||||||
// if (NewValue1!=0.0) if (!AIControllFlag) DirectionForward(NewValue1>0.0); //ustawienie
|
// if (NewValue1!=0.0) if (!AIControllFlag) DirectionForward(NewValue1>0.0); //ustawienie
|
||||||
// nawrotnika użytkownikowi (propaguje się do członów)
|
// nawrotnika użytkownikowi (propaguje się do członów)
|
||||||
// if (NewValue1>0)
|
// if (NewValue1>0)
|
||||||
@@ -5375,8 +5376,6 @@ inline TOrders TController::OrderNextGet()
|
|||||||
void TController::OrdersInit(double fVel)
|
void TController::OrdersInit(double fVel)
|
||||||
{ // wypełnianie tabelki rozkazów na podstawie rozkładu
|
{ // wypełnianie tabelki rozkazów na podstawie rozkładu
|
||||||
// ustawienie kolejności komend, niezależnie kto prowadzi
|
// ustawienie kolejności komend, niezależnie kto prowadzi
|
||||||
// Mechanik->OrderPush(Wait_for_orders); //czekanie na lepsze czasy
|
|
||||||
// OrderPos=OrderTop=0; //wypełniamy od pozycji 0
|
|
||||||
OrdersClear(); // usunięcie poprzedniej tabeli
|
OrdersClear(); // usunięcie poprzedniej tabeli
|
||||||
OrderPush(Prepare_engine); // najpierw odpalenie silnika
|
OrderPush(Prepare_engine); // najpierw odpalenie silnika
|
||||||
if (TrainParams->TrainName == "none")
|
if (TrainParams->TrainName == "none")
|
||||||
@@ -5390,16 +5389,14 @@ void TController::OrdersInit(double fVel)
|
|||||||
OrderPush(Shunt); // dla prędkości 0.01 włączamy jazdę manewrową
|
OrderPush(Shunt); // dla prędkości 0.01 włączamy jazdę manewrową
|
||||||
else if (TrainParams ?
|
else if (TrainParams ?
|
||||||
(TrainParams->DirectionChange() ? // jeśli obrót na pierwszym przystanku
|
(TrainParams->DirectionChange() ? // jeśli obrót na pierwszym przystanku
|
||||||
((iDrivigFlags &
|
((iDrivigFlags & movePushPull) ? // SZT również! SN61 zależnie od wagonów...
|
||||||
movePushPull) ? // SZT również! SN61 zależnie od wagonów...
|
|
||||||
(TrainParams->TimeTable[1].StationName == TrainParams->Relation1) :
|
(TrainParams->TimeTable[1].StationName == TrainParams->Relation1) :
|
||||||
false) :
|
false) :
|
||||||
false) :
|
false) :
|
||||||
true)
|
true)
|
||||||
OrderPush(Shunt); // a teraz start będzie w manewrowym, a tryb pociągowy włączy W4
|
OrderPush(Shunt); // a teraz start będzie w manewrowym, a tryb pociągowy włączy W4
|
||||||
else
|
else
|
||||||
// jeśli start z pierwszej stacji i jednocześnie jest na niej zmiana kierunku, to EZT ma
|
// jeśli start z pierwszej stacji i jednocześnie jest na niej zmiana kierunku, to EZT ma mieć Shunt
|
||||||
// mieć Shunt
|
|
||||||
OrderPush(Obey_train); // dla starych scenerii start w trybie pociagowym
|
OrderPush(Obey_train); // dla starych scenerii start w trybie pociagowym
|
||||||
if (DebugModeFlag) // normalnie nie ma po co tego wypisywać
|
if (DebugModeFlag) // normalnie nie ma po co tego wypisywać
|
||||||
WriteLog("/* Timetable: " + TrainParams->ShowRelation());
|
WriteLog("/* Timetable: " + TrainParams->ShowRelation());
|
||||||
@@ -5407,10 +5404,14 @@ void TController::OrdersInit(double fVel)
|
|||||||
for (int i = 0; i <= TrainParams->StationCount; ++i)
|
for (int i = 0; i <= TrainParams->StationCount; ++i)
|
||||||
{
|
{
|
||||||
t = TrainParams->TimeTable + i;
|
t = TrainParams->TimeTable + i;
|
||||||
if (DebugModeFlag) // normalnie nie ma po co tego wypisywa?
|
if (DebugModeFlag) {
|
||||||
WriteLog(t->StationName + " " + std::to_string(t->Ah) + ":" +
|
// normalnie nie ma po co tego wypisywa?
|
||||||
std::to_string(t->Am) + ", " + std::to_string(t->Dh) + ":" +
|
WriteLog(
|
||||||
std::to_string(t->Dm) + " " + t->StationWare);
|
t->StationName
|
||||||
|
+ " " + std::to_string(t->Ah) + ":" + std::to_string(t->Am)
|
||||||
|
+ ", " + std::to_string(t->Dh) + ":" + std::to_string(t->Dm)
|
||||||
|
+ " " + t->StationWare);
|
||||||
|
}
|
||||||
if (t->StationWare.find('@') != std::string::npos)
|
if (t->StationWare.find('@') != std::string::npos)
|
||||||
{ // zmiana kierunku i dalsza jazda wg rozk?adu
|
{ // zmiana kierunku i dalsza jazda wg rozk?adu
|
||||||
if (iDrivigFlags & movePushPull) // SZT również! SN61 zależnie od wagonów...
|
if (iDrivigFlags & movePushPull) // SZT również! SN61 zależnie od wagonów...
|
||||||
@@ -5421,33 +5422,34 @@ void TController::OrdersInit(double fVel)
|
|||||||
{ // dla zwykłego składu wagonowego odczepiamy lokomotywę
|
{ // dla zwykłego składu wagonowego odczepiamy lokomotywę
|
||||||
OrderPush(Disconnect); // odczepienie lokomotywy
|
OrderPush(Disconnect); // odczepienie lokomotywy
|
||||||
OrderPush(Shunt); // a dalej manewry
|
OrderPush(Shunt); // a dalej manewry
|
||||||
if (i <= TrainParams->StationCount) // 130827: to się jednak nie sprawdza
|
|
||||||
{ //"@" na ostatniej robi tylko odpięcie
|
|
||||||
// OrderPush(Change_direction); //zmiana kierunku
|
|
||||||
// OrderPush(Shunt); //jazda na drugą stronę składu
|
|
||||||
// OrderPush(Change_direction); //zmiana kierunku
|
|
||||||
// OrderPush(Connect); //jazda pod wagony
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (i < TrainParams->StationCount) // jak nie ostatnia stacja
|
if (i < TrainParams->StationCount) // jak nie ostatnia stacja
|
||||||
OrderPush(Obey_train); // to dalej wg rozkładu
|
OrderPush(Obey_train); // to dalej wg rozkładu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (DebugModeFlag) // normalnie nie ma po co tego wypisywać
|
if( DebugModeFlag ) {
|
||||||
WriteLog("*/");
|
// normalnie nie ma po co tego wypisywać
|
||||||
|
WriteLog( "*/" );
|
||||||
|
}
|
||||||
OrderPush(Shunt); // po wykonaniu rozkładu przełączy się na manewry
|
OrderPush(Shunt); // po wykonaniu rozkładu przełączy się na manewry
|
||||||
}
|
}
|
||||||
// McZapkie-100302 - to ma byc wyzwalane ze scenerii
|
// McZapkie-100302 - to ma byc wyzwalane ze scenerii
|
||||||
if (fVel == 0.0)
|
if( fVel == 0.0 ) {
|
||||||
SetVelocity(0, 0, stopSleep); // jeśli nie ma prędkości początkowej, to śpi
|
// jeśli nie ma prędkości początkowej, to śpi
|
||||||
else
|
SetVelocity( 0, 0, stopSleep );
|
||||||
{ // jeśli podana niezerowa prędkość
|
}
|
||||||
if ((fVel >= 1.0) ||
|
else {
|
||||||
(fVel < 0.02)) // jeśli ma jechać - dla 0.01 ma podjechać manewrowo po podaniu sygnału
|
// jeśli podana niezerowa prędkość
|
||||||
iDrivigFlags = (iDrivigFlags & ~moveStopHere) |
|
if( ( fVel >= 1.0 )
|
||||||
moveStopCloser; // to do następnego W4 ma podjechać blisko
|
|| ( fVel < 0.02 ) ) {
|
||||||
else
|
// jeśli ma jechać - dla 0.01 ma podjechać manewrowo po podaniu sygnału
|
||||||
iDrivigFlags |= moveStopHere; // czekać na sygnał
|
// to do następnego W4 ma podjechać blisko
|
||||||
|
iDrivigFlags = ( iDrivigFlags & ~( moveStopHere ) ) | moveStopCloser;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// czekać na sygnał
|
||||||
|
iDrivigFlags |= moveStopHere;
|
||||||
|
}
|
||||||
JumpToFirstOrder();
|
JumpToFirstOrder();
|
||||||
if (fVel >= 1.0) // jeśli ma jechać
|
if (fVel >= 1.0) // jeśli ma jechać
|
||||||
SetVelocity(fVel, -1); // ma ustawić żądaną prędkość
|
SetVelocity(fVel, -1); // ma ustawić żądaną prędkość
|
||||||
|
|||||||
@@ -1479,6 +1479,7 @@ void TMoverParameters::compute_movement_( double const Deltatime ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// uklady hamulcowe:
|
// uklady hamulcowe:
|
||||||
|
ConverterCheck( Deltatime );
|
||||||
if (VeselVolume > 0)
|
if (VeselVolume > 0)
|
||||||
Compressor = CompressedVolume / VeselVolume;
|
Compressor = CompressedVolume / VeselVolume;
|
||||||
else
|
else
|
||||||
@@ -1486,7 +1487,6 @@ void TMoverParameters::compute_movement_( double const Deltatime ) {
|
|||||||
Compressor = 0;
|
Compressor = 0;
|
||||||
CompressorFlag = false;
|
CompressorFlag = false;
|
||||||
};
|
};
|
||||||
ConverterCheck(Deltatime);
|
|
||||||
if( CompressorSpeed > 0.0 ) {
|
if( CompressorSpeed > 0.0 ) {
|
||||||
// sprężarka musi mieć jakąś niezerową wydajność żeby rozważać jej załączenie i pracę
|
// sprężarka musi mieć jakąś niezerową wydajność żeby rozważać jej załączenie i pracę
|
||||||
CompressorCheck( Deltatime );
|
CompressorCheck( Deltatime );
|
||||||
@@ -3791,17 +3791,12 @@ void TMoverParameters::UpdateScndPipePressure(double dt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Pipe2->Flow(Hamulec->GetHPFlow(ScndPipePress, dt));
|
Pipe2->Flow(Hamulec->GetHPFlow(ScndPipePress, dt));
|
||||||
/*
|
|
||||||
// NOTE: condition disabled to allow the air flow from the main hose to the main tank as well
|
// NOTE: condition disabled to allow the air flow from the main hose to the main tank as well
|
||||||
if (((Compressor > ScndPipePress) && (CompressorSpeed > 0.0001)) || (TrainType == dt_EZT))
|
if( /* ( ( Compressor > ScndPipePress ) && ( */ VeselVolume > 0.0 /* ) ) || ( TrainType == dt_EZT ) || ( TrainType == dt_DMU ) */ ) {
|
||||||
{
|
|
||||||
*/
|
|
||||||
dV = PF(Compressor, ScndPipePress, Spz) * dt;
|
dV = PF(Compressor, ScndPipePress, Spz) * dt;
|
||||||
CompressedVolume += dV / 1000.0;
|
CompressedVolume += dV / 1000.0;
|
||||||
Pipe2->Flow(-dV);
|
Pipe2->Flow(-dV);
|
||||||
/*
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
Pipe2->Flow(dv1 + dv2);
|
Pipe2->Flow(dv1 + dv2);
|
||||||
Pipe2->Act();
|
Pipe2->Act();
|
||||||
ScndPipePress = Pipe2->P();
|
ScndPipePress = Pipe2->P();
|
||||||
@@ -8864,8 +8859,9 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
|||||||
WriteLog( "Ready to depart" );
|
WriteLog( "Ready to depart" );
|
||||||
CompressedVolume = VeselVolume * MinCompressor * ( 9.8 ) / 10.0;
|
CompressedVolume = VeselVolume * MinCompressor * ( 9.8 ) / 10.0;
|
||||||
ScndPipePress = (
|
ScndPipePress = (
|
||||||
VeselVolume > 0.0 ?
|
VeselVolume > 0.0 ? CompressedVolume / VeselVolume :
|
||||||
CompressedVolume / VeselVolume :
|
( Couplers[ side::front ].AllowedFlag & coupling::mainhose ) != 0 ? 5.0 :
|
||||||
|
( Couplers[ side::rear ].AllowedFlag & coupling::mainhose ) != 0 ? 5.0 :
|
||||||
0.0 );
|
0.0 );
|
||||||
PipePress = CntrlPipePress;
|
PipePress = CntrlPipePress;
|
||||||
BrakePress = 0.0;
|
BrakePress = 0.0;
|
||||||
@@ -8889,7 +8885,14 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
|||||||
WriteLog( "Braked" );
|
WriteLog( "Braked" );
|
||||||
Volume = BrakeVVolume * MaxBrakePress[ 3 ];
|
Volume = BrakeVVolume * MaxBrakePress[ 3 ];
|
||||||
CompressedVolume = VeselVolume * MinCompressor * 0.55;
|
CompressedVolume = VeselVolume * MinCompressor * 0.55;
|
||||||
|
/*
|
||||||
ScndPipePress = 5.1;
|
ScndPipePress = 5.1;
|
||||||
|
*/
|
||||||
|
ScndPipePress = (
|
||||||
|
VeselVolume > 0.0 ? CompressedVolume / VeselVolume :
|
||||||
|
( Couplers[ side::front ].AllowedFlag & coupling::mainhose ) != 0 ? 5.1 :
|
||||||
|
( Couplers[ side::rear ].AllowedFlag & coupling::mainhose ) != 0 ? 5.1 :
|
||||||
|
0.0 );
|
||||||
PipePress = LowPipePress;
|
PipePress = LowPipePress;
|
||||||
PipeBrakePress = MaxBrakePress[ 3 ] * 0.5;
|
PipeBrakePress = MaxBrakePress[ 3 ] * 0.5;
|
||||||
BrakePress = MaxBrakePress[ 3 ] * 0.5;
|
BrakePress = MaxBrakePress[ 3 ] * 0.5;
|
||||||
@@ -8957,9 +8960,9 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
|||||||
CompressorPower = 0;
|
CompressorPower = 0;
|
||||||
|
|
||||||
Hamulec->Init(PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
Hamulec->Init(PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag);
|
||||||
|
/*
|
||||||
ScndPipePress = Compressor;
|
ScndPipePress = Compressor;
|
||||||
|
*/
|
||||||
// WriteLogSS("OK=", BoolTo10(OK));
|
// WriteLogSS("OK=", BoolTo10(OK));
|
||||||
// WriteLog("");
|
// WriteLog("");
|
||||||
|
|
||||||
|
|||||||
55
mtable.cpp
55
mtable.cpp
@@ -83,8 +83,7 @@ bool TTrainParameters::UpdateMTable(double hh, double mm, std::string const &New
|
|||||||
{
|
{
|
||||||
if (NewName == NextStationName) // jeśli dojechane do następnego
|
if (NewName == NextStationName) // jeśli dojechane do następnego
|
||||||
{ // Ra: wywołanie może być powtarzane, jak stoi na W4
|
{ // Ra: wywołanie może być powtarzane, jak stoi na W4
|
||||||
if (TimeTable[StationIndex + 1].km - TimeTable[StationIndex].km <
|
if (TimeTable[StationIndex + 1].km - TimeTable[StationIndex].km < 0) // to jest bez sensu
|
||||||
0) // to jest bez sensu
|
|
||||||
Direction = -1;
|
Direction = -1;
|
||||||
else
|
else
|
||||||
Direction = 1; // prowizorka bo moze byc zmiana kilometrazu
|
Direction = 1; // prowizorka bo moze byc zmiana kilometrazu
|
||||||
@@ -92,46 +91,40 @@ bool TTrainParameters::UpdateMTable(double hh, double mm, std::string const &New
|
|||||||
LastStationLatency =
|
LastStationLatency =
|
||||||
CompareTime(hh, mm, TimeTable[StationIndex].Dh, TimeTable[StationIndex].Dm);
|
CompareTime(hh, mm, TimeTable[StationIndex].Dh, TimeTable[StationIndex].Dm);
|
||||||
// inc(StationIndex); //przejście do następnej pozycji StationIndex<=StationCount
|
// inc(StationIndex); //przejście do następnej pozycji StationIndex<=StationCount
|
||||||
if (StationIndex <
|
// Ra: "<", bo dodaje 1 przy przejściu do następnej stacji
|
||||||
StationCount) // Ra: "<", bo dodaje 1 przy przejściu do następnej stacji
|
if (StationIndex < StationCount) {
|
||||||
{ // jeśli nie ostatnia stacja
|
// jeśli nie ostatnia stacja
|
||||||
NextStationName = TimeTable[StationIndex + 1].StationName; // zapamiętanie nazwy
|
NextStationName = TimeTable[StationIndex + 1].StationName; // zapamiętanie nazwy
|
||||||
TTVmax = TimeTable[StationIndex + 1]
|
// Ra: nowa prędkość rozkładowa na kolejnym odcinku
|
||||||
.vmax; // Ra: nowa prędkość rozkładowa na kolejnym odcinku
|
TTVmax = TimeTable[StationIndex + 1].vmax;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// gdy ostatnia stacja, nie ma następnej stacji
|
||||||
|
NextStationName = "";
|
||||||
}
|
}
|
||||||
else // gdy ostatnia stacja
|
|
||||||
NextStationName = ""; // nie ma następnej stacji
|
|
||||||
OK = true;
|
OK = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return OK; /*czy jest nastepna stacja*/
|
return OK; /*czy jest nastepna stacja*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mtable::TTrainParameters::RewindTimeTable(std::string actualStationName)
|
bool Mtable::TTrainParameters::RewindTimeTable(std::string actualStationName) {
|
||||||
{
|
|
||||||
//actualStationName = ToLower(actualStationName); // na małe znaki
|
if( actualStationName.compare( 0, 19, "PassengerStopPoint:" ) == 0 ) {
|
||||||
if (int s = actualStationName.find("PassengerStopPoint:") != std::string::npos)
|
actualStationName = ToLower( actualStationName.substr( 19 ) );
|
||||||
{
|
|
||||||
actualStationName = ToLower(actualStationName.substr(s + 19));
|
|
||||||
}
|
}
|
||||||
for (int i = 1; i <= StationCount; i++)
|
for( auto i = 1; i <= StationCount; ++i ) {
|
||||||
{ // przechodzimy po całej tabelce i sprawdzamy nazwy stacji (bez pierwszej)
|
// przechodzimy po całej tabelce i sprawdzamy nazwy stacji (bez pierwszej)
|
||||||
if (ToLower(TimeTable[i].StationName) == actualStationName)
|
if (ToLower(TimeTable[i].StationName) == actualStationName) {
|
||||||
{ // nazwa stacji zgodna
|
// nazwa stacji zgodna więc ustawiamy na poprzednią, żeby w następnym kroku poprawnie obsłużyć
|
||||||
// więc ustawiamy na poprzednią, żeby w następnym kroku poprawnie obsłużyć
|
StationIndex = i;
|
||||||
StationIndex = i - 1;
|
NextStationName = TimeTable[ i ].StationName;
|
||||||
if (StationIndex <
|
TTVmax = TimeTable[ i ].vmax;
|
||||||
StationCount) // Ra: "<", bo dodaje 1 przy przejściu do następnej stacji
|
return true; // znaleźliśmy więc kończymy
|
||||||
{ // jeśli nie ostatnia stacja
|
|
||||||
NextStationName = TimeTable[StationIndex + 1].StationName; // zapamiętanie nazwy
|
|
||||||
TTVmax = TimeTable[StationIndex + 1]
|
|
||||||
.vmax; // Ra: nowa prędkość rozkładowa na kolejnym odcinku
|
|
||||||
}
|
|
||||||
else // gdy ostatnia stacja
|
|
||||||
NextStationName = ""; // nie ma następnej stacji
|
|
||||||
break; // znaleźliśmy więc kończymy
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// failed to find a match
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTrainParameters::StationIndexInc()
|
void TTrainParameters::StationIndexInc()
|
||||||
|
|||||||
2
mtable.h
2
mtable.h
@@ -77,7 +77,7 @@ class TTrainParameters
|
|||||||
bool IsTimeToGo(double hh, double mm);
|
bool IsTimeToGo(double hh, double mm);
|
||||||
bool UpdateMTable(double hh, double mm, std::string const &NewName);
|
bool UpdateMTable(double hh, double mm, std::string const &NewName);
|
||||||
bool UpdateMTable( simulation_time const &Time, std::string const &NewName );
|
bool UpdateMTable( simulation_time const &Time, std::string const &NewName );
|
||||||
void RewindTimeTable( std::string actualStationName );
|
bool RewindTimeTable( std::string actualStationName );
|
||||||
TTrainParameters( std::string const &NewTrainName );
|
TTrainParameters( std::string const &NewTrainName );
|
||||||
void NewName(std::string const &NewTrainName);
|
void NewName(std::string const &NewTrainName);
|
||||||
void UpdateVelocity(int StationCount, double vActual);
|
void UpdateVelocity(int StationCount, double vActual);
|
||||||
|
|||||||
Reference in New Issue
Block a user