mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 16:19:19 +02:00
Repair bug in clearing table after switch changing.
This commit is contained in:
24
Driver.cpp
24
Driver.cpp
@@ -610,18 +610,22 @@ void TController::TableCheck(double fDistance)
|
|||||||
{
|
{
|
||||||
if (sSpeedTable[i].Update(&pos, &dir, len))
|
if (sSpeedTable[i].Update(&pos, &dir, len))
|
||||||
{
|
{
|
||||||
WriteLog("TableCheck: Przestawiona zwrotnica. Kasowanie tableki.");
|
WriteLog("TableCheck: Switch change. Delete next entries. (" +
|
||||||
|
sSpeedTable[i].trTrack->NameGet() + ")");
|
||||||
int k = (iLast + 1) % iSpeedTableSize; // skanujemy razem z ostatnią pozycją
|
int k = (iLast + 1) % iSpeedTableSize; // skanujemy razem z ostatnią pozycją
|
||||||
for (int j = (i+1) % iSpeedTableSize; j != k; j = (j + 1) % iSpeedTableSize)
|
for (int j = (i+1) % iSpeedTableSize; j != k; j = (j + 1) % iSpeedTableSize)
|
||||||
{ // kasowanie wszystkich rekordów za zmienioną zwrotnicą
|
{ // kasowanie wszystkich rekordów za zmienioną zwrotnicą
|
||||||
//if (sSpeedTable[j].iFlags & spTrack)
|
if (sSpeedTable[j].iFlags & spTrack)
|
||||||
// WriteLog("TableCheck: Switch change. Delete from table: " + sSpeedTable[j].trTrack->NameGet());
|
WriteLog("TableCheck: Delete from table: " + sSpeedTable[j].trTrack->NameGet());
|
||||||
//else if (sSpeedTable[j].iFlags & spEvent)
|
else if (sSpeedTable[j].iFlags & spEvent)
|
||||||
// WriteLog("TableCheck: Switch change. Delete from table: " + sSpeedTable[j].evEvent->asName);
|
WriteLog("TableCheck: Delete from table: " + sSpeedTable[j].evEvent->asName);
|
||||||
sSpeedTable[j].iFlags = 0;
|
sSpeedTable[j].iFlags = 0;
|
||||||
}
|
}
|
||||||
WriteLog("TableCheck: Kasowanie tableki OK.");
|
WriteLog("TableCheck: Delete entries OK.");
|
||||||
TablePurger();
|
if (sSpeedTable[i].iFlags & spTrack)
|
||||||
|
WriteLog("TableCheck: New last element: " + sSpeedTable[i].trTrack->NameGet());
|
||||||
|
else if (sSpeedTable[i].iFlags & spEvent)
|
||||||
|
WriteLog("TableCheck: New last element: " + sSpeedTable[i].evEvent->asName);
|
||||||
iLast = i; // pokazujemy gdzie jest ostatni kawałek
|
iLast = i; // pokazujemy gdzie jest ostatni kawałek
|
||||||
break; // nie kontynuujemy pętli, trzeba doskanować ciąg dalszy
|
break; // nie kontynuujemy pętli, trzeba doskanować ciąg dalszy
|
||||||
}
|
}
|
||||||
@@ -629,7 +633,7 @@ void TController::TableCheck(double fDistance)
|
|||||||
{
|
{
|
||||||
if (sSpeedTable[i].fDist < -fLength) // a skład wyjechał całą długością poza
|
if (sSpeedTable[i].fDist < -fLength) // a skład wyjechał całą długością poza
|
||||||
{ // degradacja pozycji
|
{ // degradacja pozycji
|
||||||
WriteLog( "TableCheck: Track is behind. Delete from table: " + sSpeedTable[i].trTrack->NameGet());
|
// WriteLog( "TableCheck: Track is behind. Delete from table: " + sSpeedTable[i].trTrack->NameGet());
|
||||||
sSpeedTable[i].iFlags &= ~spEnabled; // nie liczy się
|
sSpeedTable[i].iFlags &= ~spEnabled; // nie liczy się
|
||||||
}
|
}
|
||||||
else if ((sSpeedTable[i].iFlags & 0xF0000028) ==
|
else if ((sSpeedTable[i].iFlags & 0xF0000028) ==
|
||||||
@@ -638,7 +642,7 @@ void TController::TableCheck(double fDistance)
|
|||||||
{
|
{
|
||||||
sSpeedTable[i].iFlags =
|
sSpeedTable[i].iFlags =
|
||||||
0; // to nie ma go po co trzymać (odtykacz usunie ze środka)
|
0; // to nie ma go po co trzymać (odtykacz usunie ze środka)
|
||||||
WriteLog("TableCheck: Track without speed. Delete from table: " + sSpeedTable[i].trTrack->NameGet());
|
// WriteLog("TableCheck: Track without speed. Delete from table: " + sSpeedTable[i].trTrack->NameGet());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sSpeedTable[i].iFlags & spEvent) // jeśli event
|
else if (sSpeedTable[i].iFlags & spEvent) // jeśli event
|
||||||
@@ -650,7 +654,7 @@ void TController::TableCheck(double fDistance)
|
|||||||
sSpeedTable[i].fDist < -fLength)
|
sSpeedTable[i].fDist < -fLength)
|
||||||
{ // pociąg staje zawsze, a samochód tylko jeśli nie przejedzie całą
|
{ // pociąg staje zawsze, a samochód tylko jeśli nie przejedzie całą
|
||||||
// długością (może być zaskoczony zmianą)
|
// długością (może być zaskoczony zmianą)
|
||||||
WriteLog("TableCheck: Event is behind. Delete from table: " + sSpeedTable[i].evEvent->asName);
|
// WriteLog("TableCheck: Event is behind. Delete from table: " + sSpeedTable[i].evEvent->asName);
|
||||||
sSpeedTable[i].iFlags &= ~1; // degradacja pozycji dla samochodu;
|
sSpeedTable[i].iFlags &= ~1; // degradacja pozycji dla samochodu;
|
||||||
// semafory usuwane tylko przy sprawdzaniu,
|
// semafory usuwane tylko przy sprawdzaniu,
|
||||||
// bo wysyłają komendy
|
// bo wysyłają komendy
|
||||||
|
|||||||
Reference in New Issue
Block a user