16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-23 16:49:18 +02:00

Zmiana AnsiString na std::string. Zakończenie sprawy przypadkowo skasowanego mover.h

This commit is contained in:
firleju
2016-10-21 06:56:46 +02:00
parent ab34354584
commit 167b1e3a8d
18 changed files with 1466 additions and 306 deletions

View File

@@ -284,7 +284,7 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len)
return false; return false;
}; };
AnsiString TSpeedPos::GetName() std::string TSpeedPos::GetName()
{ {
if (iFlags & spTrack) // je<6A>li tor if (iFlags & spTrack) // je<6A>li tor
return trTrack->NameGet(); return trTrack->NameGet();
@@ -292,12 +292,12 @@ AnsiString TSpeedPos::GetName()
return evEvent->asName; return evEvent->asName;
} }
AnsiString TSpeedPos::TableText() std::string TSpeedPos::TableText()
{ // pozycja tabelki pr<70>dko<6B>ci { // pozycja tabelki pr<70>dko<6B>ci
if (iFlags & spEnabled) if (iFlags & spEnabled)
{ // o ile pozycja istotna { // o ile pozycja istotna
return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1) + return "Flags=#" + to_hex_str(iFlags, 8) + ", Dist=" + to_string(fDist, 1, 7) +
", Vel=" + AnsiString(fVelNext) + ", Name=" + GetName(); ", Vel=" + to_string(fVelNext) + ", Name=" + GetName();
//if (iFlags & spTrack) // je<6A>li tor //if (iFlags & spTrack) // je<6A>li tor
// return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1) + // return "Flags=#" + IntToHex(iFlags, 8) + ", Dist=" + FloatToStrF(fDist, ffFixed, 7, 1) +
// ", Vel=" + AnsiString(fVelNext) + ", Track=" + trTrack->NameGet(); // ", Vel=" + AnsiString(fVelNext) + ", Track=" + trTrack->NameGet();
@@ -1603,7 +1603,7 @@ TController::~TController()
CloseLog(); CloseLog();
}; };
AnsiString TController::Order2Str(TOrders Order) std::string TController::Order2Str(TOrders Order)
{ // zamiana kodu rozkazu na opis { // zamiana kodu rozkazu na opis
if (Order & Change_direction) if (Order & Change_direction)
return "Change_direction"; // mo<6D>e by<62> na<6E>o<EFBFBD>ona na inn<6E> i wtedy ma priorytet return "Change_direction"; // mo<6D>e by<62> na<6E>o<EFBFBD>ona na inn<6E> i wtedy ma priorytet
@@ -1638,9 +1638,9 @@ AnsiString TController::Order2Str(TOrders Order)
return "Undefined!"; return "Undefined!";
} }
AnsiString TController::OrderCurrent() std::string TController::OrderCurrent()
{ // pobranie aktualnego rozkazu celem wy<77>wietlenia { // pobranie aktualnego rozkazu celem wy<77>wietlenia
return AnsiString(OrderPos) + ". " + Order2Str(OrderList[OrderPos]); return to_string(OrderPos) + ". " + Order2Str(OrderList[OrderPos]);
}; };
void TController::OrdersClear() void TController::OrdersClear()
@@ -2889,8 +2889,8 @@ void TController::RecognizeCommand()
c->Command = ""; // usuni<6E>cie obs<62>u<EFBFBD>onej komendy c->Command = ""; // usuni<6E>cie obs<62>u<EFBFBD>onej komendy
} }
void TController::PutCommand(AnsiString NewCommand, double NewValue1, double NewValue2, void TController::PutCommand(std::string NewCommand, double NewValue1, double NewValue2,
const TLocation &NewLocation, TStopReason reason) const TLocation &NewLocation, TStopReason reason = stopComm)
{ // wys<79>anie komendy przez event PutValues, jak pojazd ma obsad<61>, to wysy<73>a tutaj, a nie do pojazdu { // wys<79>anie komendy przez event PutValues, jak pojazd ma obsad<61>, to wysy<73>a tutaj, a nie do pojazdu
// bezpo<70>rednio // bezpo<70>rednio
vector3 sl; vector3 sl;
@@ -2901,8 +2901,8 @@ void TController::PutCommand(AnsiString NewCommand, double NewValue1, double New
mvOccupied->PutCommand(NewCommand, NewValue1, NewValue2, NewLocation); mvOccupied->PutCommand(NewCommand, NewValue1, NewValue2, NewLocation);
} }
bool TController::PutCommand(AnsiString NewCommand, double NewValue1, double NewValue2, bool TController::PutCommand(std::string NewCommand, double NewValue1, double NewValue2,
const vector3 *NewLocation, TStopReason reason) const vector3 *NewLocation, TStopReason reason = stopComm)
{ // analiza komendy { // analiza komendy
if (NewCommand == "CabSignal") if (NewCommand == "CabSignal")
{ // SHP wyzwalane jest przez cz<63>on z obsad<61>, ale obs<62>ugiwane przez silnikowy { // SHP wyzwalane jest przez cz<63>on z obsad<61>, ale obs<62>ugiwane przez silnikowy
@@ -5425,7 +5425,7 @@ void TController::ControllingSet()
mvControlling = pVehicle->ControlledFind()->MoverParameters; // poszukiwanie cz<63>onu sterowanego mvControlling = pVehicle->ControlledFind()->MoverParameters; // poszukiwanie cz<63>onu sterowanego
}; };
AnsiString TController::TableText(int i) std::string TController::TableText(int i)
{ // pozycja tabelki pr<70>dko<6B>ci { // pozycja tabelki pr<70>dko<6B>ci
i = (iFirst + i) % iSpeedTableSize; // numer pozycji i = (iFirst + i) % iSpeedTableSize; // numer pozycji
if (i != iLast) // w (iLast) znajduje si<73> kolejny tor do przeskanowania, ale nie jest ona if (i != iLast) // w (iLast) znajduje si<73> kolejny tor do przeskanowania, ale nie jest ona
@@ -5475,7 +5475,7 @@ void TController::RouteSwitch(int d)
} }
} }
}; };
AnsiString TController::OwnerName() std::string TController::OwnerName()
{ {
return pVehicle ? pVehicle->MoverParameters->Name : AnsiString("none"); return pVehicle ? pVehicle->MoverParameters->Name : ("none");
}; };

View File

@@ -146,8 +146,8 @@ class TSpeedPos
bool Update(vector3 *p, vector3 *dir, double &len); bool Update(vector3 *p, vector3 *dir, double &len);
bool Set(TEvent *e, double d, TOrders order = Wait_for_orders); bool Set(TEvent *e, double d, TOrders order = Wait_for_orders);
void Set(TTrack *t, double d, int f); void Set(TTrack *t, double d, int f);
AnsiString TableText(); std::string TableText();
AnsiString GetName(); std::string GetName();
bool IsProperSemaphor(TOrders order = Wait_for_orders); bool IsProperSemaphor(TOrders order = Wait_for_orders);
}; };
@@ -315,9 +315,9 @@ class TController
{ {
return TrainParams; return TrainParams;
}; };
void PutCommand(AnsiString NewCommand, double NewValue1, double NewValue2, void PutCommand(std::string NewCommand, double NewValue1, double NewValue2,
const _mover::TLocation &NewLocation, TStopReason reason = stopComm); const TLocation &NewLocation, TStopReason reason = stopComm);
bool PutCommand(AnsiString NewCommand, double NewValue1, double NewValue2, bool PutCommand(std::string NewCommand, double NewValue1, double NewValue2,
const vector3 *NewLocation, TStopReason reason = stopComm); const vector3 *NewLocation, TStopReason reason = stopComm);
bool UpdateSituation(double dt); // uruchamiac przynajmniej raz na sekundę bool UpdateSituation(double dt); // uruchamiac przynajmniej raz na sekundę
// procedury dotyczace rozkazow dla maszynisty // procedury dotyczace rozkazow dla maszynisty
@@ -346,11 +346,11 @@ class TController
TController(bool AI, TDynamicObject *NewControll, bool InitPsyche, TController(bool AI, TDynamicObject *NewControll, bool InitPsyche,
bool primary = true // czy ma aktywnie prowadzić? bool primary = true // czy ma aktywnie prowadzić?
); );
AnsiString OrderCurrent(); std::string OrderCurrent();
void WaitingSet(double Seconds); void WaitingSet(double Seconds);
private: private:
AnsiString Order2Str(TOrders Order); std::string Order2Str(TOrders Order);
void DirectionForward(bool forward); void DirectionForward(bool forward);
int OrderDirectionChange(int newdir, TMoverParameters *Vehicle); int OrderDirectionChange(int newdir, TMoverParameters *Vehicle);
void Lights(int head, int rear); void Lights(int head, int rear);
@@ -397,10 +397,10 @@ class TController
}; };
void MoveTo(TDynamicObject *to); void MoveTo(TDynamicObject *to);
void DirectionInitial(); void DirectionInitial();
AnsiString TableText(int i); std::string TableText(int i);
int CrossRoute(TTrack *tr); int CrossRoute(TTrack *tr);
void RouteSwitch(int d); void RouteSwitch(int d);
AnsiString OwnerName(); std::string OwnerName();
}; };
#endif #endif

View File

