From 9ce5d10008a2ef11cbe56a4d4ec82f848c5d92f3 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Mon, 14 Mar 2016 22:21:36 +0100 Subject: [PATCH] =?UTF-8?q?Poprawka=20czytania=20zmiennych=20eimp=5Fc=20[y?= =?UTF-8?q?ouBy]=20Grupowanie=20jednostek=20sprz=C4=99giem=20128=20(sprz?= =?UTF-8?q?=C4=99g=20depotowy)=20a=20nie=204=20(ukrotnienie)=20[youBy]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DynObj.cpp | 20 ++++++++++---------- DynObj.h | 4 ++-- Globals.cpp | 4 ++-- Train.cpp | 6 +++--- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/DynObj.cpp b/DynObj.cpp index 54a3d784..439d4ef8 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -139,7 +139,7 @@ void TAnim::Parovoz(){ // animowanie tłoka i rozrządu parowozu }; //--------------------------------------------------------------------------- -TDynamicObject * TDynamicObject::FirstFind(int &coupler_nr) +TDynamicObject * TDynamicObject::FirstFind(int &coupler_nr, int cf) { // szukanie skrajnego połączonego pojazdu w pociagu // od strony sprzegu (coupler_nr) obiektu (start) TDynamicObject *temp = this; @@ -147,8 +147,8 @@ TDynamicObject * TDynamicObject::FirstFind(int &coupler_nr) { if (!temp) return NULL; // Ra: zabezpieczenie przed ewentaulnymi błędami sprzęgów - if (temp->MoverParameters->Couplers[coupler_nr].CouplingFlag == 0) - return temp; // nic nie ma już dalej podłączone + if ((temp->MoverParameters->Couplers[coupler_nr].CouplingFlag & cf) != cf) + return temp; // nic nie ma już dalej podłączone sprzęgiem cf if (coupler_nr == 0) { // jeżeli szukamy od sprzęgu 0 if (temp->PrevConnected) // jeśli mamy coś z przodu @@ -255,11 +255,11 @@ float TDynamicObject::GetEPP() }; //--------------------------------------------------------------------------- -TDynamicObject * TDynamicObject::GetFirstDynamic(int cpl_type) +TDynamicObject * TDynamicObject::GetFirstDynamic(int cpl_type, int cf) { // Szukanie skrajnego połączonego pojazdu w pociagu // od strony sprzegu (cpl_type) obiektu szukajacego // Ra: wystarczy jedna funkcja do szukania w obu kierunkach - return FirstFind(cpl_type); // używa referencji + return FirstFind(cpl_type, cf); // używa referencji }; /* @@ -2664,7 +2664,7 @@ bool TDynamicObject::Update(double dt, double dt1) // 2. ustal mozliwa do realizacji sile hamowania ED // - w szczegolnosci powinien brac pod uwage rozne sily hamowania - for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0); p; + for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0, 4); p; (kier ? p = p->NextC(4) : p = p->PrevC(4))) { np++; @@ -2747,7 +2747,7 @@ bool TDynamicObject::Update(double dt, double dt1) ////ALGORYTM 2 - KAZDEMU PO ROWNO, ale nie wiecej niz eped * masa // 1. najpierw daj kazdemu tyle samo int i = 0; - for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0); p; + for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0, 4); p; (kier > 0 ? p = p->NextC(4) : p = p->PrevC(4))) { float Nmax = ((p->MoverParameters->P2FTrans * p->MoverParameters->MaxBrakePress[0] - @@ -2775,7 +2775,7 @@ bool TDynamicObject::Update(double dt, double dt1) test = false; i = 0; float przek = 0; - for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0); p; + for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0, 4); p; (kier > 0 ? p = p->NextC(4) : p = p->PrevC(4))) { if ((FzEP[i] > 0.01) && @@ -2801,7 +2801,7 @@ bool TDynamicObject::Update(double dt, double dt1) } i = 0; przek = przek / (np - nPrzekrF); - for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0); p; + for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0, 4); p; (kier > 0 ? p = p->NextC(4) : p = p->PrevC(4))) { if (!PrzekrF[i]) @@ -2812,7 +2812,7 @@ bool TDynamicObject::Update(double dt, double dt1) } } i = 0; - for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0); p; + for (TDynamicObject *p = GetFirstDynamic(MoverParameters->ActiveCab < 0 ? 1 : 0, 4); p; (kier > 0 ? p = p->NextC(4) : p = p->PrevC(4))) { float Nmax = ((p->MoverParameters->P2FTrans * p->MoverParameters->MaxBrakePress[0] - diff --git a/DynObj.h b/DynObj.h index bee417ff..6a25eabe 100644 --- a/DynObj.h +++ b/DynObj.h @@ -371,7 +371,7 @@ class TDynamicObject TDynamicObject * ABuScanNearestObject(TTrack *Track, double ScanDir, double ScanDist, int &CouplNr); - TDynamicObject * GetFirstDynamic(int cpl_type); + TDynamicObject * GetFirstDynamic(int cpl_type, int cf = 1); // TDynamicObject* GetFirstCabDynamic(int cpl_type); void ABuSetModelShake(vector3 mShake); @@ -487,7 +487,7 @@ class TDynamicObject void Damage(char flag); void RaLightsSet(int head, int rear); // void RaAxleEvent(TEvent *e); - TDynamicObject * FirstFind(int &coupler_nr); + TDynamicObject * FirstFind(int &coupler_nr, int cf = 1); float GetEPP(); // wyliczanie sredniego cisnienia w PG int DirectionSet(int d); // ustawienie kierunku w składzie int DirectionGet() diff --git a/Globals.cpp b/Globals.cpp index 5b665b9a..a36329ad 100644 --- a/Globals.cpp +++ b/Globals.cpp @@ -49,9 +49,9 @@ double Global::fLuminance = 1.0; // jasno int Global::iReCompile = 0; // zwiększany, gdy trzeba odświeżyć siatki HWND Global::hWnd = NULL; // uchwyt okna int Global::iCameraLast = -1; -AnsiString Global::asRelease = "15.4.1171.474"; +AnsiString Global::asRelease = "15.4.1171.475"; AnsiString Global::asVersion = - "Compilation 2015-11-15, release " + Global::asRelease + "."; // tutaj, bo wysyłany + "Compilation 2016-03-14, 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::iTextMode = 0; // tryb pracy wyświetlacza tekstowego int Global::iScreenMode[12] = {0, 0, 0, 0, 0, 0, diff --git a/Train.cpp b/Train.cpp index 1c4f7d4f..50afb274 100644 --- a/Train.cpp +++ b/Train.cpp @@ -2670,7 +2670,7 @@ bool TTrain::Update() } bool kier = (DynamicObject->DirectionGet()*mvOccupied->ActiveCab > 0); - TDynamicObject *p = DynamicObject->GetFirstDynamic(mvOccupied->ActiveCab < 0 ? 1 : 0); + TDynamicObject *p = DynamicObject->GetFirstDynamic(mvOccupied->ActiveCab < 0 ? 1 : 0, 4); int in = 0; fEIMParams[0][6] = 0; iCarNo = 0; @@ -2735,7 +2735,7 @@ bool TTrain::Update() iPowerNo = in; } // p = p->NextC(4); //prev - if ((kier ? p->NextC(16) : p->PrevC(16)) != (kier ? p->NextC(4) : p->PrevC(4))) + if ((kier ? p->NextC(128) : p->PrevC(128)) != (kier ? p->NextC(4) : p->PrevC(4))) iUnitNo++; p = (kier ? p->NextC(4) : p->PrevC(4)); iCarNo = i + 1; @@ -6093,7 +6093,7 @@ void TTrain::Silence() void TTrain::SetLights() { - TDynamicObject *p = DynamicObject->GetFirstDynamic(mvOccupied->ActiveCab < 0 ? 1 : 0); + TDynamicObject *p = DynamicObject->GetFirstDynamic(mvOccupied->ActiveCab < 0 ? 1 : 0, 4); bool kier = (DynamicObject->DirectionGet() * mvOccupied->ActiveCab > 0); int xs = (kier ? 0 : 1); if (kier ? p->NextC(1) : p->PrevC(1)) // jesli jest nastepny, to tylko przod