Tekstury rozkładu szukane są w kolejności: nr_pociagu@typ_pojazdu, nr_pociagu, stacja_docelowa@typ_pojazdu, stacja docelowa.

Jeśli żadna z nich nie zostanie znaleziona, wyświetlana jest "nowhere".
This commit is contained in:
antonisauren
2016-07-11 20:15:43 +02:00
parent 3d321f5daf
commit cb06375aec
3 changed files with 25 additions and 11 deletions

View File

@@ -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)
}
}

View File

@@ -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
};

View File

@@ -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