@@ -662,7 +662,7 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
else if (str == AnsiString("-v")) else if (str == AnsiString("-v"))
{ // nazwa wybranego pojazdu { // nazwa wybranego pojazdu
str = Parser->GetNextSymbol().LowerCase(); str = Parser->GetNextSymbol().LowerCase();
Global::asHumanCtrlVehicle = str; Global::asHumanCtrlVehicle = str.c_str();
} }
else if (str == AnsiString("-modifytga")) else if (str == AnsiString("-modifytga"))
{ // wykonanie modyfikacji wszystkich plików TGA { // wykonanie modyfikacji wszystkich plików TGA
@@ -695,7 +695,7 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance
if (Bpp != 32) if (Bpp != 32)
Bpp = 16; Bpp = 16;
// create our OpenGL window // create our OpenGL window
if (!CreateGLWindow(Global::asHumanCtrlVehicle.c_str(), WindowWidth, WindowHeight, Bpp, if (!CreateGLWindow(const_cast<char*>(Global::asHumanCtrlVehicle.c_str()), WindowWidth, WindowHeight, Bpp,
fullscreen)) fullscreen))
return 0; // quit if window was not created return 0; // quit if window was not created
SetForegroundWindow(hWnd); SetForegroundWindow(hWnd);

View File

@@ -84,7 +84,7 @@ class TEvent // zmienne: ev*
void Conditions(cParser *parser, AnsiString s); void Conditions(cParser *parser, AnsiString s);
public: public:
AnsiString asName; std::string asName;
bool bEnabled; // false gdy ma nie byæ dodawany do kolejki (skanowanie sygna³ów) bool bEnabled; // false gdy ma nie byæ dodawany do kolejki (skanowanie sygna³ów)
int iQueued; // ile razy dodany do kolejki int iQueued; // ile razy dodany do kolejki
// bool bIsHistory; // bool bIsHistory;

View File

@@ -24,6 +24,8 @@ http://mozilla.org/MPL/2.0/.
#include <Controls.hpp> //do odczytu daty #include <Controls.hpp> //do odczytu daty
#include "World.h" #include "World.h"
#include <ostream> #include <ostream>
#include <iomanip>
#include <ctype.h>
// namespace Global { // namespace Global {
// parametry do u¿ytku wewnêtrznego // parametry do u¿ytku wewnêtrznego
@@ -34,23 +36,23 @@ TGround *Global::pGround = NULL;
// char Global::CreatorName3[20]="2004-2005 Adam Bugiel <ABu>"; // char Global::CreatorName3[20]="2004-2005 Adam Bugiel <ABu>";
// char Global::CreatorName4[30]="2004 Arkadiusz Œlusarczyk <Winger>"; // char Global::CreatorName4[30]="2004 Arkadiusz Œlusarczyk <Winger>";
// char Global::CreatorName5[30]="2003-2009 £ukasz Kirchner <Nbmx>"; // char Global::CreatorName5[30]="2003-2009 £ukasz Kirchner <Nbmx>";
AnsiString Global::asCurrentSceneryPath = "scenery/"; std::string Global::asCurrentSceneryPath = "scenery/";
AnsiString Global::asCurrentTexturePath = AnsiString(szTexturePath); std::string Global::asCurrentTexturePath = std::string(szTexturePath);
AnsiString Global::asCurrentDynamicPath = ""; std::string Global::asCurrentDynamicPath = "";
int Global::iSlowMotion = int Global::iSlowMotion =
0; // info o malym FPS: 0-OK, 1-wy³¹czyæ multisampling, 3-promieñ 1.5km, 7-1km 0; // info o malym FPS: 0-OK, 1-wy³¹czyæ multisampling, 3-promieñ 1.5km, 7-1km
TDynamicObject *Global::changeDynObj = NULL; // info o zmianie pojazdu TDynamicObject *Global::changeDynObj = NULL; // info o zmianie pojazdu
bool Global::detonatoryOK; // info o nowych detonatorach bool Global::detonatoryOK; // info o nowych detonatorach
double Global::ABuDebug = 0; double Global::ABuDebug = 0;
AnsiString Global::asSky = "1"; std::string Global::asSky = "1";
double Global::fOpenGL = 0.0; // wersja OpenGL - do sprawdzania obecnoœci rozszerzeñ double Global::fOpenGL = 0.0; // wersja OpenGL - do sprawdzania obecnoœci rozszerzeñ
bool Global::bOpenGL_1_5 = false; // czy s¹ dostêpne funkcje OpenGL 1.5 bool Global::bOpenGL_1_5 = false; // czy s¹ dostêpne funkcje OpenGL 1.5
double Global::fLuminance = 1.0; // jasnoœæ œwiat³a do automatycznego zapalania double Global::fLuminance = 1.0; // jasnoœæ œwiat³a do automatycznego zapalania
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;
AnsiString Global::asRelease = "16.0.1172.481"; std::string Global::asRelease = "16.0.1172.481";
AnsiString Global::asVersion = std::string Global::asVersion =
"Compilation 2016-08-24, release " + Global::asRelease + "."; // tutaj, bo wysy³any "Compilation 2016-08-24, 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
@@ -74,7 +76,7 @@ int Global::iSegmentsRendered = 90; // ilo
TCamera *Global::pCamera = NULL; // parametry kamery TCamera *Global::pCamera = NULL; // parametry kamery
TDynamicObject *Global::pUserDynamic = NULL; // pojazd u¿ytkownika, renderowany bez trzêsienia TDynamicObject *Global::pUserDynamic = NULL; // pojazd u¿ytkownika, renderowany bez trzêsienia
bool Global::bSmudge = false; // czy wyœwietlaæ smugê, a pojazd u¿ytkownika na koñcu bool Global::bSmudge = false; // czy wyœwietlaæ smugê, a pojazd u¿ytkownika na koñcu
AnsiString Global::asTranscript[5]; // napisy na ekranie (widoczne) std::string Global::asTranscript[5]; // napisy na ekranie (widoczne)
TTranscripts Global::tranTexts; // obiekt obs³uguj¹cy stenogramy dŸwiêków na ekranie TTranscripts Global::tranTexts; // obiekt obs³uguj¹cy stenogramy dŸwiêków na ekranie
// parametry scenerii // parametry scenerii
@@ -115,13 +117,13 @@ bool Global::bInactivePause = true; // automatyczna pauza, gdy okno nieaktywne
float Global::fMouseXScale = 1.5; float Global::fMouseXScale = 1.5;
float Global::fMouseYScale = 0.2; float Global::fMouseYScale = 0.2;
char Global::szSceneryFile[256] = "td.scn"; char Global::szSceneryFile[256] = "td.scn";
AnsiString Global::asHumanCtrlVehicle = "EU07-424"; std::string Global::asHumanCtrlVehicle = "EU07-424";
int Global::iMultiplayer = 0; // blokada dzia³ania niektórych funkcji na rzecz komunikacji int Global::iMultiplayer = 0; // blokada dzia³ania niektórych funkcji na rzecz komunikacji
double Global::fMoveLight = -1; // ruchome œwiat³o double Global::fMoveLight = -1; // ruchome œwiat³o
double Global::fLatitudeDeg = 52.0; // szerokoϾ geograficzna double Global::fLatitudeDeg = 52.0; // szerokoϾ geograficzna
float Global::fFriction = 1.0; // mno¿nik tarcia - KURS90 float Global::fFriction = 1.0; // mno¿nik tarcia - KURS90
double Global::fBrakeStep = 1.0; // krok zmiany hamulca dla klawiszy [Num3] i [Num9] double Global::fBrakeStep = 1.0; // krok zmiany hamulca dla klawiszy [Num3] i [Num9]
AnsiString Global::asLang = "pl"; // domyœlny jêzyk - http://tools.ietf.org/html/bcp47 std::string Global::asLang = "pl"; // domyœlny jêzyk - http://tools.ietf.org/html/bcp47
// parametry wydajnoœciowe (np. regulacja FPS, szybkoœæ wczytywania) // parametry wydajnoœciowe (np. regulacja FPS, szybkoœæ wczytywania)
bool Global::bAdjustScreenFreq = true; bool Global::bAdjustScreenFreq = true;
@@ -143,7 +145,7 @@ int Global::iSlowMotionMask = -1; // maska wy
int Global::iModifyTGA = 7; // czy korygowaæ pliki TGA dla szybszego wczytywania int Global::iModifyTGA = 7; // czy korygowaæ pliki TGA dla szybszego wczytywania
// bool Global::bTerrainCompact=true; //czy zapisaæ teren w pliku // bool Global::bTerrainCompact=true; //czy zapisaæ teren w pliku
TAnimModel *Global::pTerrainCompact = NULL; // do zapisania terenu w pliku TAnimModel *Global::pTerrainCompact = NULL; // do zapisania terenu w pliku
AnsiString Global::asTerrainModel = ""; // nazwa obiektu terenu do zapisania w pliku std::string Global::asTerrainModel = ""; // nazwa obiektu terenu do zapisania w pliku
double Global::fFpsAverage = 20.0; // oczekiwana wartosæ FPS double Global::fFpsAverage = 20.0; // oczekiwana wartosæ FPS
double Global::fFpsDeviation = 5.0; // odchylenie standardowe FPS double Global::fFpsDeviation = 5.0; // odchylenie standardowe FPS
double Global::fFpsMin = 0.0; // dolna granica FPS, przy której promieñ scenerii bêdzie zmniejszany double Global::fFpsMin = 0.0; // dolna granica FPS, przy której promieñ scenerii bêdzie zmniejszany
@@ -205,7 +207,7 @@ AnsiString Global::GetNextSymbol()
return ""; return "";
}; };
void Global::LoadIniFile(AnsiString asFileName) void Global::LoadIniFile(std::string asFileName)
{ {
int i; int i;
for (i = 0; i < 10; ++i) for (i = 0; i < 10; ++i)
@@ -217,7 +219,7 @@ void Global::LoadIniFile(AnsiString asFileName)
fs = new TFileStream(asFileName, fmOpenRead | fmShareCompat); fs = new TFileStream(asFileName, fmOpenRead | fmShareCompat);
if (!fs) if (!fs)
return; return;
AnsiString str = ""; std::string str = "";
int size = fs->Size; int size = fs->Size;
str.SetLength(size); str.SetLength(size);
fs->Read(str.c_str(), size); fs->Read(str.c_str(), size);
@@ -342,7 +344,7 @@ void Global::ConfigParse(TQueryParserComp *qp, cParser *cp)
str = GetNextSymbol().LowerCase(); // rozszerzenie str = GetNextSymbol().LowerCase(); // rozszerzenie
if (str == "tga") if (str == "tga")
szDefaultExt = szTexturesTGA; // domyœlnie od TGA szDefaultExt = szTexturesTGA; // domyœlnie od TGA
// szDefaultExt=std::string(Parser->GetNextSymbol().LowerCase().c_str()); // szDefaultExt=AnsiString(Parser->GetNextSymbol().LowerCase().c_str());
} }
else if (str == AnsiString("newaircouplers")) else if (str == AnsiString("newaircouplers"))
bnewAirCouplers = (GetNextSymbol().LowerCase() == AnsiString("yes")); bnewAirCouplers = (GetNextSymbol().LowerCase() == AnsiString("yes"));
@@ -573,7 +575,7 @@ void Global::ConfigParse(TQueryParserComp *qp, cParser *cp)
} }
} }
void Global::InitKeys(AnsiString asFileName) void Global::InitKeys(std::string asFileName)
{ {
// if (FileExists(asFileName)) // if (FileExists(asFileName))
// { // {
@@ -798,7 +800,7 @@ void TTranscripts::AddLine(char *txt, float show, float hide, bool it)
aLines[j].fShow = show; // wyœwietlaæ od aLines[j].fShow = show; // wyœwietlaæ od
aLines[j].fHide = hide; // wyœwietlaæ do aLines[j].fHide = hide; // wyœwietlaæ do
aLines[j].bItalic = it; aLines[j].bItalic = it;
aLines[j].asText = AnsiString(txt); // bez sensu, wystarczy³by wskaŸnik aLines[j].asText = std::string(txt); // bez sensu, wystarczy³by wskaŸnik
if ((k = aLines[j].asText.Pos("|")) > 0) if ((k = aLines[j].asText.Pos("|")) > 0)
{ // jak jest podzia³ linijki na wiersze { // jak jest podzia³ linijki na wiersze
aLines[j].asText = aLines[j].asText.SubString(1, k - 1); aLines[j].asText = aLines[j].asText.SubString(1, k - 1);
@@ -890,9 +892,9 @@ char bezogonkowo[128] = "E?,?\"_++?%S<STZZ?`'\"\".--??s>stzz"
"RAAAALCCCEEEEIIDDNNOOOOxRUUUUYTB" "RAAAALCCCEEEEIIDDNNOOOOxRUUUUYTB"
"raaaalccceeeeiiddnnoooo-ruuuuyt?"; "raaaalccceeeeiiddnnoooo-ruuuuyt?";
AnsiString Global::Bezogonkow(AnsiString str, bool _) std::string Global::Bezogonkow(std::string str, bool _)
{ // wyciêcie liter z ogonkami, bo OpenGL nie umie wyœwietliæ { // wyciêcie liter z ogonkami, bo OpenGL nie umie wyœwietliæ
for (int i = 1; i <= str.Length(); ++i) for (int i = 1; i <= str.length(); ++i)
if (str[i] & 0x80) if (str[i] & 0x80)
str[i] = bezogonkowo[str[i] & 0x7F]; str[i] = bezogonkowo[str[i] & 0x7F];
else if (str[i] < ' ') // znaki steruj¹ce nie s¹ obs³ugiwane else if (str[i] < ' ') // znaki steruj¹ce nie s¹ obs³ugiwane
@@ -919,11 +921,81 @@ double Global::CutValueToRange(double min, double value, double max)
return value; return value;
}; };
std::string Global::to_string(int _Val) std::string to_string(int _Val)
{ {
std::ostringstream o; std::ostringstream o;
o << _Val; o << _Val;
return o.str(); return o.str();
}; };
std::string to_string(unsigned int _Val)
{
std::ostringstream o;
o << _Val;
return o.str();
};
std::string to_string(double _Val)
{
std::ostringstream o;
o << _Val;
return o.str();
};
std::string to_string(int _Val, int precision)
{
std::ostringstream o;
o << std::fixed << std::setprecision(precision);
o << _Val;
return o.str();
};
std::string to_string(double _Val, int precision)
{
std::ostringstream o;
o << std::fixed << std::setprecision(precision);
o << _Val;
return o.str();
};
std::string to_string(int _Val, int precision, int width)
{
std::ostringstream o;
o.width(width);
o << std::fixed << std::setprecision(precision);
o << _Val;
return o.str();
};
std::string to_string(double _Val, int precision, int width)
{
std::ostringstream o;
o.width(width);
o << std::fixed << std::setprecision(precision);
o << _Val;
return o.str();
};
std::string to_hex_str(double _Val, int precision = 0, int width = 0)
{
std::ostringstream o;
if (width)
o.width(width);
o << std::fixed << std::hex;
if (precision)
o << std::setprecision(precision);
o << _Val;
return o.str();
};
std::string ToLower(std::string text)
{
std::transform(text.begin(), text.end(), text.begin(), ::tolower);
}
std::string ToUpper(std::string text)
{
std::transform(text.begin(), text.end(), text.begin(), ::toupper);
}
#pragma package(smart_init) #pragma package(smart_init)

View File

@@ -134,7 +134,7 @@ class TTranscript
public: public:
float fShow; // czas pokazania float fShow; // czas pokazania
float fHide; // czas ukrycia/usuniêcia float fHide; // czas ukrycia/usuniêcia
AnsiString asText; // tekst gotowy do wyœwietlenia (usuniête znaczniki czasu) std::string asText; // tekst gotowy do wyœwietlenia (usuniête znaczniki czasu)
bool bItalic; // czy kursywa (dŸwiêk nieistotny dla prowadz¹cego) bool bItalic; // czy kursywa (dŸwiêk nieistotny dla prowadz¹cego)
int iNext; // nastêpna u¿ywana linijka, ¿eby nie przestawiaæ fizycznie tabeli int iNext; // nastêpna u¿ywana linijka, ¿eby nie przestawiaæ fizycznie tabeli
}; };
@@ -200,13 +200,13 @@ class Global
static char CreatorName3[20]; static char CreatorName3[20];
static char CreatorName4[30]; static char CreatorName4[30];
static char CreatorName5[30]; static char CreatorName5[30];
static AnsiString asCurrentSceneryPath; static std::string asCurrentSceneryPath;
static AnsiString asCurrentTexturePath; static std::string asCurrentTexturePath;
static AnsiString asCurrentDynamicPath; static std::string asCurrentDynamicPath;
// McZapkie-170602: zewnetrzna definicja pojazdu uzytkownika // McZapkie-170602: zewnetrzna definicja pojazdu uzytkownika
static AnsiString asHumanCtrlVehicle; static std::string asHumanCtrlVehicle;
static void LoadIniFile(AnsiString asFileName); static void LoadIniFile(std::string asFileName);
static void InitKeys(AnsiString asFileName); static void InitKeys(std::string asFileName);
inline static vector3 GetCameraPosition() inline static vector3 GetCameraPosition()
{ {
return pCameraPosition; return pCameraPosition;
@@ -233,7 +233,7 @@ class Global
static TDynamicObject *changeDynObj; static TDynamicObject *changeDynObj;
static double ABuDebug; static double ABuDebug;
static bool detonatoryOK; static bool detonatoryOK;
static AnsiString asSky; static std::string asSky;
static bool bnewAirCouplers; static bool bnewAirCouplers;
// Ra: nowe zmienne globalne // Ra: nowe zmienne globalne
static int iDefaultFiltering; // domyœlne rozmywanie tekstur TGA static int iDefaultFiltering; // domyœlne rozmywanie tekstur TGA
@@ -250,8 +250,8 @@ class Global
static int iMultiplayer; // blokada dzia³ania niektórych eventów na rzecz kominikacji static int iMultiplayer; // blokada dzia³ania niektórych eventów na rzecz kominikacji
static HWND hWnd; // uchwyt okna static HWND hWnd; // uchwyt okna
static int iCameraLast; static int iCameraLast;
static AnsiString asRelease; // numer static std::string asRelease; // numer
static AnsiString asVersion; // z opisem static std::string asVersion; // z opisem
static int static int
iViewMode; // co aktualnie widaæ: 0-kabina, 1-latanie, 2-sprzêgi, 3-dokumenty, 4-obwody iViewMode; // co aktualnie widaæ: 0-kabina, 1-latanie, 2-sprzêgi, 3-dokumenty, 4-obwody
static GLint iMaxTextureSize; // maksymalny rozmiar tekstury static GLint iMaxTextureSize; // maksymalny rozmiar tekstury
@@ -284,7 +284,7 @@ class Global
static TWorld *pWorld; // wskaŸnik na œwiat do usuwania pojazdów static TWorld *pWorld; // wskaŸnik na œwiat do usuwania pojazdów
static TAnimModel *pTerrainCompact; // obiekt terenu do ewentualnego zapisania w pliku static TAnimModel *pTerrainCompact; // obiekt terenu do ewentualnego zapisania w pliku
static AnsiString asTerrainModel; // nazwa obiektu terenu do zapisania w pliku static std::string asTerrainModel; // nazwa obiektu terenu do zapisania w pliku
static bool bRollFix; // czy wykonaæ przeliczanie przechy³ki static bool bRollFix; // czy wykonaæ przeliczanie przechy³ki
static Queryparsercomp::TQueryParserComp *qParser; static Queryparsercomp::TQueryParserComp *qParser;
static cParser *pParser; static cParser *pParser;
@@ -306,9 +306,9 @@ class Global
static double fBrakeStep; // krok zmiany hamulca dla klawiszy [Num3] i [Num9] static double fBrakeStep; // krok zmiany hamulca dla klawiszy [Num3] i [Num9]
static bool bJoinEvents; // czy grupowaæ eventy o tych samych nazwach static bool bJoinEvents; // czy grupowaæ eventy o tych samych nazwach
static bool bSmudge; // czy wyœwietlaæ smugê, a pojazd u¿ytkownika na koñcu static bool bSmudge; // czy wyœwietlaæ smugê, a pojazd u¿ytkownika na koñcu
static AnsiString asTranscript[5]; // napisy na ekranie (widoczne) static std::string asTranscript[5]; // napisy na ekranie (widoczne)
static TTranscripts tranTexts; // obiekt obs³uguj¹cy stenogramy dŸwiêków na ekranie static TTranscripts tranTexts; // obiekt obs³uguj¹cy stenogramy dŸwiêków na ekranie
static AnsiString asLang; // domyœlny jêzyk - http://tools.ietf.org/html/bcp47 static std::string asLang; // domyœlny jêzyk - http://tools.ietf.org/html/bcp47
static int iHiddenEvents; // czy ³¹czyæ eventy z torami poprzez nazwê toru static int iHiddenEvents; // czy ³¹czyæ eventy z torami poprzez nazwê toru
static TTextSound *tsRadioBusy[10]; // zajêtoœæ kana³ów radiowych (wskaŸnik na odgrywany dŸwiêk) static TTextSound *tsRadioBusy[10]; // zajêtoœæ kana³ów radiowych (wskaŸnik na odgrywany dŸwiêk)
static int iPoKeysPWM[7]; // numery wejϾ dla PWM static int iPoKeysPWM[7]; // numery wejϾ dla PWM
@@ -321,12 +321,23 @@ class Global
static TDynamicObject * CouplerNearest(); static TDynamicObject * CouplerNearest();
static bool AddToQuery(TEvent *event, TDynamicObject *who); static bool AddToQuery(TEvent *event, TDynamicObject *who);
static bool DoEvents(); static bool DoEvents();
static AnsiString Bezogonkow(AnsiString str, bool _ = false); static std::string Bezogonkow(std::string str, bool _ = false);
static double Min0RSpeed(double vel1, double vel2); static double Min0RSpeed(double vel1, double vel2);
static double CutValueToRange(double min, double value, double max); static double CutValueToRange(double min, double value, double max);
static std::string to_string(int _Val);
}; };
std::string to_string(int _Val);
std::string to_string(unsigned int _Val);
std::string to_string(int _Val, int precision);
std::string to_string(int _Val, int precision, int width);
std::string to_string(double _Val);
std::string to_string(double _Val, int precision);
std::string to_string(double _Val, int precision, int width);
std::string to_hex_str(int _Val, int precision, int width);
std::string ToLower(std::string text);
std::string ToUpper(std::string text);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#endif #endif

