mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-23 03:59:18 +02:00
Merge branch 'master'
Merge to 481.
This commit is contained in:
3808
Driver.cpp
3808
Driver.cpp
File diff suppressed because it is too large
Load Diff
80
DynObj.cpp
80
DynObj.cpp
@@ -867,9 +867,11 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
|
|||||||
if (smWahacze[i])
|
if (smWahacze[i])
|
||||||
smWahacze[i]->SetRotate(float3(1, 0, 0),
|
smWahacze[i]->SetRotate(float3(1, 0, 0),
|
||||||
fWahaczeAmp * cos(MoverParameters->eAngle));
|
fWahaczeAmp * cos(MoverParameters->eAngle));
|
||||||
if (Mechanik && (Controller != Humandriver))
|
|
||||||
|
if (Mechanik)
|
||||||
{ // rysowanie figurki mechanika
|
{ // 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
|
if (smMechanik1) // jak jest drugi, to pierwszego jedynie pokazujemy
|
||||||
smMechanik0->iVisible = MoverParameters->ActiveCab > 0;
|
smMechanik0->iVisible = MoverParameters->ActiveCab > 0;
|
||||||
else
|
else
|
||||||
@@ -881,6 +883,17 @@ void __inline TDynamicObject::ABuLittleUpdate(double ObjSqrDist)
|
|||||||
}
|
}
|
||||||
if (smMechanik1) // mechanik od strony sprzęgu 1
|
if (smMechanik1) // mechanik od strony sprzęgu 1
|
||||||
smMechanik1->iVisible = MoverParameters->ActiveCab < 0;
|
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
|
// ABu: Przechyly na zakretach
|
||||||
// Ra: przechyłkę załatwiamy na etapie przesuwania modelu
|
// Ra: przechyłkę załatwiamy na etapie przesuwania modelu
|
||||||
@@ -1572,7 +1585,7 @@ TDynamicObject::TDynamicObject()
|
|||||||
mdLoad = NULL;
|
mdLoad = NULL;
|
||||||
mdLowPolyInt = NULL;
|
mdLowPolyInt = NULL;
|
||||||
mdPrzedsionek = NULL;
|
mdPrzedsionek = NULL;
|
||||||
smMechanik0 = smMechanik1 = NULL;
|
//smMechanik0 = smMechanik1 = NULL;
|
||||||
smBuforLewy[0] = smBuforLewy[1] = NULL;
|
smBuforLewy[0] = smBuforLewy[1] = NULL;
|
||||||
smBuforPrawy[0] = smBuforPrawy[1] = NULL;
|
smBuforPrawy[0] = smBuforPrawy[1] = NULL;
|
||||||
enginevolume = 0;
|
enginevolume = 0;
|
||||||
@@ -1968,6 +1981,8 @@ TDynamicObject::Init(AnsiString Name, // nazwa pojazdu, np. "EU07-424"
|
|||||||
btHeadSignals21.Init("headlamp23", mdModel, false);
|
btHeadSignals21.Init("headlamp23", mdModel, false);
|
||||||
btHeadSignals22.Init("headlamp21", mdModel, false);
|
btHeadSignals22.Init("headlamp21", mdModel, false);
|
||||||
btHeadSignals23.Init("headlamp22", mdModel, false);
|
btHeadSignals23.Init("headlamp22", mdModel, false);
|
||||||
|
btMechanik1.Init("mechanik1", mdLowPolyInt, false);
|
||||||
|
btMechanik2.Init("mechanik2", mdLowPolyInt, false);
|
||||||
TurnOff(); // resetowanie zmiennych submodeli
|
TurnOff(); // resetowanie zmiennych submodeli
|
||||||
// wyszukiwanie zderzakow
|
// wyszukiwanie zderzakow
|
||||||
if (mdModel) // jeśli ma w czym szukać
|
if (mdModel) // jeśli ma w czym szukać
|
||||||
@@ -3356,17 +3371,25 @@ bool TDynamicObject::Update(double dt, double dt1)
|
|||||||
|
|
||||||
// NBMX Obsluga drzwi, MC: zuniwersalnione
|
// NBMX Obsluga drzwi, MC: zuniwersalnione
|
||||||
if ((dDoorMoveL < MoverParameters->DoorMaxShiftL) && (MoverParameters->DoorLeftOpened))
|
if ((dDoorMoveL < MoverParameters->DoorMaxShiftL) && (MoverParameters->DoorLeftOpened))
|
||||||
|
{
|
||||||
|
rsDoorOpen.Play(vol, 0, MechInside, vPosition);
|
||||||
dDoorMoveL += dt1 * 0.5 * MoverParameters->DoorOpenSpeed;
|
dDoorMoveL += dt1 * 0.5 * MoverParameters->DoorOpenSpeed;
|
||||||
|
}
|
||||||
if ((dDoorMoveL > 0) && (!MoverParameters->DoorLeftOpened))
|
if ((dDoorMoveL > 0) && (!MoverParameters->DoorLeftOpened))
|
||||||
{
|
{
|
||||||
|
rsDoorClose.Play(vol, 0, MechInside, vPosition);
|
||||||
dDoorMoveL -= dt1 * MoverParameters->DoorCloseSpeed;
|
dDoorMoveL -= dt1 * MoverParameters->DoorCloseSpeed;
|
||||||
if (dDoorMoveL < 0)
|
if (dDoorMoveL < 0)
|
||||||
dDoorMoveL = 0;
|
dDoorMoveL = 0;
|
||||||
}
|
}
|
||||||
if ((dDoorMoveR < MoverParameters->DoorMaxShiftR) && (MoverParameters->DoorRightOpened))
|
if ((dDoorMoveR < MoverParameters->DoorMaxShiftR) && (MoverParameters->DoorRightOpened))
|
||||||
|
{
|
||||||
|
rsDoorOpen.Play(vol, 0, MechInside, vPosition);
|
||||||
dDoorMoveR += dt1 * 0.5 * MoverParameters->DoorOpenSpeed;
|
dDoorMoveR += dt1 * 0.5 * MoverParameters->DoorOpenSpeed;
|
||||||
|
}
|
||||||
if ((dDoorMoveR > 0) && (!MoverParameters->DoorRightOpened))
|
if ((dDoorMoveR > 0) && (!MoverParameters->DoorRightOpened))
|
||||||
{
|
{
|
||||||
|
rsDoorClose.Play(vol, 0, MechInside, vPosition);
|
||||||
dDoorMoveR -= dt1 * MoverParameters->DoorCloseSpeed;
|
dDoorMoveR -= dt1 * MoverParameters->DoorCloseSpeed;
|
||||||
if (dDoorMoveR < 0)
|
if (dDoorMoveR < 0)
|
||||||
dDoorMoveR = 0;
|
dDoorMoveR = 0;
|
||||||
@@ -3432,7 +3455,8 @@ bool TDynamicObject::Update(double dt, double dt1)
|
|||||||
}
|
}
|
||||||
if (MoverParameters->LoadStatus)
|
if (MoverParameters->LoadStatus)
|
||||||
LoadUpdate(); // zmiana modelu ładunku
|
LoadUpdate(); // zmiana modelu ładunku
|
||||||
return true; // Ra: chyba tak?
|
|
||||||
|
return true; // Ra: chyba tak?
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDynamicObject::FastUpdate(double dt)
|
bool TDynamicObject::FastUpdate(double dt)
|
||||||
@@ -3512,6 +3536,8 @@ void TDynamicObject::TurnOff()
|
|||||||
btHeadSignals21.TurnOff();
|
btHeadSignals21.TurnOff();
|
||||||
btHeadSignals22.TurnOff();
|
btHeadSignals22.TurnOff();
|
||||||
btHeadSignals23.TurnOff();
|
btHeadSignals23.TurnOff();
|
||||||
|
btMechanik1.TurnOff();
|
||||||
|
btMechanik2.TurnOff();
|
||||||
};
|
};
|
||||||
|
|
||||||
void TDynamicObject::Render()
|
void TDynamicObject::Render()
|
||||||
@@ -3875,7 +3901,11 @@ void TDynamicObject::RenderSounds()
|
|||||||
sReleaser.TurnOn(MechInside, GetPosition());
|
sReleaser.TurnOn(MechInside, GetPosition());
|
||||||
else
|
else
|
||||||
sReleaser.TurnOff(MechInside, GetPosition());
|
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) &&
|
// if ((MoverParameters->ConverterFlag==false) &&
|
||||||
// (MoverParameters->TrainType!=dt_ET22))
|
// (MoverParameters->TrainType!=dt_ET22))
|
||||||
// if
|
// if
|
||||||
@@ -4244,6 +4274,10 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName,
|
|||||||
{ // tekstura wymienna jest raczej jedynie w "dynamic\"
|
{ // tekstura wymienna jest raczej jedynie w "dynamic\"
|
||||||
ReplacableSkin =
|
ReplacableSkin =
|
||||||
Global::asCurrentTexturePath + ReplacableSkin; // skory tez z dynamic/...
|
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
|
if ((i = ReplacableSkin.Pos("|")) > 0) // replacable dzielone
|
||||||
{
|
{
|
||||||
iMultiTex = -1;
|
iMultiTex = -1;
|
||||||
@@ -4302,6 +4336,7 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (iMultiTex > 0)
|
if (iMultiTex > 0)
|
||||||
{ // jeśli model ma 4 tekstury
|
{ // jeśli model ma 4 tekstury
|
||||||
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
|
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
|
||||||
@@ -4336,6 +4371,7 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
||||||
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
|
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
|
||||||
NULL, NULL, ReplacableSkin.c_str(), Global::iDynamicFiltering);
|
NULL, NULL, ReplacableSkin.c_str(), Global::iDynamicFiltering);
|
||||||
if (TTexturesManager::GetAlpha(ReplacableSkinID[1]))
|
if (TTexturesManager::GetAlpha(ReplacableSkinID[1]))
|
||||||
@@ -4929,7 +4965,8 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName,
|
|||||||
if (str == AnsiString("pendulumamplitude:"))
|
if (str == AnsiString("pendulumamplitude:"))
|
||||||
fWahaczeAmp = Parser->GetNextSymbol().ToDouble();
|
fWahaczeAmp = Parser->GetNextSymbol().ToDouble();
|
||||||
}
|
}
|
||||||
else if (str == AnsiString("engineer:"))
|
/*
|
||||||
|
else if (str == AnsiString("engineer:"))
|
||||||
{ // nazwa submodelu maszynisty
|
{ // nazwa submodelu maszynisty
|
||||||
str = Parser->GetNextSymbol();
|
str = Parser->GetNextSymbol();
|
||||||
smMechanik0 = mdModel->GetFromName(str.c_str());
|
smMechanik0 = mdModel->GetFromName(str.c_str());
|
||||||
@@ -4944,6 +4981,7 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName,
|
|||||||
// if (smMechanik0) //a jest pierwszy
|
// if (smMechanik0) //a jest pierwszy
|
||||||
// smMechanik0->WillBeAnimated(); //to będziemy go obracać
|
// smMechanik0->WillBeAnimated(); //to będziemy go obracać
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
else if (str == AnsiString("animdoorprefix:"))
|
else if (str == AnsiString("animdoorprefix:"))
|
||||||
{ // nazwa animowanych drzwi
|
{ // nazwa animowanych drzwi
|
||||||
int i, j, k, m;
|
int i, j, k, m;
|
||||||
@@ -5628,7 +5666,7 @@ AnsiString TDynamicObject::TextureTest(AnsiString &name)
|
|||||||
return ""; // nie znaleziona
|
return ""; // nie znaleziona
|
||||||
};
|
};
|
||||||
|
|
||||||
void TDynamicObject::DestinationSet(AnsiString to)
|
void TDynamicObject::DestinationSet(AnsiString to, AnsiString numer)
|
||||||
{ // ustawienie stacji
|
{ // ustawienie stacji
|
||||||
// docelowej oraz wymiennej
|
// docelowej oraz wymiennej
|
||||||
// tekstury 4, jeśli
|
// tekstury 4, jeśli
|
||||||
@@ -5639,25 +5677,39 @@ void TDynamicObject::DestinationSet(AnsiString to)
|
|||||||
// rozkładu
|
// rozkładu
|
||||||
if (abs(iMultiTex) >= 4)
|
if (abs(iMultiTex) >= 4)
|
||||||
return; // jak są 4 tekstury wymienne, to nie zmieniać rozkładem
|
return; // jak są 4 tekstury wymienne, to nie zmieniać rozkładem
|
||||||
|
numer = Global::Bezogonkow(numer);
|
||||||
asDestination = to;
|
asDestination = to;
|
||||||
to = Global::Bezogonkow(to); // do szukania pliku obcinamy ogonki
|
to = Global::Bezogonkow(to); // do szukania pliku obcinamy ogonki
|
||||||
AnsiString x;
|
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())
|
if (to.IsEmpty())
|
||||||
to = "nowhere";
|
to = "nowhere";
|
||||||
x = TextureTest(asBaseDir + to + "@" +
|
x = TextureTest(asBaseDir + to + "@" + MoverParameters->TypeName); // w pierwszej kolejności z nazwą FIZ/MMD
|
||||||
MoverParameters->TypeName); // w pierwszej kolejności z nazwą FIZ/MMD
|
|
||||||
if (!x.IsEmpty())
|
if (!x.IsEmpty())
|
||||||
{
|
{
|
||||||
ReplacableSkinID[4] = TTexturesManager::GetTextureID(
|
ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się
|
||||||
NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
x = TextureTest(asBaseDir + to); // na razie prymitywnie
|
x = TextureTest(asBaseDir + to); // na razie prymitywnie
|
||||||
if (!x.IsEmpty())
|
if (!x.IsEmpty())
|
||||||
ReplacableSkinID[4] = TTexturesManager::GetTextureID(
|
ReplacableSkinID[4] = TTexturesManager::GetTextureID( NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się
|
||||||
NULL, NULL, x.c_str(), 9); // rozmywania 0,1,4,5 nie nadają się
|
|
||||||
else
|
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
|
// Ra 2015-01: żeby zalogować błąd, trzeba by mieć pewność, że model używa
|
||||||
// tekstury nr 4
|
// tekstury nr 4
|
||||||
};
|
};
|
||||||
|
|||||||
8
DynObj.h
8
DynObj.h
@@ -266,8 +266,10 @@ class TDynamicObject
|
|||||||
TButton btHeadSignals21; // oswietlenie czolowe - tyl
|
TButton btHeadSignals21; // oswietlenie czolowe - tyl
|
||||||
TButton btHeadSignals22;
|
TButton btHeadSignals22;
|
||||||
TButton btHeadSignals23;
|
TButton btHeadSignals23;
|
||||||
TSubModel *smMechanik0; // Ra: mechanik wbudowany w model jako submodel?
|
TButton btMechanik1;
|
||||||
TSubModel *smMechanik1; // mechanik od strony sprzęgu 1
|
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
|
double enginevolume; // MC: pomocnicze zeby gladziej silnik buczal
|
||||||
|
|
||||||
int iAxles; // McZapkie: to potem mozna skasowac i zastapic iNumAxles
|
int iAxles; // McZapkie: to potem mozna skasowac i zastapic iNumAxles
|
||||||
@@ -504,7 +506,7 @@ class TDynamicObject
|
|||||||
void ParamSet(int what, int into);
|
void ParamSet(int what, int into);
|
||||||
int RouteWish(TTrack *tr); // zapytanie do AI, po którym segmencie skrzyżowania
|
int RouteWish(TTrack *tr); // zapytanie do AI, po którym segmencie skrzyżowania
|
||||||
// jechać
|
// jechać
|
||||||
void DestinationSet(AnsiString to);
|
void DestinationSet(AnsiString to, AnsiString numer);
|
||||||
AnsiString TextureTest(AnsiString &name);
|
AnsiString TextureTest(AnsiString &name);
|
||||||
void OverheadTrack(float o);
|
void OverheadTrack(float o);
|
||||||
double MED[9][8]; // lista zmiennych do debugowania hamulca ED
|
double MED[9][8]; // lista zmiennych do debugowania hamulca ED
|
||||||
|
|||||||
4
EU07.bpr
4
EU07.bpr
@@ -60,7 +60,7 @@ AutoIncBuild=0
|
|||||||
MajorVer=16
|
MajorVer=16
|
||||||
MinorVer=0
|
MinorVer=0
|
||||||
Release=1173
|
Release=1173
|
||||||
Build=478
|
Build=481
|
||||||
Debug=1
|
Debug=1
|
||||||
PreRelease=0
|
PreRelease=0
|
||||||
Special=0
|
Special=0
|
||||||
@@ -72,7 +72,7 @@ CodePage=1250
|
|||||||
[Version Info Keys]
|
[Version Info Keys]
|
||||||
CompanyName=EU07 Team
|
CompanyName=EU07 Team
|
||||||
FileDescription=MaSzyna EU07-424
|
FileDescription=MaSzyna EU07-424
|
||||||
FileVersion=16.0.1173.478
|
FileVersion=16.0.1173.481
|
||||||
InternalName=DP+SPKS+asynch+python
|
InternalName=DP+SPKS+asynch+python
|
||||||
LegalCopyright=
|
LegalCopyright=
|
||||||
LegalTrademarks=
|
LegalTrademarks=
|
||||||
|
|||||||
@@ -49,9 +49,9 @@ double Global::fLuminance = 1.0; // jasno
|
|||||||
int Global::iReCompile = 0; // zwiêkszany, gdy trzeba odœwie¿yæ siatki
|
int Global::iReCompile = 0; // zwiêkszany, gdy trzeba odœwie¿yæ siatki
|
||||||
HWND Global::hWnd = NULL; // uchwyt okna
|
HWND Global::hWnd = NULL; // uchwyt okna
|
||||||
int Global::iCameraLast = -1;
|
int Global::iCameraLast = -1;
|
||||||
AnsiString Global::asRelease = "16.0.1172.478";
|
AnsiString Global::asRelease = "16.0.1172.481";
|
||||||
AnsiString Global::asVersion =
|
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::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::iTextMode = 0; // tryb pracy wyœwietlacza tekstowego
|
||||||
int Global::iScreenMode[12] = {0, 0, 0, 0, 0, 0,
|
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;
|
const Vepsilon=1e-5; Aepsilon=1e-3; //ASBSpeed=0.8;
|
||||||
begin
|
begin
|
||||||
TotalCurrent:=0;
|
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
|
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
|
if ((Couplers[b].CouplingFlag and ctrain_power) = ctrain_power)or(((Couplers[b].CouplingFlag and ctrain_heating) = ctrain_heating)and(Heating)) then
|
||||||
begin
|
begin
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ end;
|
|||||||
|
|
||||||
function TTrainParameters.CheckTrainLatency: real;
|
function TTrainParameters.CheckTrainLatency: real;
|
||||||
begin
|
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}
|
CheckTrainLatency:=LastStationLatency {spoznienie + lub do przodu - z tolerancja 1 min}
|
||||||
else
|
else
|
||||||
CheckTrainLatency:=0
|
CheckTrainLatency:=0
|
||||||
|
|||||||
31
Train.cpp
31
Train.cpp
@@ -3139,7 +3139,7 @@ bool TTrain::Update()
|
|||||||
dsbWejscie_na_drugi_uklad->Play(0, 0, 0);
|
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_bufferclamp)) // zderzaki uderzaja o siebie
|
||||||
{
|
{
|
||||||
if (TestFlag(mvOccupied->SoundFlag, sound_loud))
|
if (TestFlag(mvOccupied->SoundFlag, sound_loud))
|
||||||
@@ -4096,33 +4096,42 @@ bool TTrain::Update()
|
|||||||
if (TestFlag(mvOccupied->SecuritySystem.Status, s_CAalarm) ||
|
if (TestFlag(mvOccupied->SecuritySystem.Status, s_CAalarm) ||
|
||||||
TestFlag(mvOccupied->SecuritySystem.Status, s_SHPalarm))
|
TestFlag(mvOccupied->SecuritySystem.Status, s_SHPalarm))
|
||||||
{
|
{
|
||||||
|
if(dsbBuzzer)
|
||||||
|
{
|
||||||
dsbBuzzer->GetStatus(&stat);
|
dsbBuzzer->GetStatus(&stat);
|
||||||
if (!(stat & DSBSTATUS_PLAYING))
|
if (!(stat & DSBSTATUS_PLAYING))
|
||||||
{
|
{
|
||||||
dsbBuzzer->Play(0, 0, DSBPLAY_LOOPING);
|
dsbBuzzer->Play(0, 0, DSBPLAY_LOOPING);
|
||||||
Console::BitsSet(1 << 14); // ustawienie bitu 16 na PoKeys
|
Console::BitsSet(1 << 14); // ustawienie bitu 16 na PoKeys
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if(dsbBuzzer)
|
||||||
|
{
|
||||||
dsbBuzzer->GetStatus(&stat);
|
dsbBuzzer->GetStatus(&stat);
|
||||||
if (stat & DSBSTATUS_PLAYING)
|
if (stat & DSBSTATUS_PLAYING)
|
||||||
{
|
{
|
||||||
dsbBuzzer->Stop();
|
dsbBuzzer->Stop();
|
||||||
Console::BitsClear(1 << 14); // ustawienie bitu 16 na PoKeys
|
Console::BitsClear(1 << 14); // ustawienie bitu 16 na PoKeys
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // wylaczone
|
else // wylaczone
|
||||||
{
|
{
|
||||||
btLampkaCzuwaka.TurnOff();
|
btLampkaCzuwaka.TurnOff();
|
||||||
btLampkaSHP.TurnOff();
|
btLampkaSHP.TurnOff();
|
||||||
|
if(dsbBuzzer)
|
||||||
|
{
|
||||||
dsbBuzzer->GetStatus(&stat);
|
dsbBuzzer->GetStatus(&stat);
|
||||||
if (stat & DSBSTATUS_PLAYING)
|
if (stat & DSBSTATUS_PLAYING)
|
||||||
{
|
{
|
||||||
dsbBuzzer->Stop();
|
dsbBuzzer->Stop();
|
||||||
Console::BitsClear(1 << 14); // ustawienie bitu 16 na PoKeys
|
Console::BitsClear(1 << 14); // ustawienie bitu 16 na PoKeys
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//******************************************
|
//******************************************
|
||||||
@@ -5014,7 +5023,12 @@ bool TTrain::LoadMMediaFile(AnsiString asFileName)
|
|||||||
// Parser->LoadStringToParse(asFile);
|
// Parser->LoadStringToParse(asFile);
|
||||||
Parser->First();
|
Parser->First();
|
||||||
str = "";
|
str = "";
|
||||||
|
//Wartoœci domyœlne by nie wysypywa³o przy wybrakowanych mmd @240816 Stele
|
||||||
dsbPneumaticSwitch = TSoundsManager::GetFromName("silence1.wav", true);
|
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:")))
|
while ((!Parser->EndOfFile) && (str != AnsiString("internaldata:")))
|
||||||
{
|
{
|
||||||
str = Parser->GetNextSymbol().LowerCase();
|
str = Parser->GetNextSymbol().LowerCase();
|
||||||
@@ -5109,16 +5123,23 @@ bool TTrain::LoadMMediaFile(AnsiString asFileName)
|
|||||||
{
|
{
|
||||||
str = Parser->GetNextSymbol().LowerCase();
|
str = Parser->GetNextSymbol().LowerCase();
|
||||||
dsbCouplerAttach = TSoundsManager::GetFromName(str.c_str(), true);
|
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:
|
else if (str == AnsiString("couplerdetach:")) // rozlaczanie:
|
||||||
{
|
{
|
||||||
str = Parser->GetNextSymbol().LowerCase();
|
str = Parser->GetNextSymbol().LowerCase();
|
||||||
dsbCouplerDetach = TSoundsManager::GetFromName(str.c_str(), true);
|
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:"))
|
else if (str == AnsiString("ignition:"))
|
||||||
{ // odpalanie silnika
|
{ // odpalanie silnika
|
||||||
str = Parser->GetNextSymbol().LowerCase();
|
str = Parser->GetNextSymbol().LowerCase();
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ http://mozilla.org/MPL/2.0/.
|
|||||||
#include "DynObj.h"
|
#include "DynObj.h"
|
||||||
#include "Ground.h"
|
#include "Ground.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
|
#include "Driver.h"
|
||||||
|
|
||||||
TTrackFollower::TTrackFollower()
|
TTrackFollower::TTrackFollower()
|
||||||
{
|
{
|
||||||
@@ -132,7 +133,7 @@ bool TTrackFollower::Move(double fDistance, bool bPrimary)
|
|||||||
{
|
{
|
||||||
if (iSetFlag(iEventFlag, -1)) // zawsze zeruje flagę sprawdzenia, jak mechanik
|
if (iSetFlag(iEventFlag, -1)) // zawsze zeruje flagę sprawdzenia, jak mechanik
|
||||||
// dosiądzie, to się nie wykona
|
// 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
|
// if (TestFlag(iEventFlag,1)) //McZapkie-280503: wyzwalanie event tylko dla
|
||||||
// pojazdow z obsada
|
// pojazdow z obsada
|
||||||
if (bPrimary && pCurrentTrack->evEvent1 &&
|
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
|
if (iSetFlag(iEventFlag, -2)) // zawsze ustawia flagę sprawdzenia, jak mechanik
|
||||||
// dosiądzie, to się nie wykona
|
// 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
|
// if (TestFlag(iEventFlag,2)) //sprawdzanie jest od razu w pierwszym
|
||||||
// warunku
|
// warunku
|
||||||
if (bPrimary && pCurrentTrack->evEvent2 &&
|
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
|
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)
|
||||||
if (!pCurrentTrack->evEvent0->iQueued)
|
if (!pCurrentTrack->evEvent0->iQueued)
|
||||||
Global::AddToQuery(pCurrentTrack->evEvent0, Owner);
|
Global::AddToQuery(pCurrentTrack->evEvent0, Owner);
|
||||||
|
|||||||
Reference in New Issue
Block a user