From 5d58070c0af30ce4e3670c0f2182dde585730da9 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Sun, 10 Jul 2016 14:31:20 +0200 Subject: [PATCH 01/10] =?UTF-8?q?Event0/1/2=20kolejkowane=20tylko=20przez?= =?UTF-8?q?=20g=C5=82=C3=B3wne=20ai=20sk=C5=82adu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TrkFoll.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/TrkFoll.cpp b/TrkFoll.cpp index ee2f3bf5..2af9e161 100644 --- a/TrkFoll.cpp +++ b/TrkFoll.cpp @@ -26,6 +26,7 @@ http://mozilla.org/MPL/2.0/. #include "DynObj.h" #include "Ground.h" #include "Event.h" +#include "Driver.h" TTrackFollower::TTrackFollower() { @@ -132,7 +133,7 @@ bool TTrackFollower::Move(double fDistance, bool bPrimary) { if (iSetFlag(iEventFlag, -1)) // zawsze zeruje flagę sprawdzenia, jak mechanik // dosiądzie, to się nie wykona - if (Owner->Mechanik) // tylko dla jednego członu + if (Owner->Mechanik->Primary()) // tylko dla jednego członu // if (TestFlag(iEventFlag,1)) //McZapkie-280503: wyzwalanie event tylko dla // pojazdow z obsada if (bPrimary && pCurrentTrack->evEvent1 && @@ -154,7 +155,7 @@ bool TTrackFollower::Move(double fDistance, bool bPrimary) { if (iSetFlag(iEventFlag, -2)) // zawsze ustawia flagę sprawdzenia, jak mechanik // dosiądzie, to się nie wykona - if (Owner->Mechanik) // tylko dla jednego członu + if (Owner->Mechanik->Primary()) // tylko dla jednego członu // if (TestFlag(iEventFlag,2)) //sprawdzanie jest od razu w pierwszym // warunku if (bPrimary && pCurrentTrack->evEvent2 && @@ -173,7 +174,7 @@ bool TTrackFollower::Move(double fDistance, bool bPrimary) } else // if (fDistance==0) //McZapkie-140602: wyzwalanie zdarzenia gdy pojazd stoi { - if (Owner->Mechanik) // tylko dla jednego członu + if (Owner->Mechanik->Primary()) // tylko dla jednego członu if (pCurrentTrack->evEvent0) if (!pCurrentTrack->evEvent0->iQueued) Global::AddToQuery(pCurrentTrack->evEvent0, Owner); From 3d321f5daff323b5b016267c900ea6f78f3028e2 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Sun, 10 Jul 2016 16:09:45 +0200 Subject: [PATCH 02/10] =?UTF-8?q?Ustawienie=20pojazdom=20repla4=20na=20"no?= =?UTF-8?q?where"=20przed=20analiz=C4=85=20wielu=20tekstur.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DynObj.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DynObj.cpp b/DynObj.cpp index b9128d9c..feebf789 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -4244,6 +4244,10 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName, { // tekstura wymienna jest raczej jedynie w "dynamic\" ReplacableSkin = Global::asCurrentTexturePath + ReplacableSkin; // skory tez z dynamic/... + AnsiString x = TextureTest(Global::asCurrentTexturePath + "nowhere"); // na razie prymitywnie + if (!x.IsEmpty()) + ReplacableSkinID[4] = TTexturesManager::GetTextureID(NULL, NULL, (Global::asCurrentTexturePath + "nowhere").c_str(), 9); + /* if ((i = ReplacableSkin.Pos("|")) > 0) // replacable dzielone { iMultiTex = -1; @@ -4302,6 +4306,7 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName, } } } + */ if (iMultiTex > 0) { // jeśli model ma 4 tekstury ReplacableSkinID[1] = TTexturesManager::GetTextureID( @@ -4336,6 +4341,7 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName, } } else + ReplacableSkinID[1] = TTexturesManager::GetTextureID( NULL, NULL, ReplacableSkin.c_str(), Global::iDynamicFiltering); if (TTexturesManager::GetAlpha(ReplacableSkinID[1])) From cb06375aec24120c141382c771b09054e78cbd7f Mon Sep 17 00:00:00 2001 From: antonisauren Date: Mon, 11 Jul 2016 20:15:43 +0200 Subject: [PATCH 03/10] =?UTF-8?q?=20=20=20=20Tekstury=20rozk=C5=82adu=20sz?= =?UTF-8?q?ukane=20s=C4=85=20w=20kolejno=C5=9Bci:=20nr=5Fpociagu@typ=5Fpoj?= =?UTF-8?q?azdu,=20nr=5Fpociagu,=20stacja=5Fdocelowa@typ=5Fpojazdu,=20stac?= =?UTF-8?q?ja=20docelowa.=20=20=20=20=20Je=C5=9Bli=20=C5=BCadna=20z=20nich?= =?UTF-8?q?=20nie=20zostanie=20znaleziona,=20wy=C5=9Bwietlana=20jest=20"no?= =?UTF-8?q?where".?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Driver.cpp | 4 ++-- DynObj.cpp | 30 ++++++++++++++++++++++-------- DynObj.h | 2 +- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/Driver.cpp b/Driver.cpp index ae397630..380ee8f6 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -1875,7 +1875,7 @@ bool TController::CheckVehicles(TOrders user) { if (TrainParams) if (p->asDestination == "none") - p->DestinationSet(TrainParams->Relation2); // relacja docelowa, jeśli nie było + p->DestinationSet(TrainParams->Relation2, TrainParams->TrainName); // relacja docelowa, jeśli nie było if (AIControllFlag) // jeśli prowadzi komputer p->RaLightsSet(0, 0); // gasimy światła if (p->MoverParameters->EnginePowerSource.SourceType == CurrentCollector) @@ -2986,7 +2986,7 @@ bool TController::PutCommand(AnsiString NewCommand, double NewValue1, double New TDynamicObject *p = pVehicles[0]; while (p) { - p->DestinationSet(NewCommand); // relacja docelowa + p->DestinationSet(NewCommand, TrainParams->TrainName); // relacja docelowa p = p->Next(); // pojazd podłączony od tyłu (licząc od czoła) } } diff --git a/DynObj.cpp b/DynObj.cpp index feebf789..c0a6cc1e 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -5634,7 +5634,7 @@ AnsiString TDynamicObject::TextureTest(AnsiString &name) return ""; // nie znaleziona }; -void TDynamicObject::DestinationSet(AnsiString to) +void TDynamicObject::DestinationSet(AnsiString to, AnsiString numer) { // ustawienie stacji // docelowej oraz wymiennej // tekstury 4, jeśli @@ -5645,25 +5645,39 @@ void TDynamicObject::DestinationSet(AnsiString to) // rozkładu if (abs(iMultiTex) >= 4) return; // jak są 4 tekstury wymienne, to nie zmieniać rozkładem + numer = Global::Bezogonkow(numer); asDestination = to; to = Global::Bezogonkow(to); // do szukania pliku obcinamy ogonki AnsiString x; + x = TextureTest(asBaseDir + numer + "@" + MoverParameters->TypeName); + if (!x.IsEmpty()) + { + ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się + return; + } + x = TextureTest(asBaseDir + numer ); + if (!x.IsEmpty()) + { + ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się + return; + } if (to.IsEmpty()) to = "nowhere"; - x = TextureTest(asBaseDir + to + "@" + - MoverParameters->TypeName); // w pierwszej kolejności z nazwą FIZ/MMD + x = TextureTest(asBaseDir + to + "@" + MoverParameters->TypeName); // w pierwszej kolejności z nazwą FIZ/MMD if (!x.IsEmpty()) { - ReplacableSkinID[4] = TTexturesManager::GetTextureID( - NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się + ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się return; } x = TextureTest(asBaseDir + to); // na razie prymitywnie if (!x.IsEmpty()) - ReplacableSkinID[4] = TTexturesManager::GetTextureID( - NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się + ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się else - ReplacableSkinID[4] = 0; // 0 to brak? -1 odpada, bo inaczej się będzie mapować + { + x = TextureTest(asBaseDir + "nowhere"); // jak nie znalazł dedykowanej, to niech daje nowhere + if (!x.IsEmpty()) + ReplacableSkinID[4] = TTexturesManager::GetTextureID(NULL, NULL, x.c_str(), 9); + } // Ra 2015-01: żeby zalogować błąd, trzeba by mieć pewność, że model używa // tekstury nr 4 }; diff --git a/DynObj.h b/DynObj.h index 273de04e..2eb0e468 100644 --- a/DynObj.h +++ b/DynObj.h @@ -504,7 +504,7 @@ class TDynamicObject void ParamSet(int what, int into); int RouteWish(TTrack *tr); // zapytanie do AI, po którym segmencie skrzyżowania // jechać - void DestinationSet(AnsiString to); + void DestinationSet(AnsiString to, AnsiString numer); AnsiString TextureTest(AnsiString &name); void OverheadTrack(float o); double MED[9][8]; // lista zmiennych do debugowania hamulca ED From d6d9e3a554cf5d0c413803ba23e648037f55fc08 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Wed, 27 Jul 2016 20:32:24 +0200 Subject: [PATCH 04/10] =?UTF-8?q?Prowizoryczna=20poprawka=20na=20podtrzyma?= =?UTF-8?q?nie=20napi=C4=99cia=20na=20sprz=C4=99gu=20WN=20@yB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- McZapkie/_mover.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/McZapkie/_mover.pas b/McZapkie/_mover.pas index 010206a9..8dfb7dea 100644 --- a/McZapkie/_mover.pas +++ b/McZapkie/_mover.pas @@ -4981,7 +4981,7 @@ var b:byte; const Vepsilon=1e-5; Aepsilon=1e-3; //ASBSpeed=0.8; begin TotalCurrent:=0; - hvc:=Max0R(Max0R(PantFrontVolt,PantRearVolt),ElectricTraction.TractionVoltage); + hvc:=Max0R(Max0R(PantFrontVolt,PantRearVolt),ElectricTraction.TractionVoltage*0.9); for b:=0 to 1 do //przekazywanie napiec if ((Couplers[b].CouplingFlag and ctrain_power) = ctrain_power)or(((Couplers[b].CouplingFlag and ctrain_heating) = ctrain_heating)and(Heating)) then begin From 3731d3a0dc862a72b87e39a22a1d99fc9e9a3de7 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Thu, 28 Jul 2016 19:49:37 +0200 Subject: [PATCH 05/10] numerek 479 --- EU07.bpr | 4 ++-- EU07.res | Bin 3152 -> 3152 bytes Globals.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/EU07.bpr b/EU07.bpr index 4d6169e2..65ce1310 100644 --- a/EU07.bpr +++ b/EU07.bpr @@ -60,7 +60,7 @@ AutoIncBuild=0 MajorVer=16 MinorVer=0 Release=1173 -Build=478 +Build=479 Debug=1 PreRelease=0 Special=0 @@ -72,7 +72,7 @@ CodePage=1250 [Version Info Keys] CompanyName=EU07 Team FileDescription=MaSzyna EU07-424 -FileVersion=16.0.1173.478 +FileVersion=16.0.1173.479 InternalName=DP+SPKS+asynch+python LegalCopyright= LegalTrademarks= diff --git a/EU07.res b/EU07.res index b826ec23f8e823d966b812f55a54f36f2c94a319..ebd7d7e48697eb1c04b4e4a7f3c669836cf189ea 100644 GIT binary patch delta 29 lcmca0aY15311INw#;Gg}3<3=IH+OOhGcsCkp3AkF5df2v2^;_b delta 29 lcmca0aY15311IM_#;Gg}3<3=IHg|FgGcsCip3AkF5df2H2^jzY diff --git a/Globals.cpp b/Globals.cpp index 175bfb07..6dfd3e24 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 = "16.0.1172.478"; +AnsiString Global::asRelease = "16.0.1172.479"; AnsiString Global::asVersion = - "Compilation 2016-06-23, release " + Global::asRelease + "."; // tutaj, bo wysyłany + "Compilation 2016-07-27, 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, From 0a10a4f5fbcda6d2d7e2f463d2532fe5463ef242 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Thu, 28 Jul 2016 20:51:25 +0200 Subject: [PATCH 06/10] =?UTF-8?q?Figurka=20mechanika=20jako=20lampka=20w?= =?UTF-8?q?=20lowpoly=20a=20nie=20submodel=20pud=C5=82a.=20Na=20sztywno=20?= =?UTF-8?q?nazwy=20"mechanik1/2=5Fon".?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DynObj.cpp | 27 +++++++++++++++++++++++---- DynObj.h | 6 ++++-- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/DynObj.cpp b/DynObj.cpp index c0a6cc1e..7925e8cb 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -867,9 +867,11 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist) if (smWahacze[i]) smWahacze[i]->SetRotate(float3(1, 0, 0), fWahaczeAmp * cos(MoverParameters->eAngle)); - if (Mechanik && (Controller != Humandriver)) + + if (Mechanik) { // rysowanie figurki mechanika - if (smMechanik0) // mechanik od strony sprzęgu 0 + /* + if (smMechanik0) // mechanik od strony sprzęgu 0 if (smMechanik1) // jak jest drugi, to pierwszego jedynie pokazujemy smMechanik0->iVisible = MoverParameters->ActiveCab > 0; else @@ -881,6 +883,17 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist) } if (smMechanik1) // mechanik od strony sprzęgu 1 smMechanik1->iVisible = MoverParameters->ActiveCab < 0; + */ + if (MoverParameters->ActiveCab > 0) + { + btMechanik1.TurnOn(); + btnOn = true; + } + if (MoverParameters->ActiveCab < 0) + { + btMechanik2.TurnOn(); + btnOn = true; + } } // ABu: Przechyly na zakretach // Ra: przechyłkę załatwiamy na etapie przesuwania modelu @@ -1572,7 +1585,7 @@ TDynamicObject::TDynamicObject() mdLoad = NULL; mdLowPolyInt = NULL; mdPrzedsionek = NULL; - smMechanik0 = smMechanik1 = NULL; + //smMechanik0 = smMechanik1 = NULL; smBuforLewy[0] = smBuforLewy[1] = NULL; smBuforPrawy[0] = smBuforPrawy[1] = NULL; enginevolume = 0; @@ -1968,6 +1981,8 @@ TDynamicObject::Init(AnsiString Name, // nazwa pojazdu, np. "EU07-424" btHeadSignals21.Init("headlamp23", mdModel, false); btHeadSignals22.Init("headlamp21", mdModel, false); btHeadSignals23.Init("headlamp22", mdModel, false); + btMechanik1.Init("mechanik1", mdLowPolyInt, false); + btMechanik2.Init("mechanik2", mdLowPolyInt, false); TurnOff(); // resetowanie zmiennych submodeli // wyszukiwanie zderzakow if (mdModel) // jeśli ma w czym szukać @@ -3512,6 +3527,8 @@ void TDynamicObject::TurnOff() btHeadSignals21.TurnOff(); btHeadSignals22.TurnOff(); btHeadSignals23.TurnOff(); + btMechanik1.TurnOff(); + btMechanik2.TurnOff(); }; void TDynamicObject::Render() @@ -4935,7 +4952,8 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName, if (str == AnsiString("pendulumamplitude:")) fWahaczeAmp = Parser->GetNextSymbol().ToDouble(); } - else if (str == AnsiString("engineer:")) + /* + else if (str == AnsiString("engineer:")) { // nazwa submodelu maszynisty str = Parser->GetNextSymbol(); smMechanik0 = mdModel->GetFromName(str.c_str()); @@ -4950,6 +4968,7 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName, // if (smMechanik0) //a jest pierwszy // smMechanik0->WillBeAnimated(); //to będziemy go obracać } + */ else if (str == AnsiString("animdoorprefix:")) { // nazwa animowanych drzwi int i, j, k, m; diff --git a/DynObj.h b/DynObj.h index 2eb0e468..ddf39124 100644 --- a/DynObj.h +++ b/DynObj.h @@ -266,8 +266,10 @@ class TDynamicObject TButton btHeadSignals21; // oswietlenie czolowe - tyl TButton btHeadSignals22; TButton btHeadSignals23; - TSubModel *smMechanik0; // Ra: mechanik wbudowany w model jako submodel? - TSubModel *smMechanik1; // mechanik od strony sprzęgu 1 + TButton btMechanik1; + TButton btMechanik2; + //TSubModel *smMechanik0; // Ra: mechanik wbudowany w model jako submodel? + //TSubModel *smMechanik1; // mechanik od strony sprzęgu 1 double enginevolume; // MC: pomocnicze zeby gladziej silnik buczal int iAxles; // McZapkie: to potem mozna skasowac i zastapic iNumAxles From 1db7d6562f405b7fac147954dbb60e1172c70dcd Mon Sep 17 00:00:00 2001 From: antonisauren Date: Sun, 7 Aug 2016 21:02:31 +0200 Subject: [PATCH 07/10] =?UTF-8?q?480:=20Wyciszanie=20d=C5=BAwi=C4=99ku=20o?= =?UTF-8?q?dlu=C5=BAniacza=20przy=20ma=C5=82ym=20ci=C5=9Bnieniu=20w=20cyli?= =?UTF-8?q?ndrach.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DynObj.cpp | 6 +++++- EU07.bpr | 4 ++-- Globals.cpp | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/DynObj.cpp b/DynObj.cpp index 7925e8cb..e7c30c9c 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -3892,7 +3892,11 @@ void TDynamicObject::RenderSounds() sReleaser.TurnOn(MechInside, GetPosition()); else sReleaser.TurnOff(MechInside, GetPosition()); - sReleaser.Update(MechInside, GetPosition()); + //sReleaser.Update(MechInside, GetPosition()); + double releaser_vol = 1; + if (MoverParameters->BrakePress < 0.1) + releaser_vol = MoverParameters->BrakePress * 10; + sReleaser.UpdateAF(releaser_vol, 1, MechInside, GetPosition()); // if ((MoverParameters->ConverterFlag==false) && // (MoverParameters->TrainType!=dt_ET22)) // if diff --git a/EU07.bpr b/EU07.bpr index 65ce1310..a7d01038 100644 --- a/EU07.bpr +++ b/EU07.bpr @@ -60,7 +60,7 @@ AutoIncBuild=0 MajorVer=16 MinorVer=0 Release=1173 -Build=479 +Build=480 Debug=1 PreRelease=0 Special=0 @@ -72,7 +72,7 @@ CodePage=1250 [Version Info Keys] CompanyName=EU07 Team FileDescription=MaSzyna EU07-424 -FileVersion=16.0.1173.479 +FileVersion=16.0.1173.480 InternalName=DP+SPKS+asynch+python LegalCopyright= LegalTrademarks= diff --git a/Globals.cpp b/Globals.cpp index 8888f3e3..49ebd484 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 = "16.0.1172.479"; +AnsiString Global::asRelease = "16.0.1172.480"; AnsiString Global::asVersion = - "Compilation 2016-07-27, release " + Global::asRelease + "."; // tutaj, bo wysyłany + "Compilation 2016-08-07, 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, From 466c8dd999468ec1a2d58813c2a4448b2cbae643 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Fri, 19 Aug 2016 17:59:42 +0200 Subject: [PATCH 08/10] =?UTF-8?q?Zewn=C4=99trzny=20d=C5=BAwi=C4=99k=20ruch?= =?UTF-8?q?u=20drzwi.=20Mo=C5=BCe=20nie=20dzia=C5=82a=C4=87=20poprawnie=20?= =?UTF-8?q?przy=20samplu=20kr=C3=B3tszym=20ni=C5=BC=20animacja.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DynObj.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/DynObj.cpp b/DynObj.cpp index e7c30c9c..cd334add 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -3371,17 +3371,25 @@ bool TDynamicObject::Update(double dt, double dt1) // NBMX Obsluga drzwi, MC: zuniwersalnione if ((dDoorMoveL < MoverParameters->DoorMaxShiftL) && (MoverParameters->DoorLeftOpened)) + { + rsDoorOpen.Play(vol, 0, MechInside, vPosition); dDoorMoveL += dt1 * 0.5 * MoverParameters->DoorOpenSpeed; + } if ((dDoorMoveL > 0) && (!MoverParameters->DoorLeftOpened)) { + rsDoorClose.Play(vol, 0, MechInside, vPosition); dDoorMoveL -= dt1 * MoverParameters->DoorCloseSpeed; if (dDoorMoveL < 0) dDoorMoveL = 0; } if ((dDoorMoveR < MoverParameters->DoorMaxShiftR) && (MoverParameters->DoorRightOpened)) + { + rsDoorOpen.Play(vol, 0, MechInside, vPosition); dDoorMoveR += dt1 * 0.5 * MoverParameters->DoorOpenSpeed; + } if ((dDoorMoveR > 0) && (!MoverParameters->DoorRightOpened)) { + rsDoorClose.Play(vol, 0, MechInside, vPosition); dDoorMoveR -= dt1 * MoverParameters->DoorCloseSpeed; if (dDoorMoveR < 0) dDoorMoveR = 0; @@ -3447,7 +3455,8 @@ bool TDynamicObject::Update(double dt, double dt1) } if (MoverParameters->LoadStatus) LoadUpdate(); // zmiana modelu ładunku - return true; // Ra: chyba tak? + + return true; // Ra: chyba tak? } bool TDynamicObject::FastUpdate(double dt) From 6e4f278f3c290a3bc8effef51bed08a65c371556 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Tue, 23 Aug 2016 18:14:09 +0200 Subject: [PATCH 09/10] =?UTF-8?q?AI:=20Oczekiwanie=20z=20odjazdem=20z=20pr?= =?UTF-8?q?zystanku=2020=20sec=20je=C5=9Bli=20op=C3=B3=C5=BAniony.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Driver.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Driver.cpp b/Driver.cpp index 380ee8f6..7123ac43 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -851,8 +851,8 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN } // koniec obsługi przelotu na W4 else { // zatrzymanie na W4 - if (!eSignNext) - eSignNext = sSpeedTable[i].evEvent; + if (!eSignNext) //jeśli nie widzi następnego sygnału + eSignNext = sSpeedTable[i].evEvent; //ustawia dotychczasową if (mvOccupied->Vel > 0.3) // jeśli jedzie (nie trzeba czekać, aż się // drgania wytłumią - drzwi zamykane od 1.0) sSpeedTable[i].fVelNext = 0; // to będzie zatrzymanie @@ -983,10 +983,11 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN } if (TrainParams->StationIndex < TrainParams->StationCount) { // jeśli są dalsze stacje, czekamy do godziny odjazdu + if (TrainParams->IsTimeToGo(GlobalTime->hh, GlobalTime->mm)) { // z dalszą akcją czekamy do godziny odjazdu - // if (TrainParams->CheckTrainLatency()<0.0) //jak się ma odjazd - // do czasu odjazdu? + if (TrainParams->CheckTrainLatency() < 0) + WaitingSet(20); //Jak spóźniony to czeka 20s // iDrivigFlags|=moveLate1; //oflagować, gdy odjazd ze // spóźnieniem, będzie jechał forsowniej fLastStopExpDist = @@ -995,14 +996,12 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN // ma przesunąć na następny postój // Controlled-> //zapisać odległość do przejechania TrainParams->StationIndexInc(); // przejście do następnej - asNextStop = - TrainParams - ->NextStop(); // pobranie kolejnego miejsca zatrzymania + asNextStop = TrainParams->NextStop(); // pobranie kolejnego miejsca zatrzymania // TableClear(); //aby od nowa sprawdziło W4 z inną nazwą już - to nie jest dobry pomysł #if LOGSTOPS WriteLog(pVehicle->asName + " as " + TrainParams->TrainName + ": at " + AnsiString(GlobalTime->hh) + ":" + - AnsiString(GlobalTime->mm) + " next " + + AnsiString(GlobalTime->mm) + " Latency:" + AnsiString(TrainParams->CheckTrainLatency()) + " next " + asNextStop); // informacja #endif if (int(floor(sSpeedTable[i].evEvent->ValueGet(1))) & 1) From 229db5a675b51aa1be01e7fb18f5b0d950edca58 Mon Sep 17 00:00:00 2001 From: antonisauren Date: Wed, 24 Aug 2016 20:48:33 +0200 Subject: [PATCH 10/10] =?UTF-8?q?481:=20Parsowanie=20d=C5=BAwi=C4=99k?= =?UTF-8?q?=C3=B3w=20internal=20couplerstretch:=20bufferclamp:=20D=C5=BAwi?= =?UTF-8?q?=C4=99ki=20dsbBufferClamp,=20dsbCouplerDetach,=20dsbCouplerStre?= =?UTF-8?q?tch,=20dsbCouplerAttach=20maj=C4=85=20warto=C5=9B=C4=87=20domy?= =?UTF-8?q?=C5=9Bln=C4=85.=20Zabezpieczenie=20na=20wysyp=20przy=20uruchami?= =?UTF-8?q?aniu=20w=20wagonie=20na=20sprawdzaniu=20d=C5=BAwi=C4=99ku=20buc?= =?UTF-8?q?zka=20shp.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Driver.cpp | 1 + EU07.bpr | 4 ++-- Globals.cpp | 4 ++-- McZapkie/mtable.pas | 2 +- Train.cpp | 31 ++++++++++++++++++++++++++----- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/Driver.cpp b/Driver.cpp index 7123ac43..b918a463 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -4245,6 +4245,7 @@ bool TController::UpdateSituation(double dt) if ((sSemNext && sSemNext->fVelNext != 0.0) || (iDrivigFlags & moveStopHere)==0) { // jeśli można jechać, to odpalić dźwięk kierownika oraz zamknąć drzwi w // składzie, jeśli nie mamy czekać na sygnał też trzeba odpalić + if (iDrivigFlags & moveGuardSignal) { // komunikat od kierownika tu, bo musi być wolna droga i odczekany czas // stania diff --git a/EU07.bpr b/EU07.bpr index a7d01038..f2998702 100644 --- a/EU07.bpr +++ b/EU07.bpr @@ -60,7 +60,7 @@ AutoIncBuild=0 MajorVer=16 MinorVer=0 Release=1173 -Build=480 +Build=481 Debug=1 PreRelease=0 Special=0 @@ -72,7 +72,7 @@ CodePage=1250 [Version Info Keys] CompanyName=EU07 Team FileDescription=MaSzyna EU07-424 -FileVersion=16.0.1173.480 +FileVersion=16.0.1173.481 InternalName=DP+SPKS+asynch+python LegalCopyright= LegalTrademarks= diff --git a/Globals.cpp b/Globals.cpp index 49ebd484..39fe3f4f 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 = "16.0.1172.480"; +AnsiString Global::asRelease = "16.0.1172.481"; AnsiString Global::asVersion = - "Compilation 2016-08-07, 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::iTextMode = 0; // tryb pracy wyświetlacza tekstowego int Global::iScreenMode[12] = {0, 0, 0, 0, 0, 0, diff --git a/McZapkie/mtable.pas b/McZapkie/mtable.pas index a91726d5..5b9ce339 100644 --- a/McZapkie/mtable.pas +++ b/McZapkie/mtable.pas @@ -100,7 +100,7 @@ end; function TTrainParameters.CheckTrainLatency: real; begin - if (LastStationLatency>1.0) or (LastStationLatency<-1.0) then + if (LastStationLatency>1.0) or (LastStationLatency<0) then CheckTrainLatency:=LastStationLatency {spoznienie + lub do przodu - z tolerancja 1 min} else CheckTrainLatency:=0 diff --git a/Train.cpp b/Train.cpp index d4452626..dfb5b21b 100644 --- a/Train.cpp +++ b/Train.cpp @@ -3139,7 +3139,7 @@ bool TTrain::Update() dsbWejscie_na_drugi_uklad->Play(0, 0, 0); } } - // potem dorobic bufory, sprzegi jako RealSound. + if (TestFlag(mvOccupied->SoundFlag, sound_bufferclamp)) // zderzaki uderzaja o siebie { if (TestFlag(mvOccupied->SoundFlag, sound_loud)) @@ -4096,33 +4096,42 @@ bool TTrain::Update() if (TestFlag(mvOccupied->SecuritySystem.Status, s_CAalarm) || TestFlag(mvOccupied->SecuritySystem.Status, s_SHPalarm)) { + if(dsbBuzzer) + { dsbBuzzer->GetStatus(&stat); if (!(stat & DSBSTATUS_PLAYING)) { dsbBuzzer->Play(0, 0, DSBPLAY_LOOPING); Console::BitsSet(1 << 14); // ustawienie bitu 16 na PoKeys } + } } else { + if(dsbBuzzer) + { dsbBuzzer->GetStatus(&stat); if (stat & DSBSTATUS_PLAYING) { dsbBuzzer->Stop(); Console::BitsClear(1 << 14); // ustawienie bitu 16 na PoKeys } + } } } else // wylaczone { btLampkaCzuwaka.TurnOff(); btLampkaSHP.TurnOff(); + if(dsbBuzzer) + { dsbBuzzer->GetStatus(&stat); if (stat & DSBSTATUS_PLAYING) { dsbBuzzer->Stop(); Console::BitsClear(1 << 14); // ustawienie bitu 16 na PoKeys } + } } //****************************************** @@ -5014,7 +5023,12 @@ bool TTrain::LoadMMediaFile(AnsiString asFileName) // Parser->LoadStringToParse(asFile); Parser->First(); str = ""; + //Wartości domyślne by nie wysypywało przy wybrakowanych mmd @240816 Stele dsbPneumaticSwitch = TSoundsManager::GetFromName("silence1.wav", true); + dsbBufferClamp = TSoundsManager::GetFromName("en57_bufferclamp.wav", true); + dsbCouplerDetach = TSoundsManager::GetFromName("couplerdetach.wav", true); + dsbCouplerStretch = TSoundsManager::GetFromName("en57_couplerstretch.wav", true); + dsbCouplerAttach = TSoundsManager::GetFromName("couplerattach.wav", true); while ((!Parser->EndOfFile) && (str != AnsiString("internaldata:"))) { str = Parser->GetNextSymbol().LowerCase(); @@ -5109,16 +5123,23 @@ bool TTrain::LoadMMediaFile(AnsiString asFileName) { str = Parser->GetNextSymbol().LowerCase(); dsbCouplerAttach = TSoundsManager::GetFromName(str.c_str(), true); - dsbCouplerStretch = TSoundsManager::GetFromName( - "en57_couplerstretch.wav", true); // McZapkie-090503: PROWIZORKA!!! } + else if (str == AnsiString("couplerstretch:")) // laczenie: + { + str = Parser->GetNextSymbol().LowerCase(); + dsbCouplerStretch = TSoundsManager::GetFromName(str.c_str(), true); // McZapkie-090503: PROWIZORKA!!! "en57_couplerstretch.wav" + } else if (str == AnsiString("couplerdetach:")) // rozlaczanie: { str = Parser->GetNextSymbol().LowerCase(); dsbCouplerDetach = TSoundsManager::GetFromName(str.c_str(), true); - dsbBufferClamp = TSoundsManager::GetFromName( - "en57_bufferclamp.wav", true); // McZapkie-090503: PROWIZORKA!!! + } + else if (str == AnsiString("bufferclamp:")) // laczenie: + { + str = Parser->GetNextSymbol().LowerCase(); + dsbBufferClamp = TSoundsManager::GetFromName(str.c_str(), true); // McZapkie-090503: PROWIZORKA!!! "en57_bufferclamp.wav" + } else if (str == AnsiString("ignition:")) { // odpalanie silnika str = Parser->GetNextSymbol().LowerCase();