View File

@@ -1360,7 +1360,7 @@ void TGround::Free()
delete sTracks; delete sTracks;
} }
TGroundNode * TGround::DynamicFindAny(AnsiString asNameToFind) TGroundNode * TGround::DynamicFindAny(std::string asNameToFind)
{ // wyszukanie pojazdu o podanej nazwie, szukanie po wszystkich (u¿yæ drzewa!) { // wyszukanie pojazdu o podanej nazwie, szukanie po wszystkich (u¿yæ drzewa!)
for (TGroundNode *Current = nRootDynamic; Current; Current = Current->nNext) for (TGroundNode *Current = nRootDynamic; Current; Current = Current->nNext)
if ((Current->asName == asNameToFind)) if ((Current->asName == asNameToFind))
@@ -1368,7 +1368,7 @@ TGroundNode * TGround::DynamicFindAny(AnsiString asNameToFind)
return NULL; return NULL;
}; };
TGroundNode * TGround::DynamicFind(AnsiString asNameToFind) TGroundNode * TGround::DynamicFind(std::string asNameToFind)
{ // wyszukanie pojazdu z obsad¹ o podanej nazwie (u¿yæ drzewa!) { // wyszukanie pojazdu z obsad¹ o podanej nazwie (u¿yæ drzewa!)
for (TGroundNode *Current = nRootDynamic; Current; Current = Current->nNext) for (TGroundNode *Current = nRootDynamic; Current; Current = Current->nNext)
if (Current->DynamicObject->Mechanik) if (Current->DynamicObject->Mechanik)
@@ -1386,7 +1386,7 @@ void TGround::DynamicList(bool all)
WyslijString("none", 6); // informacja o koñcu listy WyslijString("none", 6); // informacja o koñcu listy
}; };
TGroundNode * TGround::FindGroundNode(AnsiString asNameToFind, TGroundNodeType iNodeType) TGroundNode * TGround::FindGroundNode(std::string asNameToFind, TGroundNodeType iNodeType)
{ // wyszukiwanie obiektu o podanej nazwie i konkretnym typie { // wyszukiwanie obiektu o podanej nazwie i konkretnym typie
if ((iNodeType == TP_TRACK) || (iNodeType == TP_MEMCELL) || (iNodeType == TP_MODEL)) if ((iNodeType == TP_TRACK) || (iNodeType == TP_MEMCELL) || (iNodeType == TP_MODEL))
{ // wyszukiwanie w drzewie binarnym { // wyszukiwanie w drzewie binarnym
@@ -2362,10 +2362,10 @@ void TGround::FirstInit()
WriteLog("FirstInit is done"); WriteLog("FirstInit is done");
}; };
bool TGround::Init(AnsiString asFile, HDC hDC) bool TGround::Init(std::string asFile, HDC hDC)
{ // g³ówne wczytywanie scenerii { // g³ówne wczytywanie scenerii
if (asFile.LowerCase().SubString(1, 7) == "scenery") if (AnsiString(asFile.c_str()).LowerCase().SubString(1, 7) == "scenery")
asFile.Delete(1, 8); // Ra: usuniêcie niepotrzebnych znaków - zgodnoœæ wstecz z 2003 AnsiString(asFile.c_str()).Delete(1, 8); // Ra: usuniêcie niepotrzebnych znaków - zgodnoœæ wstecz z 2003
WriteLog("Loading scenery from " + asFile); WriteLog("Loading scenery from " + asFile);
Global::pGround = this; Global::pGround = this;
// pTrain=NULL; // pTrain=NULL;
@@ -2373,8 +2373,8 @@ bool TGround::Init(AnsiString asFile, HDC hDC)
AnsiString str = ""; AnsiString str = "";
// TFileStream *fs; // TFileStream *fs;
// int size; // int size;
std::string subpath = Global::asCurrentSceneryPath.c_str(); // "scenery/"; std::string subpath = Global::asCurrentSceneryPath; // "scenery/";
cParser parser(asFile.c_str(), cParser::buffer_FILE, subpath, Global::bLoadTraction); cParser parser(asFile, cParser::buffer_FILE, subpath, Global::bLoadTraction);
std::string token; std::string token;
/* /*
@@ -2800,8 +2800,7 @@ bool TGround::Init(AnsiString asFile, HDC hDC)
WriteLog("Scenery sky definition"); WriteLog("Scenery sky definition");
parser.getTokens(); parser.getTokens();
parser >> token; parser >> token;
AnsiString SkyTemp; string SkyTemp = token;
SkyTemp = AnsiString(token.c_str());
if (Global::asSky == "1") if (Global::asSky == "1")
Global::asSky = SkyTemp; Global::asSky = SkyTemp;
do do
@@ -4777,12 +4776,12 @@ void TGround::Navigate(String ClassName, UINT Msg, WPARAM wParam, LPARAM lParam)
SendMessage(h, Msg, wParam, lParam); SendMessage(h, Msg, wParam, lParam);
}; };
//-------------------------------- //--------------------------------
void TGround::WyslijEvent(const AnsiString &e, const AnsiString &d) void TGround::WyslijEvent(const std::string &e, const std::string &d)
{ // Ra: jeszcze do wyczyszczenia { // Ra: jeszcze do wyczyszczenia
DaneRozkaz r; DaneRozkaz r;
r.iSygn = 'EU07'; r.iSygn = 'EU07';
r.iComm = 2; // 2 - event r.iComm = 2; // 2 - event
int i = e.Length(), j = d.Length(); int i = e.length(), j = d.length();
r.cString[0] = char(i); r.cString[0] = char(i);
strcpy(r.cString + 1, e.c_str()); // zakoñczony zerem strcpy(r.cString + 1, e.c_str()); // zakoñczony zerem
r.cString[i + 2] = char(j); // licznik po zerze koñcz¹cym r.cString[i + 2] = char(j); // licznik po zerze koñcz¹cym
@@ -4792,15 +4791,15 @@ void TGround::WyslijEvent(const AnsiString &e, const AnsiString &d)
cData.cbData = 12 + i + j; // 8+dwa liczniki i dwa zera koñcz¹ce cData.cbData = 12 + i + j; // 8+dwa liczniki i dwa zera koñcz¹ce
cData.lpData = &r; cData.lpData = &r;
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData); Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
CommLog(AnsiString(Now()) + " " + IntToStr(r.iComm) + " " + e + " sent"); CommLog(to_string(BorlandTime()) + " " + to_string(r.iComm) + " " + e + " sent");
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void TGround::WyslijUszkodzenia(const AnsiString &t, char fl) void TGround::WyslijUszkodzenia(const std::string &t, char fl)
{ // wys³anie informacji w postaci pojedynczego tekstu { // wys³anie informacji w postaci pojedynczego tekstu
DaneRozkaz r; DaneRozkaz r;
r.iSygn = 'EU07'; r.iSygn = 'EU07';
r.iComm = 13; // numer komunikatu r.iComm = 13; // numer komunikatu
int i = t.Length(); int i = t.length();
r.cString[0] = char(fl); r.cString[0] = char(fl);
r.cString[1] = char(i); r.cString[1] = char(i);
strcpy(r.cString + 2, t.c_str()); // z zerem koñcz¹cym strcpy(r.cString + 2, t.c_str()); // z zerem koñcz¹cym
@@ -4809,15 +4808,15 @@ void TGround::WyslijUszkodzenia(const AnsiString &t, char fl)
cData.cbData = 11 + i; // 8+licznik i zero koñcz¹ce cData.cbData = 11 + i; // 8+licznik i zero koñcz¹ce
cData.lpData = &r; cData.lpData = &r;
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData); Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
CommLog(AnsiString(Now()) + " " + IntToStr(r.iComm) + " " + t + " sent"); CommLog(to_string(BorlandTime()) + " " + to_string(r.iComm) + " " + t + " sent");
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void TGround::WyslijString(const AnsiString &t, int n) void TGround::WyslijString(const std::string &t, int n)
{ // wys³anie informacji w postaci pojedynczego tekstu { // wys³anie informacji w postaci pojedynczego tekstu
DaneRozkaz r; DaneRozkaz r;
r.iSygn = 'EU07'; r.iSygn = 'EU07';
r.iComm = n; // numer komunikatu r.iComm = n; // numer komunikatu
int i = t.Length(); int i = t.length();
r.cString[0] = char(i); r.cString[0] = char(i);
strcpy(r.cString + 1, t.c_str()); // z zerem koñcz¹cym strcpy(r.cString + 1, t.c_str()); // z zerem koñcz¹cym
COPYDATASTRUCT cData; COPYDATASTRUCT cData;
@@ -4825,10 +4824,10 @@ void TGround::WyslijString(const AnsiString &t, int n)
cData.cbData = 10 + i; // 8+licznik i zero koñcz¹ce cData.cbData = 10 + i; // 8+licznik i zero koñcz¹ce
cData.lpData = &r; cData.lpData = &r;
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData); Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
CommLog(AnsiString(Now()) + " " + IntToStr(r.iComm) + " " + t + " sent"); CommLog(to_string(BorlandTime()) + " " + to_string(r.iComm) + " " + t + " sent");
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void TGround::WyslijWolny(const AnsiString &t) void TGround::WyslijWolny(const std::string &t)
{ // Ra: jeszcze do wyczyszczenia { // Ra: jeszcze do wyczyszczenia
WyslijString(t, 4); // tor wolny WyslijString(t, 4); // tor wolny
}; };
@@ -4839,7 +4838,7 @@ void TGround::WyslijNamiary(TGroundNode *t)
DaneRozkaz r; DaneRozkaz r;
r.iSygn = 'EU07'; r.iSygn = 'EU07';
r.iComm = 7; // 7 - dane pojazdu r.iComm = 7; // 7 - dane pojazdu
int i = 32, j = t->asName.Length(); int i = 32, j = t->asName.length();
r.iPar[0] = i; // iloϾ danych liczbowych r.iPar[0] = i; // iloϾ danych liczbowych
r.fPar[1] = Global::fTimeAngleDeg / 360.0; // aktualny czas (1.0=doba) r.fPar[1] = Global::fTimeAngleDeg / 360.0; // aktualny czas (1.0=doba)
r.fPar[2] = t->DynamicObject->MoverParameters->Loc.X; // pozycja X r.fPar[2] = t->DynamicObject->MoverParameters->Loc.X; // pozycja X
@@ -4905,7 +4904,7 @@ void TGround::WyslijNamiary(TGroundNode *t)
// WriteLog("Ramka gotowa"); // WriteLog("Ramka gotowa");
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData); Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
// WriteLog("Ramka poszla!"); // WriteLog("Ramka poszla!");
CommLog(AnsiString(Now()) + " " + IntToStr(r.iComm) + " " + t->asName + " sent"); CommLog(to_string(BorlandTime()) + " " + to_string(r.iComm) + " " + t->asName + " sent");
}; };
// //
void TGround::WyslijObsadzone() void TGround::WyslijObsadzone()
@@ -4931,13 +4930,13 @@ void TGround::WyslijObsadzone()
} }
while (i <= 30) while (i <= 30)
{ {
strcpy(r.cString + 64 * i, AnsiString("none").c_str()); strcpy(r.cString + 64 * i, string("none").c_str());
r.fPar[16 * i + 4] = 1; r.fPar[16 * i + 4] = 1;
r.fPar[16 * i + 5] = 2; r.fPar[16 * i + 5] = 2;
r.fPar[16 * i + 6] = 3; r.fPar[16 * i + 6] = 3;
r.iPar[16 * i + 7] = 0; r.iPar[16 * i + 7] = 0;
strcpy(r.cString + 64 * i + 32, AnsiString("none").c_str()); strcpy(r.cString + 64 * i + 32, string("none").c_str());
strcpy(r.cString + 64 * i + 48, AnsiString("none").c_str()); strcpy(r.cString + 64 * i + 48, string("none").c_str());
i++; i++;
} }
@@ -4947,7 +4946,7 @@ void TGround::WyslijObsadzone()
cData.lpData = &r; cData.lpData = &r;
// WriteLog("Ramka gotowa"); // WriteLog("Ramka gotowa");
Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData); Navigate("TEU07SRK", WM_COPYDATA, (WPARAM)Global::hWnd, (LPARAM)&cData);
CommLog(AnsiString(Now()) + " " + IntToStr(r.iComm) + " obsadzone" + " sent"); CommLog(to_string(BorlandTime()) + " " + to_string(r.iComm) + " obsadzone" + " sent");
} }
//-------------------------------- //--------------------------------
@@ -5207,7 +5206,7 @@ void TGround::IsolatedBusyList()
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void TGround::IsolatedBusy(const AnsiString t) void TGround::IsolatedBusy(const std::string t)
{ // wys³anie informacji o odcinku izolowanym (t) { // wys³anie informacji o odcinku izolowanym (t)
// Ra 2014-06: do wyszukania u¿yæ drzewka nazw // Ra 2014-06: do wyszukania u¿yæ drzewka nazw
TIsolated *Current; TIsolated *Current;

View File

@@ -115,7 +115,7 @@ class TGroundNode : public Resource
TTextSound *tsStaticSound; // dźwięk przestrzenny TTextSound *tsStaticSound; // dźwięk przestrzenny
TGroundNode *nNode; // obiekt renderujący grupowo ma tu wskaźnik na listę obiektów TGroundNode *nNode; // obiekt renderujący grupowo ma tu wskaźnik na listę obiektów
}; };
AnsiString asName; // nazwa (nie zawsze ma znaczenie) std::string asName; // nazwa (nie zawsze ma znaczenie)
union union
{ {
int iNumVerts; // dla trójkątów int iNumVerts; // dla trójkątów
@@ -156,7 +156,7 @@ class TGroundNode : public Resource
void MoveMe(vector3 pPosition); // przesuwanie (nie działa) void MoveMe(vector3 pPosition); // przesuwanie (nie działa)
// bool Disable(); // bool Disable();
inline TGroundNode * Find(const AnsiString &asNameToFind, TGroundNodeType iNodeType) inline TGroundNode * Find(const std::string &asNameToFind, TGroundNodeType iNodeType)
{ // wyszukiwanie czołgowe z typem { // wyszukiwanie czołgowe z typem
if ((iNodeType == iType) && (asNameToFind == asName)) if ((iNodeType == iType) && (asNameToFind == asName))
return this; return this;
@@ -302,7 +302,7 @@ class TGround
TGround(); TGround();
~TGround(); ~TGround();
void Free(); void Free();
bool Init(AnsiString asFile, HDC hDC); bool Init(std::string asFile, HDC hDC);
void FirstInit(); void FirstInit();
void InitTracks(); void InitTracks();
void InitTraction(); void InitTraction();
@@ -326,7 +326,7 @@ class TGround
}; };
// bool Include(TQueryParserComp *Parser); // bool Include(TQueryParserComp *Parser);
// TGroundNode* GetVisible(AnsiString asName); // TGroundNode* GetVisible(AnsiString asName);
TGroundNode * GetNode(AnsiString asName); TGroundNode * GetNode(std::string asName);
bool AddDynamic(TGroundNode *Node); bool AddDynamic(TGroundNode *Node);
void MoveGroundNode(vector3 pPosition); void MoveGroundNode(vector3 pPosition);
void UpdatePhys(double dt, int iter); // aktualizacja fizyki stałym krokiem void UpdatePhys(double dt, int iter); // aktualizacja fizyki stałym krokiem
@@ -355,10 +355,10 @@ class TGround
return NULL; return NULL;
} }
*/ */
TGroundNode * DynamicFindAny(AnsiString asNameToFind); TGroundNode * DynamicFindAny(std::string asNameToFind);
TGroundNode * DynamicFind(AnsiString asNameToFind); TGroundNode * DynamicFind(std::string asNameToFind);
void DynamicList(bool all = false); void DynamicList(bool all = false);
TGroundNode * FindGroundNode(AnsiString asNameToFind, TGroundNodeType iNodeType); TGroundNode * FindGroundNode(std::string asNameToFind, TGroundNodeType iNodeType);
TGroundRect * GetRect(double x, double z) TGroundRect * GetRect(double x, double z)
{ {
return &Rects[GetColFromX(x) / iNumSubRects][GetRowFromZ(z) / iNumSubRects]; return &Rects[GetColFromX(x) / iNumSubRects][GetRowFromZ(z) / iNumSubRects];
@@ -394,11 +394,11 @@ class TGround
public: public:
void WyslijEvent(const AnsiString &e, const AnsiString &d); void WyslijEvent(const AnsiString &e, const AnsiString &d);
int iRendered; // ilość renderowanych sektorów, pobierana przy pokazywniu FPS int iRendered; // ilość renderowanych sektorów, pobierana przy pokazywniu FPS
void WyslijString(const AnsiString &t, int n); void WyslijString(const std::string &t, int n);
void WyslijWolny(const AnsiString &t); void WyslijWolny(const std::string &t);
void WyslijNamiary(TGroundNode *t); void WyslijNamiary(TGroundNode *t);
void WyslijParam(int nr, int fl); void WyslijParam(int nr, int fl);
void WyslijUszkodzenia(const AnsiString &t, char fl); void WyslijUszkodzenia(const std::string &t, char fl);
void WyslijPojazdy(int nr); // -> skladanie wielu pojazdow void WyslijPojazdy(int nr); // -> skladanie wielu pojazdow
void WyslijObsadzone(); // -> skladanie wielu pojazdow void WyslijObsadzone(); // -> skladanie wielu pojazdow
void RadioStop(vector3 pPosition); void RadioStop(vector3 pPosition);
@@ -411,7 +411,7 @@ class TGround
void TerrainWrite(); void TerrainWrite();
void TrackBusyList(); void TrackBusyList();
void IsolatedBusyList(); void IsolatedBusyList();
void IsolatedBusy(const AnsiString t); void IsolatedBusy(const std::string t);
void Silence(vector3 gdzie); void Silence(vector3 gdzie);
}; };
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------

View File

@@ -127,6 +127,11 @@ void CommLog(const char *str)
}*/ }*/
}; };
void CommLog(const std::string &str)
{ // Ra: wersja z AnsiString jest zamienna z Error()
WriteLog(str);
};
void CommLog(const AnsiString &str) void CommLog(const AnsiString &str)
{ // Ra: wersja z AnsiString jest zamienna z Error() { // Ra: wersja z AnsiString jest zamienna z Error()
CommLog(str.c_str()); CommLog(str.c_str());

1
Logs.h
View File

@@ -21,6 +21,7 @@ void ErrorLog(const AnsiString &asMessage);
void WriteLog(const AnsiString &str, bool newline = true); void WriteLog(const AnsiString &str, bool newline = true);
void WriteLog(const std::string &str, bool newline = true); void WriteLog(const std::string &str, bool newline = true);
void CommLog(const char *str); void CommLog(const char *str);
void CommLog(const std::string);
void CommLog(const AnsiString &str); void CommLog(const AnsiString &str);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@@ -69,6 +69,20 @@ inline int Random()
return rand(); return rand();
} }
inline double BorlandTime()
{
std::tm epoch;
epoch.tm_sec = 0;
epoch.tm_min = 0;
epoch.tm_hour = 0;
epoch.tm_mday = 1;
epoch.tm_mon = 0;
epoch.tm_year = 0;
time_t basetime = mktime(&epoch);
time_t raw_t = time(NULL);
return (difftime(raw_t, basetime) / 24) + 2;
}
/*funkcje logiczne*/ /*funkcje logiczne*/
bool TestFlag(int Flag, int Value); bool TestFlag(int Flag, int Value);
bool SetFlag( int & Flag, int Value); bool SetFlag( int & Flag, int Value);

