From cb06375aec24120c141382c771b09054e78cbd7f Mon Sep 17 00:00:00 2001 From: antonisauren Date: Mon, 11 Jul 2016 20:15:43 +0200 Subject: [PATCH] =?UTF-8?q?=20=20=20=20Tekstury=20rozk=C5=82adu=20szukane?= =?UTF-8?q?=20s=C4=85=20w=20kolejno=C5=9Bci:=20nr=5Fpociagu@typ=5Fpojazdu,?= =?UTF-8?q?=20nr=5Fpociagu,=20stacja=5Fdocelowa@typ=5Fpojazdu,=20stacja=20?= =?UTF-8?q?docelowa.=20=20=20=20=20Je=C5=9Bli=20=C5=BCadna=20z=20nich=20ni?= =?UTF-8?q?e=20zostanie=20znaleziona,=20wy=C5=9Bwietlana=20jest=20"nowhere?= =?UTF-8?q?".?= 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