mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
20
Driver.cpp
20
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)
|
||||
@@ -1875,7 +1874,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 +2985,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)
|
||||
}
|
||||
}
|
||||
@@ -4246,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
|
||||
|
||||
80
DynObj.cpp
80
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ć
|
||||
@@ -3356,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;
|
||||
@@ -3432,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)
|
||||
@@ -3512,6 +3536,8 @@ void TDynamicObject::TurnOff()
|
||||
btHeadSignals21.TurnOff();
|
||||
btHeadSignals22.TurnOff();
|
||||
btHeadSignals23.TurnOff();
|
||||
btMechanik1.TurnOff();
|
||||
btMechanik2.TurnOff();
|
||||
};
|
||||
|
||||
void TDynamicObject::Render()
|
||||
@@ -3875,7 +3901,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
|
||||
@@ -4244,6 +4274,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 +4336,7 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName,
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
if (iMultiTex > 0)
|
||||
{ // jeśli model ma 4 tekstury
|
||||
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
|
||||
@@ -4336,6 +4371,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]))
|
||||
@@ -4929,7 +4965,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());
|
||||
@@ -4944,6 +4981,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;
|
||||
@@ -5628,7 +5666,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
|
||||
@@ -5639,25 +5677,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
|
||||
};
|
||||
|
||||
8
DynObj.h
8
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
|
||||
@@ -504,7 +506,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
|
||||
|
||||
4
EU07.bpr
4
EU07.bpr
@@ -60,7 +60,7 @@ AutoIncBuild=0
|
||||
MajorVer=16
|
||||
MinorVer=0
|
||||
Release=1173
|
||||
Build=478
|
||||
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.478
|
||||
FileVersion=16.0.1173.481
|
||||
InternalName=DP+SPKS+asynch+python
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
|
||||
@@ -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.481";
|
||||
AnsiString Global::asVersion =
|
||||
"Compilation 2016-06-23, 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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
31
Train.cpp
31
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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user