mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 20:59:19 +02:00
Poprawka na parsowanie wpisu hamulca. Formatowanie plików.
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -64,3 +64,7 @@ MaSzyna.sln
|
|||||||
MaSzyna.vcxproj
|
MaSzyna.vcxproj
|
||||||
MaSzyna.vcxproj.filters
|
MaSzyna.vcxproj.filters
|
||||||
*.suo
|
*.suo
|
||||||
|
EU07.tds
|
||||||
|
MaSzyna.VC.VC.opendb
|
||||||
|
MaSzyna.VC.db
|
||||||
|
.vs/
|
||||||
|
|||||||
@@ -1763,10 +1763,10 @@ TDynamicObject::Init(string Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
// kropkę na koniec
|
// kropkę na koniec
|
||||||
int kropka = MoreParams.find("."); // znajdź kropke
|
int kropka = MoreParams.find("."); // znajdź kropke
|
||||||
string ActPar; // na parametry
|
string ActPar; // na parametry
|
||||||
while (kropka > 0) // jesli sa kropki jeszcze
|
while (kropka != std::string::npos) // jesli sa kropki jeszcze
|
||||||
{
|
{
|
||||||
int dlugosc = MoreParams.length();
|
int dlugosc = MoreParams.length();
|
||||||
ActPar = ToUpper(MoreParams.substr(0, kropka - 1)); // pierwszy parametr;
|
ActPar = ToUpper(MoreParams.substr(0, kropka)); // pierwszy parametr;
|
||||||
MoreParams = MoreParams.substr(kropka + 1, dlugosc - kropka); // reszta do dalszej
|
MoreParams = MoreParams.substr(kropka + 1, dlugosc - kropka); // reszta do dalszej
|
||||||
// obrobki
|
// obrobki
|
||||||
kropka = MoreParams.find(".");
|
kropka = MoreParams.find(".");
|
||||||
|
|||||||
13
EU07.bpr
13
EU07.bpr
@@ -41,8 +41,7 @@
|
|||||||
<OPTIONS>
|
<OPTIONS>
|
||||||
<IDLCFLAGS value="-src_suffix cpp -DGLEW_STATIC -D_DEBUG -IConsole -Iopengl -IMcZapkie
|
<IDLCFLAGS value="-src_suffix cpp -DGLEW_STATIC -D_DEBUG -IConsole -Iopengl -IMcZapkie
|
||||||
-I$(BCB)\include -I$(BCB)\include\vcl -Ipython\include -boa"/>
|
-I$(BCB)\include -I$(BCB)\include\vcl -Ipython\include -boa"/>
|
||||||
<CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -w- -Vx -Ve -X- -r- -a1 -6 -b- -k -y -v
|
<CFLAG1 value="-Od -w- -Vx -Ve -X- -r- -a1 -6 -b- -k -y -v -vi- -c -tW -tWM"/>
|
||||||
-vi- -c -tW -tWM"/>
|
|
||||||
<PFLAGS value="-$Y+ -$W -$O- -v -JPHNE -M"/>
|
<PFLAGS value="-$Y+ -$W -$O- -v -JPHNE -M"/>
|
||||||
<RFLAGS value=""/>
|
<RFLAGS value=""/>
|
||||||
<AFLAGS value="/mx /w2 /zi"/>
|
<AFLAGS value="/mx /w2 /zi"/>
|
||||||
@@ -58,9 +57,9 @@
|
|||||||
IncludeVerInfo=1
|
IncludeVerInfo=1
|
||||||
AutoIncBuild=0
|
AutoIncBuild=0
|
||||||
MajorVer=16
|
MajorVer=16
|
||||||
MinorVer=0
|
MinorVer=1
|
||||||
Release=1173
|
Release=1174
|
||||||
Build=481
|
Build=483
|
||||||
Debug=1
|
Debug=1
|
||||||
PreRelease=0
|
PreRelease=0
|
||||||
Special=0
|
Special=0
|
||||||
@@ -72,13 +71,13 @@ CodePage=1250
|
|||||||
[Version Info Keys]
|
[Version Info Keys]
|
||||||
CompanyName=EU07 Team
|
CompanyName=EU07 Team
|
||||||
FileDescription=MaSzyna EU07-424
|
FileDescription=MaSzyna EU07-424
|
||||||
FileVersion=16.0.1173.481
|
FileVersion=16.1.1174.483
|
||||||
InternalName=DP+SPKS+asynch+python
|
InternalName=DP+SPKS+asynch+python
|
||||||
LegalCopyright=
|
LegalCopyright=
|
||||||
LegalTrademarks=
|
LegalTrademarks=
|
||||||
OriginalFilename=eu07.exe
|
OriginalFilename=eu07.exe
|
||||||
ProductName=MaSzyna EU07-424
|
ProductName=MaSzyna EU07-424
|
||||||
ProductVersion=16.0
|
ProductVersion=16.1
|
||||||
Comments=
|
Comments=
|
||||||
|
|
||||||
[Excluded Packages]
|
[Excluded Packages]
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ double Global::fLuminance = 1.0; // jasno
|
|||||||
int Global::iReCompile = 0; // zwiêkszany, gdy trzeba odœwie¿yæ siatki
|
int Global::iReCompile = 0; // zwiêkszany, gdy trzeba odœwie¿yæ siatki
|
||||||
HWND Global::hWnd = NULL; // uchwyt okna
|
HWND Global::hWnd = NULL; // uchwyt okna
|
||||||
int Global::iCameraLast = -1;
|
int Global::iCameraLast = -1;
|
||||||
std::string Global::asRelease = "16.0.1172.481";
|
std::string Global::asRelease = "16.1.1174.483";
|
||||||
std::string Global::asVersion =
|
std::string Global::asVersion =
|
||||||
"Compilation 2016-08-24, release " + Global::asRelease + "."; // tutaj, bo wysy³any
|
"Compilation 2017-01-13, release " + Global::asRelease + "."; // tutaj, bo wysy³any
|
||||||
int Global::iViewMode = 0; // co aktualnie widaæ: 0-kabina, 1-latanie, 2-sprzêgi, 3-dokumenty
|
int Global::iViewMode = 0; // co aktualnie widaæ: 0-kabina, 1-latanie, 2-sprzêgi, 3-dokumenty
|
||||||
int Global::iTextMode = 0; // tryb pracy wyœwietlacza tekstowego
|
int Global::iTextMode = 0; // tryb pracy wyœwietlacza tekstowego
|
||||||
int Global::iScreenMode[12] = {0, 0, 0, 0, 0, 0,
|
int Global::iScreenMode[12] = {0, 0, 0, 0, 0, 0,
|
||||||
|
|||||||
@@ -1809,7 +1809,7 @@ TGroundNode * TGround::AddGroundNode(cParser *parser)
|
|||||||
if (int2 != string::npos) // yB: jesli znalazl kropke, to ja przetwarza jako parametry
|
if (int2 != string::npos) // yB: jesli znalazl kropke, to ja przetwarza jako parametry
|
||||||
{
|
{
|
||||||
int dlugosc = str4.length();
|
int dlugosc = str4.length();
|
||||||
int1 = atoi(str4.substr(0, int2 - 1).c_str()); // niech sprzegiem bedzie do kropki cos
|
int1 = atoi(str4.substr(0, int2).c_str()); // niech sprzegiem bedzie do kropki cos
|
||||||
str4 = str4.substr(int2 + 1, dlugosc - int2);
|
str4 = str4.substr(int2 + 1, dlugosc - int2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
1668
McZapkie/MOVER.h
1668
McZapkie/MOVER.h
File diff suppressed because it is too large
Load Diff
1844
McZapkie/Mover.cpp
1844
McZapkie/Mover.cpp
File diff suppressed because it is too large
Load Diff
1524
McZapkie/hamulce.h
1524
McZapkie/hamulce.h
File diff suppressed because it is too large
Load Diff
175
mtable.cpp
175
mtable.cpp
@@ -14,7 +14,7 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
#include "mtable.h"
|
#include "mtable.h"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
//using namespace Mtable;
|
// using namespace Mtable;
|
||||||
TMTableTime *Mtable::GlobalTime;
|
TMTableTime *Mtable::GlobalTime;
|
||||||
|
|
||||||
double CompareTime(double t1h, double t1m, double t2h, double t2m) /*roznica czasu w minutach*/
|
double CompareTime(double t1h, double t1m, double t2h, double t2m) /*roznica czasu w minutach*/
|
||||||
@@ -39,14 +39,14 @@ double CompareTime(double t1h, double t1m, double t2h, double t2m) /*roznica cza
|
|||||||
|
|
||||||
double TTrainParameters::CheckTrainLatency()
|
double TTrainParameters::CheckTrainLatency()
|
||||||
{
|
{
|
||||||
if ((LastStationLatency > 1.0) || (LastStationLatency < 0))
|
if ((LastStationLatency > 1.0) || (LastStationLatency < 0))
|
||||||
return LastStationLatency; /*spoznienie + lub do przodu - z tolerancja 1 min*/
|
return LastStationLatency; /*spoznienie + lub do przodu - z tolerancja 1 min*/
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
double TTrainParameters::WatchMTable(double DistCounter)
|
double TTrainParameters::WatchMTable(double DistCounter)
|
||||||
{ //zwraca odlegloϾ do najblizszej stacji z zatrzymaniem
|
{ // zwraca odlegloϾ do najblizszej stacji z zatrzymaniem
|
||||||
double dist;
|
double dist;
|
||||||
|
|
||||||
if (Direction == 1)
|
if (Direction == 1)
|
||||||
@@ -81,7 +81,8 @@ bool TTrainParameters::UpdateMTable(double hh, double mm, std::string NewName)
|
|||||||
{
|
{
|
||||||
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 < 0) // to jest bez sensu
|
if (TimeTable[StationIndex + 1].km - TimeTable[StationIndex].km <
|
||||||
|
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
|
||||||
@@ -187,7 +188,7 @@ void TTrainParameters::UpdateVelocity(int StationCount, double vActual)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
// bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
||||||
//{
|
//{
|
||||||
// return false;
|
// return false;
|
||||||
//}
|
//}
|
||||||
@@ -216,10 +217,10 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
s = scnpath + TrainName + ".txt";
|
s = scnpath + TrainName + ".txt";
|
||||||
// Ra 2014-09: ustaliæ zasady wyznaczenia pierwotnego pliku przy przesuniêtych rozk³adach
|
// Ra 2014-09: ustaliæ zasady wyznaczenia pierwotnego pliku przy przesuniêtych rozk³adach
|
||||||
// (kolejny poci¹g dostaje numer +2)
|
// (kolejny poci¹g dostaje numer +2)
|
||||||
fin.open(s.c_str()); //otwieranie pliku
|
fin.open(s.c_str()); // otwieranie pliku
|
||||||
|
|
||||||
if (!fin.is_open())
|
if (!fin.is_open())
|
||||||
{ //jeœli nie ma pliku
|
{ // jeœli nie ma pliku
|
||||||
vmax = atoi(TrainName.c_str()); // nie ma pliku ale jest liczba
|
vmax = atoi(TrainName.c_str()); // nie ma pliku ale jest liczba
|
||||||
if ((vmax > 10) && (vmax < 200))
|
if ((vmax > 10) && (vmax < 200))
|
||||||
{
|
{
|
||||||
@@ -235,91 +236,91 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
ConversionError = 0;
|
ConversionError = 0;
|
||||||
while (fin.good() && !((ConversionError != 0) || EndTable))
|
while (fin.good() && !((ConversionError != 0) || EndTable))
|
||||||
{
|
{
|
||||||
std::getline(fin,lines); /*wczytanie linii*/
|
std::getline(fin, lines); /*wczytanie linii*/
|
||||||
if (lines.find("___________________") != std::string::npos) /*linia pozioma górna*/
|
if (lines.find("___________________") != std::string::npos) /*linia pozioma górna*/
|
||||||
{
|
{
|
||||||
fin >> s;
|
fin >> s;
|
||||||
if (s == "[") /*lewy pion*/
|
if (s == "[") /*lewy pion*/
|
||||||
{
|
{
|
||||||
fin >> s;
|
fin >> s;
|
||||||
if (s == "Rodzaj") /*"Rodzaj i numer pociagu"*/
|
if (s == "Rodzaj") /*"Rodzaj i numer pociagu"*/
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
fin >> s;
|
fin >> s;
|
||||||
} while (!(s == "|") || (fin.eof())); /*œrodkowy pion*/
|
} while (!(s == "|") || (fin.eof())); /*œrodkowy pion*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (lines == "")
|
else if (lines == "")
|
||||||
{
|
{
|
||||||
fin.close();
|
fin.close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fin >> s; /*nazwa poci¹gu*/
|
fin >> s; /*nazwa poci¹gu*/
|
||||||
// if LowerCase(s)<>ExtractFileName(TrainName) then {musi byæ taka sama, jak nazwa
|
// if LowerCase(s)<>ExtractFileName(TrainName) then {musi byæ taka sama, jak nazwa
|
||||||
// pliku}
|
// pliku}
|
||||||
// ConversionError:=-7 {b³¹d niezgodnoœci}
|
// ConversionError:=-7 {b³¹d niezgodnoœci}
|
||||||
TrainName = s; // nadanie nazwy z pliku TXT (bez œcie¿ki do pliku)
|
TrainName = s; // nadanie nazwy z pliku TXT (bez œcie¿ki do pliku)
|
||||||
// else
|
// else
|
||||||
{ /*czytaj naglowek*/
|
{ /*czytaj naglowek*/
|
||||||
while(fin >> s || !fin.bad())
|
while (fin >> s || !fin.bad())
|
||||||
{
|
{
|
||||||
if (s.find("_______|") != std::string::npos)
|
if (s.find("_______|") != std::string::npos)
|
||||||
break;
|
break;
|
||||||
//fin >> s;
|
// fin >> s;
|
||||||
} //while (!(s.find("_______|") != std::string::npos) || fin.eof());
|
} // while (!(s.find("_______|") != std::string::npos) || fin.eof());
|
||||||
while (fin >> s || !fin.bad())
|
while (fin >> s || !fin.bad())
|
||||||
{
|
{
|
||||||
if (s == "[")
|
if (s == "[")
|
||||||
break;
|
break;
|
||||||
} //while (!() || (fin.eof())); /*pierwsza linia z relacj¹*/
|
} // while (!() || (fin.eof())); /*pierwsza linia z relacj¹*/
|
||||||
while(fin >> s || !fin.bad())
|
while (fin >> s || !fin.bad())
|
||||||
{
|
{
|
||||||
if (s != "|")
|
if (s != "|")
|
||||||
break;
|
break;
|
||||||
} //while (!(() || fin.eof()));
|
} // while (!(() || fin.eof()));
|
||||||
if (s != "|")
|
if (s != "|")
|
||||||
Relation1 = s;
|
Relation1 = s;
|
||||||
else
|
else
|
||||||
ConversionError = -5;
|
ConversionError = -5;
|
||||||
while(fin >> s || !fin.bad())
|
|
||||||
{
|
|
||||||
if (s == "Relacja")
|
|
||||||
break;
|
|
||||||
} //while (
|
|
||||||
// !( || (fin.eof()))); /*druga linia z relacj¹*/
|
|
||||||
while (fin >> s || !fin.bad())
|
while (fin >> s || !fin.bad())
|
||||||
{
|
{
|
||||||
if (s == "|")
|
if (s == "Relacja")
|
||||||
break;
|
break;
|
||||||
} //while (!( || (fin.eof())));
|
} // while (
|
||||||
|
// !( || (fin.eof()))); /*druga linia z relacj¹*/
|
||||||
|
while (fin >> s || !fin.bad())
|
||||||
|
{
|
||||||
|
if (s == "|")
|
||||||
|
break;
|
||||||
|
} // while (!( || (fin.eof())));
|
||||||
fin >> Relation2;
|
fin >> Relation2;
|
||||||
while (fin >> s || !fin.bad())
|
while (fin >> s || !fin.bad())
|
||||||
{
|
{
|
||||||
if (s == "Wymagany")
|
if (s == "Wymagany")
|
||||||
break;
|
break;
|
||||||
}// while (!();
|
} // while (!();
|
||||||
while (fin >> s || !fin.bad())
|
while (fin >> s || !fin.bad())
|
||||||
{
|
{
|
||||||
if ((s == "|") || (s == "\n"))
|
if ((s == "|") || (s == "\n"))
|
||||||
break;
|
break;
|
||||||
} //while (!());
|
} // while (!());
|
||||||
fin >> s;
|
fin >> s;
|
||||||
s = s.substr(0, s.find("%"));
|
s = s.substr(0, s.find("%"));
|
||||||
BrakeRatio = atof(s.c_str());
|
BrakeRatio = atof(s.c_str());
|
||||||
while (fin >> s || fin.bad())
|
while (fin >> s || fin.bad())
|
||||||
{
|
{
|
||||||
if (s == "Seria")
|
if (s == "Seria")
|
||||||
break;
|
break;
|
||||||
} //while (!(s == "Seria"));
|
} // while (!(s == "Seria"));
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
fin >> s;
|
fin >> s;
|
||||||
} while (!((s == "|") || (fin.bad())));
|
} while (!((s == "|") || (fin.bad())));
|
||||||
fin >> LocSeries;
|
fin >> LocSeries;
|
||||||
fin >> LocLoad;// = s2rE(ReadWord(fin));
|
fin >> LocLoad; // = s2rE(ReadWord(fin));
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
fin >> s;
|
fin >> s;
|
||||||
} while (!(s.find("[______________") != std::string::npos || fin.bad()));
|
} while (!(s.find("[______________") != std::string::npos || fin.bad()));
|
||||||
while (!fin.bad() && !EndTable)
|
while (!fin.bad() && !EndTable)
|
||||||
{
|
{
|
||||||
@@ -328,7 +329,7 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
{
|
{
|
||||||
fin >> s;
|
fin >> s;
|
||||||
} while (!((s == "[") || (fin.bad())));
|
} while (!((s == "[") || (fin.bad())));
|
||||||
TMTableLine *record = &TimeTable[StationCount];
|
TMTableLine *record = &TimeTable[StationCount];
|
||||||
{
|
{
|
||||||
if (s == "[")
|
if (s == "[")
|
||||||
fin >> s;
|
fin >> s;
|
||||||
@@ -336,10 +337,11 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
ConversionError = -4;
|
ConversionError = -4;
|
||||||
if (s.find("|") == std::string::npos)
|
if (s.find("|") == std::string::npos)
|
||||||
{
|
{
|
||||||
record->km = atof(s.c_str());
|
record->km = atof(s.c_str());
|
||||||
fin >> s;
|
fin >> s;
|
||||||
}
|
}
|
||||||
if (s.find("|_____|") != std::string::npos) /*zmiana predkosci szlakowej*/
|
if (s.find("|_____|") !=
|
||||||
|
std::string::npos) /*zmiana predkosci szlakowej*/
|
||||||
UpdateVelocity(StationCount, vActual);
|
UpdateVelocity(StationCount, vActual);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -360,14 +362,15 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
{
|
{
|
||||||
if (s.find(hrsd) != std::string::npos)
|
if (s.find(hrsd) != std::string::npos)
|
||||||
{
|
{
|
||||||
record->Ah = atoi(s.substr(0, s.find(hrsd)).c_str()); // godzina przyjazdu
|
record->Ah = atoi(
|
||||||
record->Am = atoi(
|
s.substr(0, s.find(hrsd)).c_str()); // godzina przyjazdu
|
||||||
s.substr(s.find(hrsd) + 1, s.length()).c_str()); // minuta przyjazdu
|
record->Am = atoi(s.substr(s.find(hrsd) + 1, s.length())
|
||||||
|
.c_str()); // minuta przyjazdu
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
record->Ah = TimeTable[StationCount - 1]
|
record->Ah = TimeTable[StationCount - 1]
|
||||||
.Ah; // godzina z poprzedniej pozycji
|
.Ah; // godzina z poprzedniej pozycji
|
||||||
record->Am = atoi(s.c_str()); // bo tylko minuty podane
|
record->Am = atoi(s.c_str()); // bo tylko minuty podane
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -387,7 +390,8 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
/*tu s moze byc miejscem zmiany predkosci szlakowej*/
|
/*tu s moze byc miejscem zmiany predkosci szlakowej*/
|
||||||
fin >> s;
|
fin >> s;
|
||||||
}
|
}
|
||||||
if (s.find("|_____|") != std::string::npos) /*zmiana predkosci szlakowej*/
|
if (s.find("|_____|") !=
|
||||||
|
std::string::npos) /*zmiana predkosci szlakowej*/
|
||||||
UpdateVelocity(StationCount, vActual);
|
UpdateVelocity(StationCount, vActual);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -408,24 +412,29 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
{
|
{
|
||||||
if (s.find(hrsd) != std::string::npos)
|
if (s.find(hrsd) != std::string::npos)
|
||||||
{
|
{
|
||||||
record->Dh = atoi(s.substr(0, s.find(hrsd)).c_str()); // godzina odjazdu
|
record->Dh =
|
||||||
record->Dm = atoi(
|
atoi(s.substr(0, s.find(hrsd)).c_str()); // godzina odjazdu
|
||||||
s.substr(s.find(hrsd) + 1, s.length()).c_str()); // minuta odjazdu
|
record->Dm = atoi(s.substr(s.find(hrsd) + 1, s.length())
|
||||||
|
.c_str()); // minuta odjazdu
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
record->Dh = TimeTable[StationCount - 1]
|
record->Dh = TimeTable[StationCount - 1]
|
||||||
.Dh; // godzina z poprzedniej pozycji
|
.Dh; // godzina z poprzedniej pozycji
|
||||||
record->Dm = atoi(s.c_str()); // bo tylko minuty podane
|
record->Dm = atoi(s.c_str()); // bo tylko minuty podane
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
record->Dh = record->Ah; // odjazd o tej samej, co przyjazd (dla ostatniego te¿)
|
record->Dh = record->Ah; // odjazd o tej samej, co przyjazd (dla
|
||||||
record->Dm = record->Am; // bo s¹ u¿ywane do wyliczenia opóŸnienia po dojechaniu
|
// ostatniego te¿)
|
||||||
|
record->Dm = record->Am; // bo s¹ u¿ywane do wyliczenia opóŸnienia
|
||||||
|
// po dojechaniu
|
||||||
}
|
}
|
||||||
if ((record->Ah >= 0))
|
if ((record->Ah >= 0))
|
||||||
record->WaitTime = (int)(CompareTime(record->Ah, record->Am, record->Dh, record->Dm) + 0.1);
|
record->WaitTime = (int)(CompareTime(record->Ah, record->Am,
|
||||||
|
record->Dh, record->Dm) +
|
||||||
|
0.1);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
fin >> s;
|
fin >> s;
|
||||||
@@ -443,7 +452,8 @@ bool TTrainParameters::LoadTTfile(std::string scnpath, int iPlus, double vmax)
|
|||||||
/*tu s moze byc miejscem zmiany predkosci szlakowej*/
|
/*tu s moze byc miejscem zmiany predkosci szlakowej*/
|
||||||
fin >> s;
|
fin >> s;
|
||||||
}
|
}
|
||||||
if (s.find("|_____|") != std::string::npos) /*zmiana predkosci szlakowej*/
|
if (s.find("|_____|") !=
|
||||||
|
std::string::npos) /*zmiana predkosci szlakowej*/
|
||||||
UpdateVelocity(StationCount, vActual);
|
UpdateVelocity(StationCount, vActual);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -536,12 +546,7 @@ bool TTrainParameters::DirectionChange()
|
|||||||
// sprawdzenie, czy po zatrzymaniu wykonaæ kolejne komendy
|
// sprawdzenie, czy po zatrzymaniu wykonaæ kolejne komendy
|
||||||
{
|
{
|
||||||
if ((StationIndex > 0) && (StationIndex < StationCount)) // dla ostatniej stacji nie
|
if ((StationIndex > 0) && (StationIndex < StationCount)) // dla ostatniej stacji nie
|
||||||
if (TimeTable[StationIndex].StationWare.find("@") != std::string::npos)
|
if (TimeTable[StationIndex].StationWare.find("@") != std::string::npos)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
156
mtable.h
156
mtable.h
@@ -18,92 +18,92 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
namespace Mtable
|
namespace Mtable
|
||||||
{
|
{
|
||||||
|
|
||||||
static int const MaxTTableSize = 100; // mo¿na by to robiæ dynamicznie
|
static int const MaxTTableSize = 100; // mo¿na by to robiæ dynamicznie
|
||||||
static char const *hrsd = ".";
|
static char const *hrsd = ".";
|
||||||
|
|
||||||
// Ra: pozycja zerowa rozk³adu chyba nie ma sensu
|
// Ra: pozycja zerowa rozk³adu chyba nie ma sensu
|
||||||
// Ra: numeracja przystanków jest 1..StationCount
|
// Ra: numeracja przystanków jest 1..StationCount
|
||||||
|
|
||||||
struct TMTableLine
|
struct TMTableLine
|
||||||
{
|
{
|
||||||
double km; // kilometraz linii
|
double km; // kilometraz linii
|
||||||
double vmax; // predkosc rozkladowa przed przystankiem
|
double vmax; // predkosc rozkladowa przed przystankiem
|
||||||
// StationName:string[32]; //nazwa stacji ('_' zamiast spacji)
|
// StationName:string[32]; //nazwa stacji ('_' zamiast spacji)
|
||||||
// StationWare:string[32]; //typ i wyposazenie stacji, oddz. przecinkami}
|
// StationWare:string[32]; //typ i wyposazenie stacji, oddz. przecinkami}
|
||||||
std::string StationName; // nazwa stacji ('_' zamiast spacji)
|
std::string StationName; // nazwa stacji ('_' zamiast spacji)
|
||||||
std::string StationWare; // typ i wyposazenie stacji, oddz. przecinkami}
|
std::string StationWare; // typ i wyposazenie stacji, oddz. przecinkami}
|
||||||
int TrackNo; // ilosc torow szlakowych
|
int TrackNo; // ilosc torow szlakowych
|
||||||
int Ah;
|
int Ah;
|
||||||
int Am; // godz. i min. przyjazdu, -1 gdy bez postoju
|
int Am; // godz. i min. przyjazdu, -1 gdy bez postoju
|
||||||
int Dh;
|
int Dh;
|
||||||
int Dm; // godz. i min. odjazdu
|
int Dm; // godz. i min. odjazdu
|
||||||
double tm; // czas jazdy do tej stacji w min. (z kolumny)
|
double tm; // czas jazdy do tej stacji w min. (z kolumny)
|
||||||
int WaitTime; // czas postoju (liczony plus 6 sekund)
|
int WaitTime; // czas postoju (liczony plus 6 sekund)
|
||||||
TMTableLine()
|
TMTableLine()
|
||||||
{
|
{
|
||||||
km = 0;
|
km = 0;
|
||||||
vmax = -1;
|
vmax = -1;
|
||||||
StationName = "nowhere", StationWare = "";
|
StationName = "nowhere", StationWare = "";
|
||||||
TrackNo = 1;
|
TrackNo = 1;
|
||||||
Ah, Am, Dh, Dm = -1;
|
Ah, Am, Dh, Dm = -1;
|
||||||
WaitTime, tm = 0;
|
WaitTime, tm = 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef TMTableLine TMTable[MaxTTableSize + 1];
|
typedef TMTableLine TMTable[MaxTTableSize + 1];
|
||||||
|
|
||||||
//typedef TTrainParameters *PTrainParameters;
|
// typedef TTrainParameters *PTrainParameters;
|
||||||
|
|
||||||
class TTrainParameters
|
class TTrainParameters
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string TrainName;
|
std::string TrainName;
|
||||||
double TTVmax;
|
double TTVmax;
|
||||||
std::string Relation1;
|
std::string Relation1;
|
||||||
std::string Relation2; // nazwy stacji danego odcinka
|
std::string Relation2; // nazwy stacji danego odcinka
|
||||||
double BrakeRatio;
|
double BrakeRatio;
|
||||||
std::string LocSeries; // seria (typ) pojazdu
|
std::string LocSeries; // seria (typ) pojazdu
|
||||||
double LocLoad;
|
double LocLoad;
|
||||||
TMTable TimeTable;
|
TMTable TimeTable;
|
||||||
int StationCount; // iloœæ przystanków (0-techniczny)
|
int StationCount; // iloœæ przystanków (0-techniczny)
|
||||||
int StationIndex; // numer najbli¿szego (aktualnego) przystanku
|
int StationIndex; // numer najbli¿szego (aktualnego) przystanku
|
||||||
std::string NextStationName;
|
std::string NextStationName;
|
||||||
double LastStationLatency;
|
double LastStationLatency;
|
||||||
int Direction; /*kierunek jazdy w/g kilometrazu*/
|
int Direction; /*kierunek jazdy w/g kilometrazu*/
|
||||||
double CheckTrainLatency();
|
double CheckTrainLatency();
|
||||||
/*todo: str hh:mm to int i z powrotem*/
|
/*todo: str hh:mm to int i z powrotem*/
|
||||||
std::string ShowRelation();
|
std::string ShowRelation();
|
||||||
double WatchMTable(double DistCounter);
|
double WatchMTable(double DistCounter);
|
||||||
std::string NextStop();
|
std::string NextStop();
|
||||||
bool IsStop();
|
bool IsStop();
|
||||||
bool IsTimeToGo(double hh, double mm);
|
bool IsTimeToGo(double hh, double mm);
|
||||||
bool UpdateMTable(double hh, double mm, std::string NewName);
|
bool UpdateMTable(double hh, double mm, std::string NewName);
|
||||||
TTrainParameters(std::string NewTrainName);
|
TTrainParameters(std::string NewTrainName);
|
||||||
void NewName(std::string NewTrainName);
|
void NewName(std::string NewTrainName);
|
||||||
void UpdateVelocity(int StationCount, double vActual);
|
void UpdateVelocity(int StationCount, double vActual);
|
||||||
bool LoadTTfile(std::string scnpath, int iPlus, double vmax);
|
bool LoadTTfile(std::string scnpath, int iPlus, double vmax);
|
||||||
bool DirectionChange();
|
bool DirectionChange();
|
||||||
void StationIndexInc();
|
void StationIndexInc();
|
||||||
};
|
};
|
||||||
|
|
||||||
class TMTableTime
|
class TMTableTime
|
||||||
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
double GameTime;
|
double GameTime;
|
||||||
int dd;
|
int dd;
|
||||||
int hh;
|
int hh;
|
||||||
int mm;
|
int mm;
|
||||||
int srh;
|
int srh;
|
||||||
int srm; /*wschod slonca*/
|
int srm; /*wschod slonca*/
|
||||||
int ssh;
|
int ssh;
|
||||||
int ssm; /*zachod slonca*/
|
int ssm; /*zachod slonca*/
|
||||||
double mr;
|
double mr;
|
||||||
void UpdateMTableTime(double deltaT);
|
void UpdateMTableTime(double deltaT);
|
||||||
TMTableTime(int InitH, int InitM, int InitSRH, int InitSRM, int InitSSH, int InitSSM);
|
TMTableTime(int InitH, int InitM, int InitSRH, int InitSRM, int InitSSH, int InitSSM);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern TMTableTime *GlobalTime;
|
extern TMTableTime *GlobalTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
|
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
|
||||||
|
|||||||
Reference in New Issue
Block a user