View File

@@ -101,7 +101,7 @@ class TIsolated
TIsolated *pNext; // odcinki izolowane są trzymane w postaci listy jednikierunkowej TIsolated *pNext; // odcinki izolowane są trzymane w postaci listy jednikierunkowej
static TIsolated *pRoot; // początek listy static TIsolated *pRoot; // początek listy
public: public:
AnsiString asName; // nazwa obiektu, baza do nazw eventów std::string asName; // nazwa obiektu, baza do nazw eventów
TEvent *evBusy; // zdarzenie wyzwalane po zajęciu grupy TEvent *evBusy; // zdarzenie wyzwalane po zajęciu grupy
TEvent *evFree; // zdarzenie wyzwalane po całkowitym zwolnieniu zajętości grupy TEvent *evFree; // zdarzenie wyzwalane po całkowitym zwolnieniu zajętości grupy
TMemCell *pMemCell; // automatyczna komórka pamięci, która współpracuje z odcinkiem izolowanym TMemCell *pMemCell; // automatyczna komórka pamięci, która współpracuje z odcinkiem izolowanym

View File

@@ -5007,7 +5007,7 @@ bool TTrain::CabChange(int iDirection)
// McZapkie-310302 // McZapkie-310302
// wczytywanie pliku z danymi multimedialnymi (dzwieki, kontrolki, kabiny) // wczytywanie pliku z danymi multimedialnymi (dzwieki, kontrolki, kabiny)
bool TTrain::LoadMMediaFile(AnsiString asFileName) bool TTrain::LoadMMediaFile(std::string asFileName)
{ {
double dSDist; double dSDist;
TFileStream *fs; TFileStream *fs;
@@ -5296,7 +5296,7 @@ bool TTrain::LoadMMediaFile(AnsiString asFileName)
} }
} }
bool TTrain::InitializeCab(int NewCabNo, AnsiString asFileName) bool TTrain::InitializeCab(int NewCabNo, std::string asFileName)
{ {
pyScreens.reset(this); pyScreens.reset(this);
pyScreens.setLookupPath(DynamicObject->asBaseDir); pyScreens.setLookupPath(DynamicObject->asBaseDir);

View File

@@ -24,6 +24,7 @@ http://mozilla.org/MPL/2.0/.
#include "RealSound.h" #include "RealSound.h"
#include "FadeSound.h" #include "FadeSound.h"
#include "PyInt.h" #include "PyInt.h"
#include <string>
// typedef enum {st_Off, st_Starting, st_On, st_ShuttingDown} T4State; // typedef enum {st_Off, st_Starting, st_On, st_ShuttingDown} T4State;
@@ -73,7 +74,7 @@ class TTrain
bool CabChange(int iDirection); bool CabChange(int iDirection);
bool ActiveUniversal4; bool ActiveUniversal4;
bool ShowNextCurrent; // pokaz przd w podlaczonej lokomotywie (ET41) bool ShowNextCurrent; // pokaz przd w podlaczonej lokomotywie (ET41)
bool InitializeCab(int NewCabNo, AnsiString asFileName); bool InitializeCab(int NewCabNo, std::string asFileName);
TTrain(); TTrain();
~TTrain(); ~TTrain();
// bool Init(TTrack *Track); // bool Init(TTrack *Track);
@@ -98,7 +99,7 @@ class TTrain
void SetLights(); void SetLights();
// virtual bool RenderAlpha(); // virtual bool RenderAlpha();
// McZapkie-310302: ladowanie parametrow z pliku // McZapkie-310302: ladowanie parametrow z pliku
bool LoadMMediaFile(AnsiString asFileName); bool LoadMMediaFile(std::string asFileName);
PyObject *GetTrainState(); PyObject *GetTrainState();
private: //瞠by go nic z zewn靖rz nie przestawia這 private: //瞠by go nic z zewn靖rz nie przestawia這

394
World.cpp
View File

@@ -31,6 +31,7 @@ http://mozilla.org/MPL/2.0/.
#include "Train.h" #include "Train.h"
#include "Driver.h" #include "Driver.h"
#include "Console.h" #include "Console.h"
#include <cmath>
#define TEXTURE_FILTER_CONTROL_EXT 0x8500 #define TEXTURE_FILTER_CONTROL_EXT 0x8500
#define TEXTURE_LOD_BIAS_EXT 0x8501 #define TEXTURE_LOD_BIAS_EXT 0x8501
@@ -1714,7 +1715,7 @@ bool TWorld::Update()
if (DebugModeFlag && !Global::iTextMode) if (DebugModeFlag && !Global::iTextMode)
{ {
OutText1 = " FPS: "; OutText1 = " FPS: ";
OutText1 += FloatToStrF(GetFPS(), ffFixed, 6, 2); OutText1 += to_string(GetFPS(), 2);
OutText1 += Global::iSlowMotion ? "s" : "n"; OutText1 += Global::iSlowMotion ? "s" : "n";
OutText1 += (GetDeltaTime() >= 0.2) ? "!" : " "; OutText1 += (GetDeltaTime() >= 0.2) ? "!" : " ";
@@ -1732,11 +1733,12 @@ bool TWorld::Update()
{ {
Global::iViewMode = VK_F8; Global::iViewMode = VK_F8;
OutText1 = " FPS: "; OutText1 = " FPS: ";
OutText1 += FloatToStrF(GetFPS(), ffFixed, 6, 2); OutText1 += to_string(GetFPS(), 2);
//OutText1 += sprintf();
if (Global::iSlowMotion) if (Global::iSlowMotion)
OutText1 += " (slowmotion " + AnsiString(Global::iSlowMotion) + ")"; OutText1 += " (slowmotion " + to_string(Global::iSlowMotion) + ")";
OutText1 += ", sectors: "; OutText1 += ", sectors: ";
OutText1 += AnsiString(Ground.iRendered); OutText1 += to_string(Ground.iRendered);
} }
// if (Console::Pressed(VK_F7)) // if (Console::Pressed(VK_F7))
@@ -1864,7 +1866,7 @@ bool TWorld::Update()
glDisable(GL_LIGHTING); glDisable(GL_LIGHTING);
if (Controlled) if (Controlled)
SetWindowText(hWnd, AnsiString(Controlled->MoverParameters->Name).c_str()); SetWindowText(hWnd, Controlled->MoverParameters->Name.c_str());
else else
SetWindowText(hWnd, Global::szSceneryFile); // nazwa scenerii SetWindowText(hWnd, Global::szSceneryFile); // nazwa scenerii
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
@@ -1876,26 +1878,26 @@ bool TWorld::Update()
{ // tekst pokazywany po wciœniêciu [F1] { // tekst pokazywany po wciœniêciu [F1]
// Global::iViewMode=VK_F1; // Global::iViewMode=VK_F1;
glColor3f(1.0f, 1.0f, 1.0f); // a, damy bia³ym glColor3f(1.0f, 1.0f, 1.0f); // a, damy bia³ym
OutText1 = "Time: " + AnsiString((int)GlobalTime->hh) + ":"; OutText1 = "Time: " + to_string((int)GlobalTime->hh) + ":";
int i = GlobalTime->mm; // bo inaczej potrafi zrobiæ "hh:010" int i = GlobalTime->mm; // bo inaczej potrafi zrobiæ "hh:010"
if (i < 10) if (i < 10)
OutText1 += "0"; OutText1 += "0";
OutText1 += AnsiString(i); // minuty OutText1 += to_string(i); // minuty
OutText1 += ":"; OutText1 += ":";
i = floor(GlobalTime->mr); // bo inaczej potrafi zrobiæ "hh:mm:010" i = floor(GlobalTime->mr); // bo inaczej potrafi zrobiæ "hh:mm:010"
if (i < 10) if (i < 10)
OutText1 += "0"; OutText1 += "0";
OutText1 += AnsiString(i); OutText1 += to_string(i);
if (Global::iPause) if (Global::iPause)
OutText1 += " - paused"; OutText1 += " - paused";
if (Controlled) if (Controlled)
if (Controlled->Mechanik) if (Controlled->Mechanik)
{ {
OutText2 = Controlled->Mechanik->Relation().c_str(); OutText2 = Controlled->Mechanik->Relation();
if (!OutText2.IsEmpty()) // jeœli jest podana relacja, to dodajemy punkt nastêpnego if (!OutText2.empty()) // jeœli jest podana relacja, to dodajemy punkt nastêpnego
// zatrzymania // zatrzymania
OutText2 = OutText2 =
Global::Bezogonkow(OutText2 + ": -> " + Controlled->Mechanik->NextStop().c_str(), Global::Bezogonkow(OutText2 + ": -> " + Controlled->Mechanik->NextStop(),
true); // dopisanie punktu zatrzymania true); // dopisanie punktu zatrzymania
} }
// double CtrlPos=mvControlled->MainCtrlPos; // double CtrlPos=mvControlled->MainCtrlPos;
@@ -1906,9 +1908,9 @@ bool TWorld::Update()
} }
else if (Global::iTextMode == VK_F12) else if (Global::iTextMode == VK_F12)
{ // opcje w³¹czenia i wy³¹czenia logowania { // opcje w³¹czenia i wy³¹czenia logowania
OutText1 = "[0] Debugmode " + AnsiString(DebugModeFlag ? "(on)" : "(off)"); OutText1 = "[0] Debugmode " + string(DebugModeFlag ? "(on)" : "(off)");
OutText2 = "[1] log.txt " + AnsiString((Global::iWriteLogEnabled & 1) ? "(on)" : "(off)"); OutText2 = "[1] log.txt " + string((Global::iWriteLogEnabled & 1) ? "(on)" : "(off)");
OutText3 = "[2] Console " + AnsiString((Global::iWriteLogEnabled & 2) ? "(on)" : "(off)"); OutText3 = "[2] Console " + string((Global::iWriteLogEnabled & 2) ? "(on)" : "(off)");
} }
else if (Global::iTextMode == VK_F2) else if (Global::iTextMode == VK_F2)
{ // ABu: info dla najblizszego pojazdu! { // ABu: info dla najblizszego pojazdu!
@@ -1919,7 +1921,7 @@ bool TWorld::Update()
if (Global::iScreenMode[Global::iTextMode - VK_F1] == 0) if (Global::iScreenMode[Global::iTextMode - VK_F1] == 0)
{ // jeœli domyœlny ekran po pierwszym naciœniêciu { // jeœli domyœlny ekran po pierwszym naciœniêciu
OutText3 = ""; OutText3 = "";
OutText1 = "Vehicle name: " + AnsiString(tmp->MoverParameters->Name); OutText1 = "Vehicle name: " + tmp->MoverParameters->Name;
// yB OutText1+="; d: "+FloatToStrF(tmp->ABuGetDirection(),ffFixed,2,0); // yB OutText1+="; d: "+FloatToStrF(tmp->ABuGetDirection(),ffFixed,2,0);
// OutText1=FloatToStrF(tmp->MoverParameters->Couplers[0].CouplingFlag,ffFixed,3,2)+", // OutText1=FloatToStrF(tmp->MoverParameters->Couplers[0].CouplingFlag,ffFixed,3,2)+",
// "; // ";
@@ -1929,9 +1931,9 @@ bool TWorld::Update()
OutText1 += ", command: " + tmp->Mechanik->OrderCurrent(); OutText1 += ", command: " + tmp->Mechanik->OrderCurrent();
} }
else if (tmp->ctOwner) else if (tmp->ctOwner)
OutText1 += ", owned by " + AnsiString(tmp->ctOwner->OwnerName()); OutText1 += ", owned by " + tmp->ctOwner->OwnerName();
if (!tmp->MoverParameters->CommandLast.IsEmpty()) if (!tmp->MoverParameters->CommandLast.empty())
OutText1 += AnsiString(", put: ") + tmp->MoverParameters->CommandLast; OutText1 += ", put: " + tmp->MoverParameters->CommandLast;
// OutText1+="; Cab="+AnsiString(tmp->MoverParameters->CabNo); // OutText1+="; Cab="+AnsiString(tmp->MoverParameters->CabNo);
OutText2 = "Damage status: " + OutText2 = "Damage status: " +
tmp->MoverParameters->EngineDescription(0); //+" Engine status: "; tmp->MoverParameters->EngineDescription(0); //+" Engine status: ";
@@ -1944,13 +1946,13 @@ bool TWorld::Update()
OutText2 += "R"; OutText2 += "R";
if ((tmp->MoverParameters->BrakeDelayFlag & bdelay_M) == bdelay_M) if ((tmp->MoverParameters->BrakeDelayFlag & bdelay_M) == bdelay_M)
OutText2 += "+Mg"; OutText2 += "+Mg";
OutText2 += AnsiString(", BTP:") + OutText2 += ", BTP:" +
FloatToStrF(tmp->MoverParameters->LoadFlag, ffFixed, 5, 0); to_string(tmp->MoverParameters->LoadFlag, 0);
// if ((tmp->MoverParameters->EnginePowerSource.SourceType==CurrentCollector) || // if ((tmp->MoverParameters->EnginePowerSource.SourceType==CurrentCollector) ||
// (tmp->MoverParameters->TrainType==dt_EZT)) // (tmp->MoverParameters->TrainType==dt_EZT))
{ {
OutText2 += AnsiString("; pant. ") + OutText2 += "; pant. " +
FloatToStrF(tmp->MoverParameters->PantPress, ffFixed, 8, 2); to_string(tmp->MoverParameters->PantPress, 2);
OutText2 += (tmp->MoverParameters->bPantKurek3 ? "<ZG" : "|ZG"); OutText2 += (tmp->MoverParameters->bPantKurek3 ? "<ZG" : "|ZG");
} }
@@ -1958,22 +1960,22 @@ bool TWorld::Update()
// u:")+FloatToStrF(tmp->MoverParameters->u,ffFixed,3,3); // u:")+FloatToStrF(tmp->MoverParameters->u,ffFixed,3,3);
// OutText2+=AnsiString(", // OutText2+=AnsiString(",
// N:")+FloatToStrF(tmp->MoverParameters->Ntotal,ffFixed,4,0); // N:")+FloatToStrF(tmp->MoverParameters->Ntotal,ffFixed,4,0);
OutText2 += AnsiString(", MED:") + OutText2 += ", MED:" +
FloatToStrF(tmp->MoverParameters->LocalBrakePosA, ffFixed, 6, 2); to_string(tmp->MoverParameters->LocalBrakePosA, 2);
OutText2 += AnsiString("+") + OutText2 += "+" +
FloatToStrF(tmp->MoverParameters->AnPos, ffFixed, 6, 2); to_string(tmp->MoverParameters->AnPos, 2);
OutText2 += AnsiString(", Ft:") + OutText2 += ", Ft:" +
FloatToStrF(tmp->MoverParameters->Ft * 0.001f, ffFixed, 4, 0); to_string(tmp->MoverParameters->Ft * 0.001f, 0);
OutText2 += AnsiString(", HV0:") + OutText2 += ", HV0:" +
FloatToStrF(tmp->MoverParameters->HVCouplers[0][1], ffFixed, 4, 0); to_string(tmp->MoverParameters->HVCouplers[0][1], 0);
OutText2 += AnsiString("@") + OutText2 += "@" +
FloatToStrF(tmp->MoverParameters->HVCouplers[0][0], ffFixed, 4, 0); to_string(tmp->MoverParameters->HVCouplers[0][0], 0);
OutText2 += AnsiString("+HV1:") + OutText2 += "+HV1:" +
FloatToStrF(tmp->MoverParameters->HVCouplers[1][1], ffFixed, 4, 0); to_string(tmp->MoverParameters->HVCouplers[1][1], 0);
OutText2 += AnsiString("@") + OutText2 += "@" +
FloatToStrF(tmp->MoverParameters->HVCouplers[1][0], ffFixed, 4, 0); to_string(tmp->MoverParameters->HVCouplers[1][0], 0);
OutText2 += AnsiString(" TC:") + OutText2 += " TC:" +
FloatToStrF(tmp->MoverParameters->TotalCurrent, ffFixed, 4, 0); to_string(tmp->MoverParameters->TotalCurrent, 0);
// OutText3= AnsiString("BP: // OutText3= AnsiString("BP:
// ")+FloatToStrF(tmp->MoverParameters->BrakePress,ffFixed,5,2)+AnsiString(", // ")+FloatToStrF(tmp->MoverParameters->BrakePress,ffFixed,5,2)+AnsiString(",
// "); // ");
@@ -2008,27 +2010,27 @@ bool TWorld::Update()
// OutText2+= " GetLast: // OutText2+= " GetLast:
// "+AnsiString(tmp->GetLastDynamic(1)->MoverParameters->Name)+" Damage // "+AnsiString(tmp->GetLastDynamic(1)->MoverParameters->Name)+" Damage
// status="+tmp->MoverParameters->EngineDescription(0)+" Engine status: "; // status="+tmp->MoverParameters->EngineDescription(0)+" Engine status: ";
OutText3 = AnsiString("BP: ") + OutText3 = ("BP: ") +
FloatToStrF(tmp->MoverParameters->BrakePress, ffFixed, 5, 2) + to_string(tmp->MoverParameters->BrakePress, 2) +
AnsiString(", "); (", ");
OutText3 += FloatToStrF(tmp->MoverParameters->BrakeStatus, ffFixed, 5, 0) + OutText3 += to_string(tmp->MoverParameters->BrakeStatus, 0) +
AnsiString(", "); (", ");
OutText3 += AnsiString("PP: ") + OutText3 += ("PP: ") +
FloatToStrF(tmp->MoverParameters->PipePress, ffFixed, 5, 2) + to_string(tmp->MoverParameters->PipePress, 2) +
AnsiString("/"); ("/");
OutText3 += FloatToStrF(tmp->MoverParameters->ScndPipePress, ffFixed, 5, 2) + OutText3 += to_string(tmp->MoverParameters->ScndPipePress, 2) +
AnsiString("/"); ("/");
OutText3 += FloatToStrF(tmp->MoverParameters->EqvtPipePress, ffFixed, 5, 2) + OutText3 += to_string(tmp->MoverParameters->EqvtPipePress, 2) +
AnsiString(", "); (", ");
OutText3 += AnsiString("BVP: ") + OutText3 += ("BVP: ") +
FloatToStrF(tmp->MoverParameters->Volume, ffFixed, 5, 3) + to_string(tmp->MoverParameters->Volume, 3) +
AnsiString(", "); (", ");
OutText3 += FloatToStrF(tmp->MoverParameters->CntrlPipePress, ffFixed, 5, 3) + OutText3 += to_string(tmp->MoverParameters->CntrlPipePress, 3) +
AnsiString(", "); (", ");
OutText3 += FloatToStrF(tmp->MoverParameters->Hamulec->GetCRP(), ffFixed, 5, 3) + OutText3 += to_string(tmp->MoverParameters->Hamulec->GetCRP(), 3) +
AnsiString(", "); (", ");
OutText3 += FloatToStrF(tmp->MoverParameters->BrakeStatus, ffFixed, 5, 0) + OutText3 += to_string(tmp->MoverParameters->BrakeStatus, 0) +
AnsiString(", "); (", ");
// OutText3+=AnsiString("BVP: // OutText3+=AnsiString("BVP:
// ")+FloatToStrF(tmp->MoverParameters->BrakeVP(),ffFixed,5,2)+AnsiString(", // ")+FloatToStrF(tmp->MoverParameters->BrakeVP(),ffFixed,5,2)+AnsiString(",
// "); // ");
@@ -2041,11 +2043,11 @@ bool TWorld::Update()
// "); // ");
if (tmp->MoverParameters->ManualBrakePos > 0) if (tmp->MoverParameters->ManualBrakePos > 0)
OutText3 += AnsiString("manual brake active. "); OutText3 += ("manual brake active. ");
else if (tmp->MoverParameters->LocalBrakePos > 0) else if (tmp->MoverParameters->LocalBrakePos > 0)
OutText3 += AnsiString("local brake active. "); OutText3 += ("local brake active. ");
else else
OutText3 += AnsiString("local brake inactive. "); OutText3 += ("local brake inactive. ");
/* /*
//OutText3+=AnsiString("LSwTim: //OutText3+=AnsiString("LSwTim:
")+FloatToStrF(tmp->MoverParameters->LastSwitchingTime,ffFixed,5,2); ")+FloatToStrF(tmp->MoverParameters->LastSwitchingTime,ffFixed,5,2);
@@ -2077,20 +2079,20 @@ bool TWorld::Update()
// OutText4=tmp->Mechanik->StopReasonText(); // OutText4=tmp->Mechanik->StopReasonText();
// if (!OutText4.IsEmpty()) OutText4+="; "; //aby ³adniejszy odstêp by³ // if (!OutText4.IsEmpty()) OutText4+="; "; //aby ³adniejszy odstêp by³
// if (Controlled->Mechanik && (Controlled->Mechanik->AIControllFlag==AIdriver)) // if (Controlled->Mechanik && (Controlled->Mechanik->AIControllFlag==AIdriver))
AnsiString flags = "bwaccmlshhhoibsgvdp; "; // flagi AI (definicja w Driver.h) std::string flags = "bwaccmlshhhoibsgvdp; "; // flagi AI (definicja w Driver.h)
for (int i = 0, j = 1; i < 19; ++i, j <<= 1) for (int i = 0, j = 1; i < 19; ++i, j <<= 1)
if (tmp->Mechanik->DrivigFlags() & j) // jak bit ustawiony if (tmp->Mechanik->DrivigFlags() & j) // jak bit ustawiony
flags[i + 1] ^= 0x20; // to zmiana na wielk¹ literê toupper(flags[i + 1]); // ^= 0x20; // to zmiana na wielk¹ literê
OutText4 = flags; OutText4 = flags;
OutText4 += OutText4 +=
AnsiString("Driver: Vd=") + ("Driver: Vd=") +
FloatToStrF(tmp->Mechanik->VelDesired, ffFixed, 4, 0) + AnsiString(" ad=") + to_string(tmp->Mechanik->VelDesired, 0) + (" ad=") +
FloatToStrF(tmp->Mechanik->AccDesired, ffFixed, 5, 2) + AnsiString(" Pd=") + to_string(tmp->Mechanik->AccDesired, 2) + (" Pd=") +
FloatToStrF(tmp->Mechanik->ActualProximityDist, ffFixed, 4, 0) + to_string(tmp->Mechanik->ActualProximityDist, 0) +
AnsiString(" Vn=") + FloatToStrF(tmp->Mechanik->VelNext, ffFixed, 4, 0) + (" Vn=") + to_string(tmp->Mechanik->VelNext, 0) +
AnsiString(" VSm=") + FloatToStrF(tmp->Mechanik->VelSignalLast, ffFixed, 4, 0) + (" VSm=") + to_string(tmp->Mechanik->VelSignalLast, 0) +
AnsiString(" VLm=") + FloatToStrF(tmp->Mechanik->VelLimitLast, ffFixed, 4, 0) + (" VLm=") + to_string(tmp->Mechanik->VelLimitLast, 0) +
AnsiString(" VRd=") + FloatToStrF(tmp->Mechanik->VelRoad, ffFixed, 4, 0); (" VRd=") + to_string(tmp->Mechanik->VelRoad, 0);
if (tmp->Mechanik->VelNext == 0.0) if (tmp->Mechanik->VelNext == 0.0)
if (tmp->Mechanik->eSignNext) if (tmp->Mechanik->eSignNext)
{ // jeœli ma zapamiêtany event semafora { // jeœli ma zapamiêtany event semafora
@@ -2100,19 +2102,19 @@ bool TWorld::Update()
")"; // nazwa eventu semafora ")"; // nazwa eventu semafora
} }
} }
if (!OutText4.IsEmpty()) if (!OutText4.empty())
OutText4 += "; "; // aby ³adniejszy odstêp by³ OutText4 += "; "; // aby ³adniejszy odstêp by³
// informacja o sprzêgach nawet bez mechanika // informacja o sprzêgach nawet bez mechanika
OutText4 += OutText4 +=
"C0=" + (tmp->PrevConnected ? "C0=" + (tmp->PrevConnected ?
tmp->PrevConnected->GetName() + ":" + tmp->PrevConnected->GetName() + ":" +
AnsiString(tmp->MoverParameters->Couplers[0].CouplingFlag) : to_string(tmp->MoverParameters->Couplers[0].CouplingFlag) :
AnsiString("NULL")); string("NULL"));
OutText4 += OutText4 +=
" C1=" + (tmp->NextConnected ? " C1=" + (tmp->NextConnected ?
tmp->NextConnected->GetName() + ":" + tmp->NextConnected->GetName() + ":" +
AnsiString(tmp->MoverParameters->Couplers[1].CouplingFlag) : to_string(tmp->MoverParameters->Couplers[1].CouplingFlag) :
AnsiString("NULL")); string("NULL"));
if (Console::Pressed(VK_F2)) if (Console::Pressed(VK_F2))
{ {
WriteLog(OutText1); WriteLog(OutText1);
@@ -2130,18 +2132,18 @@ bool TWorld::Update()
glRasterPos2f(-0.25f, 0.20f); glRasterPos2f(-0.25f, 0.20f);
// OutText1="Scan distance: "+AnsiString(tmp->Mechanik->scanmax)+", back: // OutText1="Scan distance: "+AnsiString(tmp->Mechanik->scanmax)+", back:
// "+AnsiString(tmp->Mechanik->scanback); // "+AnsiString(tmp->Mechanik->scanback);
OutText1 = "Time: " + AnsiString((int)GlobalTime->hh) + ":"; OutText1 = "Time: " + to_string((int)GlobalTime->hh) + ":";
int i = GlobalTime->mm; // bo inaczej potrafi zrobiæ "hh:010" int i = GlobalTime->mm; // bo inaczej potrafi zrobiæ "hh:010"
if (i < 10) if (i < 10)
OutText1 += "0"; OutText1 += "0";
OutText1 += AnsiString(i); // minuty OutText1 += to_string(i); // minuty
OutText1 += ":"; OutText1 += ":";
i = floor(GlobalTime->mr); // bo inaczej potrafi zrobiæ "hh:mm:010" i = floor(GlobalTime->mr); // bo inaczej potrafi zrobiæ "hh:mm:010"
if (i < 10) if (i < 10)
OutText1 += "0"; OutText1 += "0";
OutText1 += AnsiString(i); OutText1 += to_string(i);
OutText1 += OutText1 +=
AnsiString(". Vel: ") + FloatToStrF(tmp->GetVelocity(), ffFixed, 6, 1); (". Vel: ") + to_string(tmp->GetVelocity(), 1);
OutText1 += ". Scan table:"; OutText1 += ". Scan table:";
glPrint(Global::Bezogonkow(OutText1).c_str()); glPrint(Global::Bezogonkow(OutText1).c_str());
i = -1; i = -1;
@@ -2152,15 +2154,15 @@ bool TWorld::Update()
} }
// podsumowanie sensu tabelki // podsumowanie sensu tabelki
OutText4 = OutText4 =
AnsiString("Driver: Vd=") + ("Driver: Vd=") +
FloatToStrF(tmp->Mechanik->VelDesired, ffFixed, 4, 0) + AnsiString(" ad=") + to_string(tmp->Mechanik->VelDesired, 0) + (" ad=") +
FloatToStrF(tmp->Mechanik->AccDesired, ffFixed, 5, 2) + AnsiString(" Pd=") + to_string(tmp->Mechanik->AccDesired, 2) + (" Pd=") +
FloatToStrF(tmp->Mechanik->ActualProximityDist, ffFixed, 4, 0) + to_string(tmp->Mechanik->ActualProximityDist, 0) +
AnsiString(" Vn=") + FloatToStrF(tmp->Mechanik->VelNext, ffFixed, 4, 0) + (" Vn=") + to_string(tmp->Mechanik->VelNext, 0) +
AnsiString("\n VSm=") + FloatToStrF(tmp->Mechanik->VelSignalLast, ffFixed, 4, 0) + ("\n VSm=") + to_string(tmp->Mechanik->VelSignalLast, 0) +
AnsiString(" VLm=") + FloatToStrF(tmp->Mechanik->VelLimitLast, ffFixed, 4, 0) + (" VLm=") + to_string(tmp->Mechanik->VelLimitLast, 0) +
AnsiString(" VRd=") + FloatToStrF(tmp->Mechanik->VelRoad, ffFixed, 4, 0) + (" VRd=") + to_string(tmp->Mechanik->VelRoad, 0) +
AnsiString(" VSig=") + FloatToStrF(tmp->Mechanik->VelSignal, ffFixed, 4, 0); (" VSig=") + to_string(tmp->Mechanik->VelSignal, 0);
if (tmp->Mechanik->VelNext == 0.0) if (tmp->Mechanik->VelNext == 0.0)
if (tmp->Mechanik->eSignNext) if (tmp->Mechanik->eSignNext)
{ // jeœli ma zapamiêtany event semafora { // jeœli ma zapamiêtany event semafora
@@ -2176,16 +2178,15 @@ bool TWorld::Update()
} // koniec obs³ugi, gdy mamy wskaŸnik do pojazdu } // koniec obs³ugi, gdy mamy wskaŸnik do pojazdu
else else
{ // wyœwietlenie wspó³rzêdnych w scenerii oraz k¹ta kamery, gdy nie mamy wskaŸnika { // wyœwietlenie wspó³rzêdnych w scenerii oraz k¹ta kamery, gdy nie mamy wskaŸnika
OutText1 = "Camera position: " + FloatToStrF(Camera.Pos.x, ffFixed, 6, 2) + " " + OutText1 = "Camera position: " + to_string(Camera.Pos.x, 2) + " " +
FloatToStrF(Camera.Pos.y, ffFixed, 6, 2) + " " + to_string(Camera.Pos.y, 2) + " " +
FloatToStrF(Camera.Pos.z, ffFixed, 6, 2); to_string(Camera.Pos.z, 2);
OutText1 += ", azimuth: " + OutText1 += ", azimuth: " +
FloatToStrF(180.0 - RadToDeg(Camera.Yaw), ffFixed, 3, to_string(180.0 - RadToDeg(Camera.Yaw), 0); // ma byæ azymut, czyli 0 na pó³nocy i roœnie na wschód
0); // ma byæ azymut, czyli 0 na pó³nocy i roœnie na wschód
OutText1 += OutText1 +=
" " + " " +
AnsiString("S SEE NEN NWW SW") string("S SEE NEN NWW SW")
.SubString(1 + 2 * floor(fmod(8 + (Camera.Yaw + 0.5 * M_PI_4) / M_PI_4, 8)), 2); .substr(1 + 2 * floor(fmod(8 + (Camera.Yaw + 0.5 * M_PI_4) / M_PI_4, 8)), 2);
} }
// OutText3= AnsiString(" Online documentation (PL, ENG, DE, soon CZ): // OutText3= AnsiString(" Online documentation (PL, ENG, DE, soon CZ):
// http://www.eu07.pl"); // http://www.eu07.pl");
@@ -2257,69 +2258,64 @@ bool TWorld::Update()
{ // tu mozna dodac dopisywanie do logu przebiegu lokomotywy { // tu mozna dodac dopisywanie do logu przebiegu lokomotywy
// Global::iViewMode=VK_F10; // Global::iViewMode=VK_F10;
// return false; // return false;
OutText1 = AnsiString("To quit press [Y] key."); OutText1 = ("To quit press [Y] key.");
OutText3 = AnsiString("Aby zakonczyc program, przycisnij klawisz [Y]."); OutText3 = ("Aby zakonczyc program, przycisnij klawisz [Y].");
} }
else if (Controlled && DebugModeFlag && !Global::iTextMode) else if (Controlled && DebugModeFlag && !Global::iTextMode)
{ {
OutText1 += AnsiString("; vel ") + FloatToStrF(Controlled->GetVelocity(), ffFixed, 6, 2); OutText1 += ("; vel ") + to_string(Controlled->GetVelocity(), 2);
OutText1 += AnsiString("; pos ") + FloatToStrF(Controlled->GetPosition().x, ffFixed, 6, 2); OutText1 += ("; pos ") + to_string(Controlled->GetPosition().x, 2);
OutText1 += AnsiString(" ; ") + FloatToStrF(Controlled->GetPosition().y, ffFixed, 6, 2); OutText1 += (" ; ") + to_string(Controlled->GetPosition().y, 2);
OutText1 += AnsiString(" ; ") + FloatToStrF(Controlled->GetPosition().z, ffFixed, 6, 2); OutText1 += (" ; ") + to_string(Controlled->GetPosition().z, 2);
OutText1 += AnsiString("; dist=") + OutText1 += ("; dist=") + to_string(Controlled->MoverParameters->DistCounter, 4);
FloatToStrF(Controlled->MoverParameters->DistCounter, ffFixed, 8, 4);
// double a= acos( DotProduct(Normalize(Controlled->GetDirection()),vWorldFront)); // double a= acos( DotProduct(Normalize(Controlled->GetDirection()),vWorldFront));
// OutText+= AnsiString("; angle ")+FloatToStrF(a/M_PI*180,ffFixed,6,2); // OutText+= AnsiString("; angle ")+FloatToStrF(a/M_PI*180,ffFixed,6,2);
OutText1 += AnsiString("; d_omega ") + OutText1 +=
FloatToStrF(Controlled->MoverParameters->dizel_engagedeltaomega, ffFixed, 6, 3); ("; d_omega ") + to_string(Controlled->MoverParameters->dizel_engagedeltaomega, 3);
OutText2 = AnsiString("HamZ=") + OutText2 = ("HamZ=") + to_string(Controlled->MoverParameters->fBrakeCtrlPos, 1);
FloatToStrF(Controlled->MoverParameters->fBrakeCtrlPos, ffFixed, 6, 1); OutText2 += ("; HamP=") + to_string(mvControlled->LocalBrakePos);
OutText2 += AnsiString("; HamP=") + AnsiString(mvControlled->LocalBrakePos); OutText2 += ("/") + to_string(Controlled->MoverParameters->LocalBrakePosA, 2);
OutText2 += AnsiString("/") + // mvControlled->MainCtrlPos;
FloatToStrF(Controlled->MoverParameters->LocalBrakePosA, ffFixed, 6, 2);
// mvControlled->MainCtrlPos;
// if (mvControlled->MainCtrlPos<0) // if (mvControlled->MainCtrlPos<0)
// OutText2+= AnsiString("; nastawnik 0"); // OutText2+= AnsiString("; nastawnik 0");
// if (mvControlled->MainCtrlPos>iPozSzereg) // if (mvControlled->MainCtrlPos>iPozSzereg)
OutText2 += AnsiString("; NasJ=") + AnsiString(mvControlled->MainCtrlPos); OutText2 += ("; NasJ=") + to_string(mvControlled->MainCtrlPos);
// else // else
// OutText2+= AnsiString("; nastawnik S") + mvControlled->MainCtrlPos; // OutText2+= AnsiString("; nastawnik S") + mvControlled->MainCtrlPos;
OutText2 += AnsiString("(") + AnsiString(mvControlled->MainCtrlActualPos); OutText2 += ("(") + to_string(mvControlled->MainCtrlActualPos);
OutText2 += AnsiString("); NasB=") + AnsiString(mvControlled->ScndCtrlPos); OutText2 += ("); NasB=") + to_string(mvControlled->ScndCtrlPos);
OutText2 += AnsiString("(") + AnsiString(mvControlled->ScndCtrlActualPos); OutText2 += ("(") + to_string(mvControlled->ScndCtrlActualPos);
if (mvControlled->TrainType == dt_EZT) if (mvControlled->TrainType == dt_EZT)
OutText2 += AnsiString("); I=") + AnsiString(int(mvControlled->ShowCurrent(0))); OutText2 += ("); I=") + to_string(int(mvControlled->ShowCurrent(0)));
else else
OutText2 += AnsiString("); I=") + AnsiString(int(mvControlled->Im)); OutText2 += ("); I=") + to_string(int(mvControlled->Im));
// OutText2+=AnsiString("; // OutText2+=AnsiString(";
// I2=")+FloatToStrF(Controlled->NextConnected->MoverParameters->Im,ffFixed,6,2); // I2=")+FloatToStrF(Controlled->NextConnected->MoverParameters->Im,ffFixed,6,2);
OutText2 += AnsiString("; U=") + OutText2 += ("; U=") +
AnsiString(int(mvControlled->RunningTraction.TractionVoltage + 0.5)); to_string(int(mvControlled->RunningTraction.TractionVoltage + 0.5));
// OutText2+=AnsiString("; rvent=")+FloatToStrF(mvControlled->RventRot,ffFixed,6,2); // OutText2+=AnsiString("; rvent=")+FloatToStrF(mvControlled->RventRot,ffFixed,6,2);
OutText2 += AnsiString("; R=") + OutText2 += ("; R=") +
FloatToStrF(Controlled->MoverParameters->RunningShape.R, ffFixed, 4, 1); to_string(Controlled->MoverParameters->RunningShape.R, 1);
OutText2 += AnsiString(" An=") + FloatToStrF(Controlled->MoverParameters->AccN, ffFixed, 4, OutText2 += (" An=") + to_string(Controlled->MoverParameters->AccN, 2); // przyspieszenie poprzeczne
2); // przyspieszenie poprzeczne
if (tprev != int(GlobalTime->mr)) if (tprev != int(GlobalTime->mr))
{ {
tprev = GlobalTime->mr; tprev = GlobalTime->mr;
Acc = (Controlled->MoverParameters->Vel - VelPrev) / 3.6; Acc = (Controlled->MoverParameters->Vel - VelPrev) / 3.6;
VelPrev = Controlled->MoverParameters->Vel; VelPrev = Controlled->MoverParameters->Vel;
} }
OutText2 += AnsiString("; As=") + FloatToStrF(Acc/*Controlled->MoverParameters->AccS*/, ffFixed, 4, OutText2 += ("; As=") + to_string(Acc/*Controlled->MoverParameters->AccS*/, 2); // przyspieszenie wzd³u¿ne
2); // przyspieszenie wzd³u¿ne
// OutText2+=AnsiString("; P=")+FloatToStrF(mvControlled->EnginePower,ffFixed,6,1); // OutText2+=AnsiString("; P=")+FloatToStrF(mvControlled->EnginePower,ffFixed,6,1);
OutText3 += AnsiString("cyl.ham. ") + OutText3 += ("cyl.ham. ") +
FloatToStrF(Controlled->MoverParameters->BrakePress, ffFixed, 5, 2); to_string(Controlled->MoverParameters->BrakePress, 2);
OutText3 += AnsiString("; prz.gl. ") + OutText3 += ("; prz.gl. ") +
FloatToStrF(Controlled->MoverParameters->PipePress, ffFixed, 5, 2); to_string(Controlled->MoverParameters->PipePress, 2);
OutText3 += AnsiString("; zb.gl. ") + OutText3 += ("; zb.gl. ") +
FloatToStrF(Controlled->MoverParameters->CompressedVolume, ffFixed, 6, 2); to_string(Controlled->MoverParameters->CompressedVolume, 2);
// youBy - drugi wezyk // youBy - drugi wezyk
OutText3 += AnsiString("; p.zas. ") + OutText3 += ("; p.zas. ") +
FloatToStrF(Controlled->MoverParameters->ScndPipePress, ffFixed, 6, 2); to_string(Controlled->MoverParameters->ScndPipePress, 2);
if (Controlled->MoverParameters->EngineType == ElectricInductionMotor) if (Controlled->MoverParameters->EngineType == ElectricInductionMotor)
{ {
@@ -2329,30 +2325,30 @@ bool TWorld::Update()
{ {
glRasterPos2f(-0.25f, 0.16f - 0.01f * i); glRasterPos2f(-0.25f, 0.16f - 0.01f * i);
if (Controlled->MoverParameters->eimc[i] < 10) if (Controlled->MoverParameters->eimc[i] < 10)
OutText4 = FloatToStrF(Controlled->MoverParameters->eimc[i], ffFixed, 6, 3); OutText4 = to_string(Controlled->MoverParameters->eimc[i], 3);
else else
OutText4 = FloatToStrF(Controlled->MoverParameters->eimc[i], ffGeneral, 5, 3); OutText4 = to_string(Controlled->MoverParameters->eimc[i], 3);
glPrint(OutText4.c_str()); glPrint(OutText4.c_str());
} }
for (int i = 0; i <= 20; i++) for (int i = 0; i <= 20; i++)
{ {
glRasterPos2f(-0.2f, 0.16f - 0.01f * i); glRasterPos2f(-0.2f, 0.16f - 0.01f * i);
if (Controlled->MoverParameters->eimv[i] < 10) if (Controlled->MoverParameters->eimv[i] < 10)
OutText4 = FloatToStrF(Controlled->MoverParameters->eimv[i], ffFixed, 6, 3); OutText4 = to_string(Controlled->MoverParameters->eimv[i], 3);
else else
OutText4 = FloatToStrF(Controlled->MoverParameters->eimv[i], ffGeneral, 5, 3); OutText4 = to_string(Controlled->MoverParameters->eimv[i], 3);
glPrint(OutText4.c_str()); glPrint(OutText4.c_str());
} }
for (int i = 0; i <= 10; i++) for (int i = 0; i <= 10; i++)
{ {
glRasterPos2f(-0.15f, 0.16f - 0.01f * i); glRasterPos2f(-0.15f, 0.16f - 0.01f * i);
OutText4 = FloatToStrF(Train->fPress[i][0], ffFixed, 6, 3); OutText4 = to_string(Train->fPress[i][0], 3);
glPrint(OutText4.c_str()); glPrint(OutText4.c_str());
} }
for (int i = 0; i <= 8; i++) for (int i = 0; i <= 8; i++)
{ {
glRasterPos2f(-0.15f, 0.04f - 0.01f * i); glRasterPos2f(-0.15f, 0.04f - 0.01f * i);
OutText4 = FloatToStrF(Controlled->MED[0][i], ffFixed, 6, 3); OutText4 = to_string(Controlled->MED[0][i], 3);
glPrint(OutText4.c_str()); glPrint(OutText4.c_str());
} }
for (int i = 0; i <= 8; i++) for (int i = 0; i <= 8; i++)
@@ -2360,7 +2356,7 @@ bool TWorld::Update()
for (int j = 0; j <= 9; j++) for (int j = 0; j <= 9; j++)
{ {
glRasterPos2f(0.05f + 0.03f * i, 0.16f - 0.01f * j); glRasterPos2f(0.05f + 0.03f * i, 0.16f - 0.01f * j);
OutText4 = FloatToStrF(Train->fEIMParams[i][j], ffGeneral, 4, 2); OutText4 = to_string(Train->fEIMParams[i][j], 2);
glPrint(OutText4.c_str()); glPrint(OutText4.c_str());
} }
} }
@@ -2434,37 +2430,37 @@ bool TWorld::Update()
// McZapkie: predkosc szlakowa // McZapkie: predkosc szlakowa
if (Controlled->MoverParameters->RunningTrack.Velmax == -1) if (Controlled->MoverParameters->RunningTrack.Velmax == -1)
{ {
OutText3 += AnsiString(" Vtrack=Vmax"); OutText3 += (" Vtrack=Vmax");
} }
else else
{ {
OutText3 += OutText3 +=
AnsiString(" Vtrack ") + (" Vtrack ") +
FloatToStrF(Controlled->MoverParameters->RunningTrack.Velmax, ffFixed, 8, 2); to_string(Controlled->MoverParameters->RunningTrack.Velmax, 2);
} }
// WriteLog(Controlled->MoverParameters->TrainType.c_str()); // WriteLog(Controlled->MoverParameters->TrainType.c_str());
if ((mvControlled->EnginePowerSource.SourceType == CurrentCollector) || if ((mvControlled->EnginePowerSource.SourceType == CurrentCollector) ||
(mvControlled->TrainType == dt_EZT)) (mvControlled->TrainType == dt_EZT))
{ {
OutText3 += OutText3 +=
AnsiString("; pant. ") + FloatToStrF(mvControlled->PantPress, ffFixed, 8, 2); ("; pant. ") + to_string(mvControlled->PantPress, 2);
OutText3 += (mvControlled->bPantKurek3 ? "=ZG" : "|ZG"); OutText3 += (mvControlled->bPantKurek3 ? "=ZG" : "|ZG");
} }
// McZapkie: komenda i jej parametry // McZapkie: komenda i jej parametry
if (Controlled->MoverParameters->CommandIn.Command != AnsiString("")) if (Controlled->MoverParameters->CommandIn.Command != (""))
OutText4 = AnsiString("C:") + OutText4 = ("C:") +
AnsiString(Controlled->MoverParameters->CommandIn.Command) + (Controlled->MoverParameters->CommandIn.Command) +
AnsiString(" V1=") + (" V1=") +
FloatToStrF(Controlled->MoverParameters->CommandIn.Value1, ffFixed, 5, 0) + to_string(Controlled->MoverParameters->CommandIn.Value1, 0) +
AnsiString(" V2=") + (" V2=") +
FloatToStrF(Controlled->MoverParameters->CommandIn.Value2, ffFixed, 5, 0); to_string(Controlled->MoverParameters->CommandIn.Value2, 0);
if (Controlled->Mechanik && (Controlled->Mechanik->AIControllFlag == AIdriver)) if (Controlled->Mechanik && (Controlled->Mechanik->AIControllFlag == AIdriver))
OutText4 += OutText4 +=
AnsiString("AI: Vd=") + ("AI: Vd=") +
FloatToStrF(Controlled->Mechanik->VelDesired, ffFixed, 4, 0) + AnsiString(" ad=") + to_string(Controlled->Mechanik->VelDesired, 0) + (" ad=") +
FloatToStrF(Controlled->Mechanik->AccDesired, ffFixed, 5, 2) + AnsiString(" Pd=") + to_string(Controlled->Mechanik->AccDesired, 2) + (" Pd=") +
FloatToStrF(Controlled->Mechanik->ActualProximityDist, ffFixed, 4, 0) + to_string(Controlled->Mechanik->ActualProximityDist, 0) +
AnsiString(" Vn=") + FloatToStrF(Controlled->Mechanik->VelNext, ffFixed, 4, 0); (" Vn=") + to_string(Controlled->Mechanik->VelNext, 0);
} }
// ABu 150205: prosty help, zeby sie na forum nikt nie pytal, jak ma ruszyc :) // ABu 150205: prosty help, zeby sie na forum nikt nie pytal, jak ma ruszyc :)
@@ -2476,15 +2472,15 @@ bool TWorld::Update()
{ // informacja o wersji, sposobie wyœwietlania i b³êdach OpenGL { // informacja o wersji, sposobie wyœwietlania i b³êdach OpenGL
// Global::iViewMode=VK_F9; // Global::iViewMode=VK_F9;
OutText1 = Global::asVersion; // informacja o wersji OutText1 = Global::asVersion; // informacja o wersji
OutText2 = AnsiString("Rendering mode: ") + (Global::bUseVBO ? "VBO" : "Display Lists"); OutText2 = string("Rendering mode: ") + (Global::bUseVBO ? "VBO" : "Display Lists");
if (Global::iMultiplayer) if (Global::iMultiplayer)
OutText2 += ". Multiplayer is active"; OutText2 += ". Multiplayer is active";
OutText2 += "."; OutText2 += ".";
GLenum err = glGetError(); GLenum err = glGetError();
if (err != GL_NO_ERROR) if (err != GL_NO_ERROR)
{ {
OutText3 = "OpenGL error " + AnsiString(err) + ": " + OutText3 = "OpenGL error " + to_string(err) + ": " +
Global::Bezogonkow(AnsiString((char *)gluErrorString(err))); Global::Bezogonkow(((char *)gluErrorString(err)));
} }
} }
if (Global::iTextMode == VK_F3) if (Global::iTextMode == VK_F3)
@@ -2502,8 +2498,8 @@ bool TWorld::Update()
glColor3f(1.0f, 1.0f, 1.0f); // a, damy bia³ym glColor3f(1.0f, 1.0f, 1.0f); // a, damy bia³ym
// glTranslatef(0.0f,0.0f,-0.50f); // glTranslatef(0.0f,0.0f,-0.50f);
glRasterPos2f(-0.25f, 0.20f); glRasterPos2f(-0.25f, 0.20f);
OutText1 = AnsiString(tmp->Mechanik->Relation().c_str()) + " (" + OutText1 = tmp->Mechanik->Relation() + " (" +
tmp->Mechanik->Timetable()->TrainName.c_str() + ")"; tmp->Mechanik->Timetable()->TrainName + ")";
glPrint(Global::Bezogonkow(OutText1, true).c_str()); glPrint(Global::Bezogonkow(OutText1, true).c_str());
glRasterPos2f(-0.25f, 0.19f); glRasterPos2f(-0.25f, 0.19f);
// glPrint("|============================|=======|=======|=====|"); // glPrint("|============================|=======|=======|=====|");
@@ -2514,22 +2510,22 @@ bool TWorld::Update()
for (int i = tmp->Mechanik->iStationStart; i <= tt->StationCount; ++i) for (int i = tmp->Mechanik->iStationStart; i <= tt->StationCount; ++i)
{ // wyœwietlenie pozycji z rozk³adu { // wyœwietlenie pozycji z rozk³adu
t = tt->TimeTable + i; // linijka rozk³adu t = tt->TimeTable + i; // linijka rozk³adu
OutText1 = AnsiString(AnsiString(t->StationName.c_str()) + OutText1 = (t->StationName +
" ").SubString(1, 26); " ").substr(1, 26);
OutText2 = (t->Ah >= 0) ? OutText2 = (t->Ah >= 0) ?
AnsiString(int(100 + t->Ah)).SubString(2, 2) + ":" + to_string(int(100 + t->Ah)).substr(2, 2) + ":" +
AnsiString(int(100 + t->Am)).SubString(2, 2) : to_string(int(100 + t->Am)).substr(2, 2) :
AnsiString(" "); string(" ");
OutText3 = (t->Dh >= 0) ? OutText3 = (t->Dh >= 0) ?
AnsiString(int(100 + t->Dh)).SubString(2, 2) + ":" + to_string(int(100 + t->Dh)).substr(2, 2) + ":" +
AnsiString(int(100 + t->Dm)).SubString(2, 2) : to_string(int(100 + t->Dm)).substr(2, 2) :
AnsiString(" "); string(" ");
OutText4 = " " + FloatToStrF(t->vmax, ffFixed, 3, 0); OutText4 = " " + to_string(t->vmax, 0);
OutText4 = OutText4.SubString(OutText4.Length() - 2, OutText4 = OutText4.substr(OutText4.length() - 2,
3); // z wyrównaniem do prawej 3); // z wyrównaniem do prawej
// if (AnsiString(t->StationWare).Pos("@")) // if (AnsiString(t->StationWare).Pos("@"))
OutText1 = "| " + OutText1 + " | " + OutText2 + " | " + OutText3 + OutText1 = "| " + OutText1 + " | " + OutText2 + " | " + OutText3 +
" | " + OutText4 + " | " + AnsiString(t->StationWare.c_str()); " | " + OutText4 + " | " + t->StationWare;
glRasterPos2f(-0.25f, glRasterPos2f(-0.25f,
0.18f - 0.02f * (i - tmp->Mechanik->iStationStart)); 0.18f - 0.02f * (i - tmp->Mechanik->iStationStart));
if ((tmp->Mechanik->iStationStart < tt->StationIndex) ? if ((tmp->Mechanik->iStationStart < tt->StationIndex) ?
@@ -2588,7 +2584,7 @@ bool TWorld::Update()
glColor3f(1.0f, 1.0f, 0.0f); //¿ó³te glColor3f(1.0f, 1.0f, 0.0f); //¿ó³te
for (int i = 0; i < 5; ++i) for (int i = 0; i < 5; ++i)
{ // kilka linijek { // kilka linijek
if (Global::asTranscript[i].IsEmpty()) if (Global::asTranscript[i].empty())
break; // dalej nie trzeba break; // dalej nie trzeba
else else
{ {
@@ -2820,28 +2816,28 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
int i = int i =
int(pRozkaz->cString[8]); // d³ugoœæ pierwszego ³añcucha (z przodu dwa floaty) int(pRozkaz->cString[8]); // d³ugoœæ pierwszego ³añcucha (z przodu dwa floaty)
CommLog( CommLog(
AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " + to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " " +
AnsiString(pRozkaz->cString + 11 + i, (unsigned)(pRozkaz->cString[10 + i])) + string(pRozkaz->cString + 11 + i, (unsigned)(pRozkaz->cString[10 + i])) +
" rcvd"); " rcvd");
TGroundNode *t = Ground.DynamicFind( TGroundNode *t = Ground.DynamicFind(
AnsiString(pRozkaz->cString + 11 + i, string(pRozkaz->cString + 11 + i,
(unsigned)pRozkaz->cString[10 + i])); // nazwa pojazdu jest druga (unsigned)pRozkaz->cString[10 + i])); // nazwa pojazdu jest druga
if (t) if (t)
if (t->DynamicObject->Mechanik) if (t->DynamicObject->Mechanik)
{ {
t->DynamicObject->Mechanik->PutCommand(AnsiString(pRozkaz->cString + 9, i), t->DynamicObject->Mechanik->PutCommand(string(pRozkaz->cString + 9, i),
pRozkaz->fPar[0], pRozkaz->fPar[1], pRozkaz->fPar[0], pRozkaz->fPar[1],
NULL, stopExt); // floaty s¹ z przodu NULL, stopExt); // floaty s¹ z przodu
WriteLog("AI command: " + AnsiString(pRozkaz->cString + 9, i)); WriteLog("AI command: " + string(pRozkaz->cString + 9, i));
} }
} }
break; break;
case 4: // badanie zajêtoœci toru case 4: // badanie zajêtoœci toru
{ {
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " + CommLog(to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " " +
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + " rcvd"); string(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + " rcvd");
TGroundNode *t = Ground.FindGroundNode( TGroundNode *t = Ground.FindGroundNode(
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])), TP_TRACK); string(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])), TP_TRACK);
if (t) if (t)
if (t->pTrack->IsEmpty()) if (t->pTrack->IsEmpty())
Ground.WyslijWolny(t->asName); Ground.WyslijWolny(t->asName);
@@ -2849,8 +2845,8 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
break; break;
case 5: // ustawienie parametrów case 5: // ustawienie parametrów
{ {
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " params " + CommLog(to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " params " +
IntToStr(*pRozkaz->iPar) + " rcvd"); to_string(*pRozkaz->iPar) + " rcvd");
if (*pRozkaz->iPar == 0) // sprawdzenie czasu if (*pRozkaz->iPar == 0) // sprawdzenie czasu
if (*pRozkaz->iPar & 1) // ustawienie czasu if (*pRozkaz->iPar & 1) // ustawienie czasu
{ {
@@ -2874,8 +2870,8 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
case 6: // pobranie parametrów ruchu pojazdu case 6: // pobranie parametrów ruchu pojazdu
if (Global::iMultiplayer) if (Global::iMultiplayer)
{ // Ra 2014-12: to ma dzia³aæ równie¿ dla pojazdów bez obsady { // Ra 2014-12: to ma dzia³aæ równie¿ dla pojazdów bez obsady
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " + CommLog(to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " " +
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + string(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) +
" rcvd"); " rcvd");
if (pRozkaz->cString[0]) // jeœli d³ugoœæ nazwy jest niezerowa if (pRozkaz->cString[0]) // jeœli d³ugoœæ nazwy jest niezerowa
{ // szukamy pierwszego pojazdu o takiej nazwie i odsy³amy parametry ramk¹ #7 { // szukamy pierwszego pojazdu o takiej nazwie i odsy³amy parametry ramk¹ #7
@@ -2884,7 +2880,7 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
t = Ground.DynamicFind( t = Ground.DynamicFind(
Global::asHumanCtrlVehicle); // nazwa pojazdu u¿ytkownika Global::asHumanCtrlVehicle); // nazwa pojazdu u¿ytkownika
else else
t = Ground.DynamicFindAny(AnsiString( t = Ground.DynamicFindAny(string(
pRozkaz->cString + 1, (unsigned)pRozkaz->cString[0])); // nazwa pojazdu pRozkaz->cString + 1, (unsigned)pRozkaz->cString[0])); // nazwa pojazdu
if (t) if (t)
Ground.WyslijNamiary(t); // wys³anie informacji o pojeŸdzie Ground.WyslijNamiary(t); // wys³anie informacji o pojeŸdzie
@@ -2897,31 +2893,31 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
} }
break; break;
case 8: // ponowne wys³anie informacji o zajêtych odcinkach toru case 8: // ponowne wys³anie informacji o zajêtych odcinkach toru
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " all busy track" + " rcvd"); CommLog(to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " all busy track" + " rcvd");
Ground.TrackBusyList(); Ground.TrackBusyList();
break; break;
case 9: // ponowne wys³anie informacji o zajêtych odcinkach izolowanych case 9: // ponowne wys³anie informacji o zajêtych odcinkach izolowanych
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " all busy isolated" + " rcvd"); CommLog(to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " all busy isolated" + " rcvd");
Ground.IsolatedBusyList(); Ground.IsolatedBusyList();
break; break;
case 10: // badanie zajêtoœci jednego odcinka izolowanego case 10: // badanie zajêtoœci jednego odcinka izolowanego
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " + CommLog(to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " " +
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + " rcvd"); string(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + " rcvd");
Ground.IsolatedBusy(AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0]))); Ground.IsolatedBusy(string(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])));
break; break;
case 11: // ustawienie parametrów ruchu pojazdu case 11: // ustawienie parametrów ruchu pojazdu
// Ground.IsolatedBusy(AnsiString(pRozkaz->cString+1,(unsigned)(pRozkaz->cString[0]))); // Ground.IsolatedBusy(AnsiString(pRozkaz->cString+1,(unsigned)(pRozkaz->cString[0])));
break; break;
case 12: // skrocona ramka parametrow pojazdow AI (wszystkich!!) case 12: // skrocona ramka parametrow pojazdow AI (wszystkich!!)
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " obsadzone" + " rcvd"); CommLog(to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " obsadzone" + " rcvd");
Ground.WyslijObsadzone(); Ground.WyslijObsadzone();
// Ground.IsolatedBusy(AnsiString(pRozkaz->cString+1,(unsigned)(pRozkaz->cString[0]))); // Ground.IsolatedBusy(AnsiString(pRozkaz->cString+1,(unsigned)(pRozkaz->cString[0])));
break; break;
case 13: // ramka uszkodzenia i innych stanow pojazdu, np. wylaczenie CA, wlaczenie recznego itd. case 13: // ramka uszkodzenia i innych stanow pojazdu, np. wylaczenie CA, wlaczenie recznego itd.
// WriteLog("Przyszlo 13!"); // WriteLog("Przyszlo 13!");
// WriteLog(pRozkaz->cString); // WriteLog(pRozkaz->cString);
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " + CommLog(to_string(BorlandTime()) + " " + to_string(pRozkaz->iComm) + " " +
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + string(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) +
" rcvd"); " rcvd");
if (pRozkaz->cString[1]) // jeœli d³ugoœæ nazwy jest niezerowa if (pRozkaz->cString[1]) // jeœli d³ugoœæ nazwy jest niezerowa
{ // szukamy pierwszego pojazdu o takiej nazwie i odsy³amy parametry ramk¹ #13 { // szukamy pierwszego pojazdu o takiej nazwie i odsy³amy parametry ramk¹ #13
@@ -2931,7 +2927,7 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
Global::asHumanCtrlVehicle); // nazwa pojazdu u¿ytkownika Global::asHumanCtrlVehicle); // nazwa pojazdu u¿ytkownika
else else
t = Ground.DynamicFindAny( t = Ground.DynamicFindAny(
AnsiString(pRozkaz->cString + 2, string(pRozkaz->cString + 2,
(unsigned)pRozkaz->cString[1])); // nazwa pojazdu (unsigned)pRozkaz->cString[1])); // nazwa pojazdu
if (t) if (t)
{ {

View File

@@ -41,10 +41,10 @@ class TWorld
~TWorld(); ~TWorld();
// double Aspect; // double Aspect;
private: private:
AnsiString OutText1; // teksty na ekranie string OutText1; // teksty na ekranie
AnsiString OutText2; string OutText2;
AnsiString OutText3; string OutText3;
AnsiString OutText4; string OutText4;
void ShowHints(); void ShowHints();
bool Render(); bool Render();
TCamera Camera; TCamera Camera;

View File

@@ -23,6 +23,8 @@ http://mozilla.org/MPL/2.0/.
// Ra: "delete NULL" nic nie zrobi, więc "if (a!=NULL)" jest zbędne // Ra: "delete NULL" nic nie zrobi, więc "if (a!=NULL)" jest zbędne
//#define SafeFree(a) if (a!=NULL) free(a) //#define SafeFree(a) if (a!=NULL) free(a)
//#define M_PI = 3.141592653589793
#define SafeDelete(a) \ #define SafeDelete(a) \
{ \ { \
delete (a); \ delete (a); \