mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 04:19:19 +02:00
1. Poprawione asynchrony.
2. Możliwość zdefiniowania koloru tła ekranu ładowania w eu07.ini. 3. Dodanie logowania ruchu ramek WM_COPYDATA do oddzielnego pliku. 4. Dodana ramka skrócona aktywnych AI. 5. Dodana ramka sterowania uszkodzeniami pojazdów. 6. Dodanie kręciołka od świateł (w tym trakcja wielokrotna). 7. Rozbudowa asynchronów, m.in. tempomat, zadawanie siły (w kN), przeciwpoślizg, czyste ED itd. 8. Dodanie animacji drtzwi odskokowo-przesuwnych. 9. Dodanie możliwości uszkadzania pojazdów (EN57). 10. Uruchomienie sprzęgu WN, zwłaszcza w asynchronach - do przejrzenia logowanie braków napięcia. 11. Wyłączanie radiostopu przez wyłączanie radia, a nie przez ruch zaworem maszynisty. 12. Usunięcie wyłącznika ciśnieniowego w EN57 (proteza, trzeba zrobić wpis na to). 13. Wstępna wersja hamowania rekuperacyjnego wraz z przechodzeniem na hamowanie oporowe. 14. Cała masa nowych zmiennych stanu dostępna dla ekranu (Pythona). 15. Nowa stara smuga z dawnego SPKSu. 16. Inne, które mogłem zapomnieć lub nie uszczegółowić. 17. Poprawione wyświetlanie haslera
This commit is contained in:
278
World.cpp
278
World.cpp
@@ -274,9 +274,9 @@ bool TWorld::Init(HWND NhWnd, HDC hDC)
|
||||
glLoadIdentity();
|
||||
// WriteLog("glClearColor (FogColor[0], FogColor[1], FogColor[2], 0.0); ");
|
||||
// glClearColor (1.0, 0.0, 0.0, 0.0); // Background Color
|
||||
// glClearColor (FogColor[0], FogColor[1], FogColor[2], 0.0); // Background
|
||||
// Color
|
||||
glClearColor(0.2, 0.4, 0.33, 1.0); // Background Color
|
||||
// glClearColor (FogColor[0], FogColor[1], FogColor[2], 0.0);
|
||||
// Background // Color
|
||||
glClearColor(Global::Background[0], Global::Background[1], Global::Background[2], 1.0); // Background Color
|
||||
|
||||
WriteLog("glFogfv(GL_FOG_COLOR, FogColor);");
|
||||
glFogfv(GL_FOG_COLOR, FogColor); // Set Fog Color
|
||||
@@ -846,8 +846,9 @@ void TWorld::OnKeyDown(int cKey)
|
||||
}
|
||||
else if (cKey == 3) //[Ctrl]+[Break]
|
||||
{ // hamowanie wszystkich pojazdów w okolicy
|
||||
Ground.RadioStop(Camera.Pos);
|
||||
}
|
||||
if (Controlled->MoverParameters->Radio)
|
||||
Ground.RadioStop(Camera.Pos);
|
||||
}
|
||||
else if (!Global::iPause) //||(cKey==VK_F4)) //podczas pauzy sterownaie nie dzia³a, F4 tak
|
||||
if (Train)
|
||||
if (Controlled)
|
||||
@@ -1496,44 +1497,52 @@ bool TWorld::Update()
|
||||
// 3. jeœli smuga w³aczona, wyrenderowaæ pojazd u¿ytkownia po dodaniu smugi do sceny
|
||||
if (Train->Controlled()->Battery)
|
||||
{ // trochê na skróty z t¹ bateri¹
|
||||
glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_ONE);
|
||||
// glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_DST_COLOR);
|
||||
glBlendFunc(GL_DST_COLOR, GL_ONE);
|
||||
// glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE);
|
||||
// glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_ONE);
|
||||
// glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_DST_COLOR);
|
||||
// glBlendFunc(GL_SRC_ALPHA_SATURATE,GL_ONE);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glDisable(GL_LIGHTING);
|
||||
glDepthFunc(GL_GEQUAL);
|
||||
glAlphaFunc(GL_GREATER, 0.004);
|
||||
// glDisable(GL_DEPTH_TEST);
|
||||
glDisable(GL_LIGHTING);
|
||||
glDisable(GL_FOG);
|
||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
glBindTexture(GL_TEXTURE_2D, light); // Select our texture
|
||||
glColor4f(0.15f, 0.15f, 0.15f, 0.25f);
|
||||
glBindTexture(GL_TEXTURE_2D, light); // Select our texture
|
||||
glBegin(GL_QUADS);
|
||||
float fSmudge =
|
||||
Train->Dynamic()->MoverParameters->DimHalf.y + 7; // gdzie zaczynaæ smugê
|
||||
if (Train->Controlled()->iLights[0] & 21)
|
||||
{ // wystarczy jeden zapalony z przodu
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(15.0, 0.0, +fSmudge); // rysowanie wzglêdem po³o¿enia modelu
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(-15.0, 0.0, +fSmudge);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(-15.0, 2.5, 250.0);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(15.0, 2.5, 250.0);
|
||||
}
|
||||
for (int i = 15; i <= 35; i++)
|
||||
{
|
||||
float z = i * i * i * 0.01f;//25/4;
|
||||
float C = (36 - i*0.5)*0.05*0.1;
|
||||
glColor4f(C, C, C, 0.25f);
|
||||
glTexCoord2f(0, 0); glVertex3f(-10 / 2 - 2 * i / 4, 6.0 + 0.3*z, 13 + 1.7*z / 3);
|
||||
glTexCoord2f(1, 0); glVertex3f(10 / 2 + 2 * i / 4, 6.0 + 0.3*z, 13 + 1.7*z / 3);
|
||||
glTexCoord2f(1, 1); glVertex3f(10 / 2 + 2 * i / 4, -5.0 - 0.5*z, 13 + 1.7*z / 3);
|
||||
glTexCoord2f(0, 1); glVertex3f(-10 / 2 - 2 * i / 4, -5.0 - 0.5*z, 13 + 1.7*z / 3);
|
||||
}
|
||||
}
|
||||
if (Train->Controlled()->iLights[1] & 21)
|
||||
{ // wystarczy jeden zapalony z ty³u
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-15.0, 0.0, -fSmudge);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(15.0, 0.0, -fSmudge);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(15.0, 2.5, -250.0);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-15.0, 2.5, -250.0);
|
||||
}
|
||||
for (int i = 15; i <= 35; i++)
|
||||
{
|
||||
float z = i * i * i * 0.01f;//25/4;
|
||||
glTexCoord2f(0, 0); glVertex3f(10 / 2 + 3 * i / 4, 6.0 + 0.3*z, -13 - 1.7*z / 3);
|
||||
glTexCoord2f(1, 0); glVertex3f(-10 / 2 - 3 * i / 4, 6.0 + 0.3*z, -13 - 1.7*z / 3);
|
||||
glTexCoord2f(1, 1); glVertex3f(-10 / 2 - 3 * i / 4, -5.0 - 0.5*z, -13 - 1.7*z / 3);
|
||||
glTexCoord2f(0, 1); glVertex3f(10 / 2 + 3 * i / 4, -5.0 - 0.5*z, -13 - 1.7*z / 3);
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
// glEnable(GL_LIGHTING); //i tak siê w³¹czy potem
|
||||
// glEnable(GL_DEPTH_TEST);
|
||||
glAlphaFunc(GL_GREATER, 0.04);
|
||||
glDepthFunc(GL_LEQUAL);
|
||||
glEnable(GL_LIGHTING); //i tak siê w³¹czy potem
|
||||
glEnable(GL_FOG);
|
||||
}
|
||||
glEnable(GL_LIGHTING); // po renderowaniu smugi jest to wy³¹czone
|
||||
@@ -1900,9 +1909,23 @@ bool TWorld::Update()
|
||||
// u:")+FloatToStrF(tmp->MoverParameters->u,ffFixed,3,3);
|
||||
// OutText2+=AnsiString(",
|
||||
// N:")+FloatToStrF(tmp->MoverParameters->Ntotal,ffFixed,4,0);
|
||||
OutText2 +=
|
||||
AnsiString(", Ft:") + FloatToStrF(tmp->MoverParameters->Ft, ffFixed, 4, 0);
|
||||
// OutText3= AnsiString("BP:
|
||||
OutText2 += AnsiString(", MED:") +
|
||||
FloatToStrF(tmp->MoverParameters->LocalBrakePosA, ffFixed, 6, 2);
|
||||
OutText2 += AnsiString("+") +
|
||||
FloatToStrF(tmp->MoverParameters->AnPos, ffFixed, 6, 2);
|
||||
OutText2 += AnsiString(", Ft:") +
|
||||
FloatToStrF(tmp->MoverParameters->Ft * 0.001f, ffFixed, 4, 0);
|
||||
OutText2 += AnsiString(", HV0:") +
|
||||
FloatToStrF(tmp->MoverParameters->HVCouplers[0][1], ffFixed, 4, 0);
|
||||
OutText2 += AnsiString("@") +
|
||||
FloatToStrF(tmp->MoverParameters->HVCouplers[0][0], ffFixed, 4, 0);
|
||||
OutText2 += AnsiString("+HV1:") +
|
||||
FloatToStrF(tmp->MoverParameters->HVCouplers[1][1], ffFixed, 4, 0);
|
||||
OutText2 += AnsiString("@") +
|
||||
FloatToStrF(tmp->MoverParameters->HVCouplers[1][0], ffFixed, 4, 0);
|
||||
OutText2 += AnsiString(" TC:") +
|
||||
FloatToStrF(tmp->MoverParameters->TotalCurrent, ffFixed, 4, 0);
|
||||
// OutText3= AnsiString("BP:
|
||||
// ")+FloatToStrF(tmp->MoverParameters->BrakePress,ffFixed,5,2)+AnsiString(",
|
||||
// ");
|
||||
// OutText3+= AnsiString("PP:
|
||||
@@ -2203,8 +2226,10 @@ bool TWorld::Update()
|
||||
FloatToStrF(Controlled->MoverParameters->dizel_engagedeltaomega, ffFixed, 6, 3);
|
||||
OutText2 = AnsiString("HamZ=") +
|
||||
FloatToStrF(Controlled->MoverParameters->fBrakeCtrlPos, ffFixed, 6, 1);
|
||||
OutText2 += AnsiString("; HamP=") + AnsiString(Controlled->MoverParameters->LocalBrakePos);
|
||||
// mvControlled->MainCtrlPos;
|
||||
OutText2 += AnsiString("; HamP=") + AnsiString(mvControlled->LocalBrakePos);
|
||||
OutText2 += AnsiString("/") +
|
||||
FloatToStrF(Controlled->MoverParameters->LocalBrakePosA, ffFixed, 6, 2);
|
||||
// mvControlled->MainCtrlPos;
|
||||
// if (mvControlled->MainCtrlPos<0)
|
||||
// OutText2+= AnsiString("; nastawnik 0");
|
||||
// if (mvControlled->MainCtrlPos>iPozSzereg)
|
||||
@@ -2228,8 +2253,14 @@ bool TWorld::Update()
|
||||
FloatToStrF(Controlled->MoverParameters->RunningShape.R, ffFixed, 4, 1);
|
||||
OutText2 += AnsiString(" An=") + FloatToStrF(Controlled->MoverParameters->AccN, ffFixed, 4,
|
||||
2); // przyspieszenie poprzeczne
|
||||
OutText2 += AnsiString("; As=") + FloatToStrF(Controlled->MoverParameters->AccS, ffFixed, 4,
|
||||
2); // przyspieszenie wzd³u¿ne
|
||||
if (tprev != int(GlobalTime->mr))
|
||||
{
|
||||
tprev = GlobalTime->mr;
|
||||
Acc = (Controlled->MoverParameters->Vel - VelPrev) / 3.6;
|
||||
VelPrev = Controlled->MoverParameters->Vel;
|
||||
}
|
||||
OutText2 += AnsiString("; As=") + FloatToStrF(Acc/*Controlled->MoverParameters->AccS*/, ffFixed, 4,
|
||||
2); // przyspieszenie wzd³u¿ne
|
||||
// OutText2+=AnsiString("; P=")+FloatToStrF(mvControlled->EnginePower,ffFixed,6,1);
|
||||
OutText3 += AnsiString("cyl.ham. ") +
|
||||
FloatToStrF(Controlled->MoverParameters->BrakePress, ffFixed, 5, 2);
|
||||
@@ -2241,32 +2272,53 @@ bool TWorld::Update()
|
||||
OutText3 += AnsiString("; p.zas. ") +
|
||||
FloatToStrF(Controlled->MoverParameters->ScndPipePress, ffFixed, 6, 2);
|
||||
|
||||
if (Controlled->MoverParameters->EngineType == ElectricInductionMotor)
|
||||
{
|
||||
// glTranslatef(0.0f,0.0f,-0.50f);
|
||||
glColor3f(1.0f, 1.0f, 1.0f); // a, damy bia³ym
|
||||
for (int i = 0; i <= 20; i++)
|
||||
{
|
||||
glRasterPos2f(-0.25f, 0.16f - 0.01f * i);
|
||||
if (Controlled->MoverParameters->eimc[i] < 10)
|
||||
OutText4 = FloatToStrF(Controlled->MoverParameters->eimc[i], ffFixed, 6, 3);
|
||||
else
|
||||
OutText4 = FloatToStrF(Controlled->MoverParameters->eimc[i], ffGeneral, 5, 3);
|
||||
glPrint(OutText4.c_str());
|
||||
}
|
||||
for (int i = 0; i <= 20; i++)
|
||||
{
|
||||
glRasterPos2f(-0.2f, 0.16f - 0.01f * i);
|
||||
if (Controlled->MoverParameters->eimv[i] < 10)
|
||||
OutText4 = FloatToStrF(Controlled->MoverParameters->eimv[i], ffFixed, 6, 3);
|
||||
else
|
||||
OutText4 = FloatToStrF(Controlled->MoverParameters->eimv[i], ffGeneral, 5, 3);
|
||||
glPrint(OutText4.c_str());
|
||||
}
|
||||
OutText4 = "";
|
||||
// glTranslatef(0.0f,0.0f,+0.50f);
|
||||
glColor3f(1.0f, 0.0f, 0.0f); // a, damy czerwonym
|
||||
}
|
||||
if (Controlled->MoverParameters->EngineType == ElectricInductionMotor)
|
||||
{
|
||||
// glTranslatef(0.0f,0.0f,-0.50f);
|
||||
glColor3f(1.0f, 1.0f, 1.0f); // a, damy bia³ym
|
||||
for (int i = 0; i <= 20; i++)
|
||||
{
|
||||
glRasterPos2f(-0.25f, 0.16f - 0.01f * i);
|
||||
if (Controlled->MoverParameters->eimc[i] < 10)
|
||||
OutText4 = FloatToStrF(Controlled->MoverParameters->eimc[i], ffFixed, 6, 3);
|
||||
else
|
||||
OutText4 = FloatToStrF(Controlled->MoverParameters->eimc[i], ffGeneral, 5, 3);
|
||||
glPrint(OutText4.c_str());
|
||||
}
|
||||
for (int i = 0; i <= 20; i++)
|
||||
{
|
||||
glRasterPos2f(-0.2f, 0.16f - 0.01f * i);
|
||||
if (Controlled->MoverParameters->eimv[i] < 10)
|
||||
OutText4 = FloatToStrF(Controlled->MoverParameters->eimv[i], ffFixed, 6, 3);
|
||||
else
|
||||
OutText4 = FloatToStrF(Controlled->MoverParameters->eimv[i], ffGeneral, 5, 3);
|
||||
glPrint(OutText4.c_str());
|
||||
}
|
||||
for (int i = 0; i <= 10; i++)
|
||||
{
|
||||
glRasterPos2f(-0.15f, 0.16f - 0.01f * i);
|
||||
OutText4 = FloatToStrF(Train->fPress[i][0], ffFixed, 6, 3);
|
||||
glPrint(OutText4.c_str());
|
||||
}
|
||||
for (int i = 0; i <= 8; i++)
|
||||
{
|
||||
glRasterPos2f(-0.15f, 0.04f - 0.01f * i);
|
||||
OutText4 = FloatToStrF(Controlled->MED[0][i], ffFixed, 6, 3);
|
||||
glPrint(OutText4.c_str());
|
||||
}
|
||||
for (int i = 0; i <= 8; i++)
|
||||
{
|
||||
for (int j = 0; j <= 9; j++)
|
||||
{
|
||||
glRasterPos2f(0.05f + 0.03f * i, 0.16f - 0.01f * j);
|
||||
OutText4 = FloatToStrF(Train->fEIMParams[i][j], ffGeneral, 4, 2);
|
||||
glPrint(OutText4.c_str());
|
||||
}
|
||||
}
|
||||
OutText4 = "";
|
||||
// glTranslatef(0.0f,0.0f,+0.50f);
|
||||
glColor3f(1.0f, 0.0f, 0.0f); // a, damy czerwonym
|
||||
}
|
||||
|
||||
// ABu: testy sprzegow-> (potem przeniesc te zmienne z public do protected!)
|
||||
// OutText3+=AnsiString("; EnginePwr=")+FloatToStrF(mvControlled->EnginePower,ffFixed,1,5);
|
||||
@@ -2692,12 +2744,16 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
|
||||
switch (pRozkaz->iComm)
|
||||
{
|
||||
case 0: // odes³anie identyfikatora wersji
|
||||
Ground.WyslijString(Global::asVersion, 0); // przedsatwienie siê
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " version" + " rcvd");
|
||||
Ground.WyslijString(Global::asVersion, 0); // przedsatwienie siê
|
||||
break;
|
||||
case 1: // odes³anie identyfikatora wersji
|
||||
Ground.WyslijString(Global::szSceneryFile, 1); // nazwa scenerii
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " scenery" + " rcvd");
|
||||
Ground.WyslijString(Global::szSceneryFile, 1); // nazwa scenerii
|
||||
break;
|
||||
case 2: // event
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " +
|
||||
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + " rcvd");
|
||||
if (Global::iMultiplayer)
|
||||
{ // WriteLog("Komunikat: "+AnsiString(pRozkaz->Name1));
|
||||
TEvent *e = Ground.FindEvent(
|
||||
@@ -2714,6 +2770,10 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
|
||||
{
|
||||
int i =
|
||||
int(pRozkaz->cString[8]); // d³ugoœæ pierwszego ³añcucha (z przodu dwa floaty)
|
||||
CommLog(
|
||||
AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " +
|
||||
AnsiString(pRozkaz->cString + 11 + i, (unsigned)(pRozkaz->cString[10 + i])) +
|
||||
" rcvd");
|
||||
TGroundNode *t = Ground.DynamicFind(
|
||||
AnsiString(pRozkaz->cString + 11 + i,
|
||||
(unsigned)pRozkaz->cString[10 + i])); // nazwa pojazdu jest druga
|
||||
@@ -2729,6 +2789,8 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
|
||||
break;
|
||||
case 4: // badanie zajêtoœci toru
|
||||
{
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " +
|
||||
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + " rcvd");
|
||||
TGroundNode *t = Ground.FindGroundNode(
|
||||
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])), TP_TRACK);
|
||||
if (t)
|
||||
@@ -2738,19 +2800,22 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
|
||||
break;
|
||||
case 5: // ustawienie parametrów
|
||||
{
|
||||
if (*pRozkaz->iPar & 1) // ustawienie czasu
|
||||
{
|
||||
double t = pRozkaz->fPar[1];
|
||||
GlobalTime->dd = floor(t); // niby nie powinno byæ dnia, ale...
|
||||
if (Global::fMoveLight >= 0)
|
||||
Global::fMoveLight = t; // trzeba by deklinacjê S³oñca przeliczyæ
|
||||
GlobalTime->hh = floor(24 * t) - 24.0 * GlobalTime->dd;
|
||||
GlobalTime->mm =
|
||||
floor(60 * 24 * t) - 60.0 * (24.0 * GlobalTime->dd + GlobalTime->hh);
|
||||
GlobalTime->mr =
|
||||
floor(60 * 60 * 24 * t) -
|
||||
60.0 * (60.0 * (24.0 * GlobalTime->dd + GlobalTime->hh) + GlobalTime->mm);
|
||||
}
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " params " +
|
||||
IntToStr(*pRozkaz->iPar) + " rcvd");
|
||||
if (*pRozkaz->iPar == 0) // sprawdzenie czasu
|
||||
if (*pRozkaz->iPar & 1) // ustawienie czasu
|
||||
{
|
||||
double t = pRozkaz->fPar[1];
|
||||
GlobalTime->dd = floor(t); // niby nie powinno byæ dnia, ale...
|
||||
if (Global::fMoveLight >= 0)
|
||||
Global::fMoveLight = t; // trzeba by deklinacjê S³oñca przeliczyæ
|
||||
GlobalTime->hh = floor(24 * t) - 24.0 * GlobalTime->dd;
|
||||
GlobalTime->mm =
|
||||
floor(60 * 24 * t) - 60.0 * (24.0 * GlobalTime->dd + GlobalTime->hh);
|
||||
GlobalTime->mr =
|
||||
floor(60 * 60 * 24 * t) -
|
||||
60.0 * (60.0 * (24.0 * GlobalTime->dd + GlobalTime->hh) + GlobalTime->mm);
|
||||
}
|
||||
if (*pRozkaz->iPar & 2)
|
||||
{ // ustawienie flag zapauzowania
|
||||
Global::iPause = pRozkaz->fPar[2]; // zak³adamy, ¿e wysy³aj¹cy wie, co robi
|
||||
@@ -2760,6 +2825,9 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
|
||||
case 6: // pobranie parametrów ruchu pojazdu
|
||||
if (Global::iMultiplayer)
|
||||
{ // Ra 2014-12: to ma dzia³aæ równie¿ dla pojazdów bez obsady
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " +
|
||||
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) +
|
||||
" rcvd");
|
||||
if (pRozkaz->cString[0]) // jeœli d³ugoœæ nazwy jest niezerowa
|
||||
{ // szukamy pierwszego pojazdu o takiej nazwie i odsy³amy parametry ramk¹ #7
|
||||
TGroundNode *t;
|
||||
@@ -2780,18 +2848,62 @@ void TWorld::OnCommandGet(DaneRozkaz *pRozkaz)
|
||||
}
|
||||
break;
|
||||
case 8: // ponowne wys³anie informacji o zajêtych odcinkach toru
|
||||
Ground.TrackBusyList();
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " all busy track" + " rcvd");
|
||||
Ground.TrackBusyList();
|
||||
break;
|
||||
case 9: // ponowne wys³anie informacji o zajêtych odcinkach izolowanych
|
||||
Ground.IsolatedBusyList();
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " all busy isolated" + " rcvd");
|
||||
Ground.IsolatedBusyList();
|
||||
break;
|
||||
case 10: // badanie zajêtoœci jednego odcinka izolowanego
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " +
|
||||
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) + " rcvd");
|
||||
Ground.IsolatedBusy(AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])));
|
||||
break;
|
||||
case 11: // ustawienie paerametrów ruchu pojazdu
|
||||
case 11: // ustawienie parametrów ruchu pojazdu
|
||||
// Ground.IsolatedBusy(AnsiString(pRozkaz->cString+1,(unsigned)(pRozkaz->cString[0])));
|
||||
break;
|
||||
}
|
||||
case 12: // skrocona ramka parametrow pojazdow AI (wszystkich!!)
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " obsadzone" + " rcvd");
|
||||
Ground.WyslijObsadzone();
|
||||
// Ground.IsolatedBusy(AnsiString(pRozkaz->cString+1,(unsigned)(pRozkaz->cString[0])));
|
||||
break;
|
||||
case 13: // ramka uszkodzenia i innych stanow pojazdu, np. wylaczenie CA, wlaczenie recznego itd.
|
||||
// WriteLog("Przyszlo 13!");
|
||||
// WriteLog(pRozkaz->cString);
|
||||
CommLog(AnsiString(Now()) + " " + IntToStr(pRozkaz->iComm) + " " +
|
||||
AnsiString(pRozkaz->cString + 1, (unsigned)(pRozkaz->cString[0])) +
|
||||
" rcvd");
|
||||
if (pRozkaz->cString[1]) // jeœli d³ugoœæ nazwy jest niezerowa
|
||||
{ // szukamy pierwszego pojazdu o takiej nazwie i odsy³amy parametry ramk¹ #13
|
||||
TGroundNode *t;
|
||||
if (pRozkaz->cString[2] == '*')
|
||||
t = Ground.DynamicFind(
|
||||
Global::asHumanCtrlVehicle); // nazwa pojazdu u¿ytkownika
|
||||
else
|
||||
t = Ground.DynamicFindAny(
|
||||
AnsiString(pRozkaz->cString + 2,
|
||||
(unsigned)pRozkaz->cString[1])); // nazwa pojazdu
|
||||
if (t)
|
||||
{
|
||||
TDynamicObject *d = t->DynamicObject;
|
||||
while (d)
|
||||
{
|
||||
d->Damage(pRozkaz->cString[0]);
|
||||
d = d->Next(); // pozosta³e te¿
|
||||
}
|
||||
d = t->DynamicObject->Prev();
|
||||
while (d)
|
||||
{
|
||||
d->Damage(pRozkaz->cString[0]);
|
||||
d = d->Prev(); // w drug¹ stronê te¿
|
||||
}
|
||||
Ground.WyslijUszkodzenia(t->asName, t->DynamicObject->MoverParameters->EngDmgFlag); // zwrot informacji o pojeŸdzie
|
||||
}
|
||||
}
|
||||
// Ground.IsolatedBusy(AnsiString(pRozkaz->cString+1,(unsigned)(pRozkaz->cString[0])));
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user