16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-22 19:49:19 +02:00

Merge pull request #13 from antonisauren/master

482
This commit is contained in:
firleju
2017-01-12 09:37:19 +01:00
committed by GitHub
8 changed files with 47 additions and 38 deletions

View File

@@ -986,8 +986,10 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
if (TrainParams->IsTimeToGo(GlobalTime->hh, GlobalTime->mm)) if (TrainParams->IsTimeToGo(GlobalTime->hh, GlobalTime->mm))
{ // z dalszą akcją czekamy do godziny odjazdu { // z dalszą akcją czekamy do godziny odjazdu
/* potencjalny problem z ruszaniem z w4
if (TrainParams->CheckTrainLatency() < 0) if (TrainParams->CheckTrainLatency() < 0)
WaitingSet(20); //Jak spóźniony to czeka 20s WaitingSet(20); //Jak spóźniony to czeka 20s
*/
// iDrivigFlags|=moveLate1; //oflagować, gdy odjazd ze // iDrivigFlags|=moveLate1; //oflagować, gdy odjazd ze
// spóźnieniem, będzie jechał forsowniej // spóźnieniem, będzie jechał forsowniej
fLastStopExpDist = fLastStopExpDist =
@@ -1151,6 +1153,10 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN
iDrivigFlags |= moveSemaphorFound; //jeśli z przodu to dajemy falgę, że jest iDrivigFlags |= moveSemaphorFound; //jeśli z przodu to dajemy falgę, że jest
d_to_next_sem = Min0R(sSpeedTable[i].fDist, d_to_next_sem); d_to_next_sem = Min0R(sSpeedTable[i].fDist, d_to_next_sem);
} }
if (sSpeedTable[i].fDist <= d_to_next_sem)
{
VelSignalNext = sSpeedTable[i].fVelNext;
}
} }
else if (sSpeedTable[i].iFlags & spRoadVel) else if (sSpeedTable[i].iFlags & spRoadVel)
{ // to W6 { // to W6
@@ -1376,7 +1382,7 @@ void TController::TablePurger()
{ // odtykacz: usuwa mniej istotne pozycje ze środka tabelki, aby uniknąć zatkania { // odtykacz: usuwa mniej istotne pozycje ze środka tabelki, aby uniknąć zatkania
//(np. brak ograniczenia pomiędzy zwrotnicami, usunięte sygnały, minięte odcinki łuku) //(np. brak ograniczenia pomiędzy zwrotnicami, usunięte sygnały, minięte odcinki łuku)
if (Global::iWriteLogEnabled & 8) if (Global::iWriteLogEnabled & 8)
WriteLog("TablePurger: Czyszczenie tableki."); WriteLog("TablePurger: Czyszczenie tabelki.");
int i, j, k = iLast - iFirst; // może być 15 albo 16 pozycji, ostatniej nie ma co sprawdzać int i, j, k = iLast - iFirst; // może być 15 albo 16 pozycji, ostatniej nie ma co sprawdzać
if (k < 0) if (k < 0)
k += iSpeedTableSize; // ilość pozycji do przeanalizowania k += iSpeedTableSize; // ilość pozycji do przeanalizowania

View File

@@ -242,6 +242,7 @@ class TController
double VelLimit; // predkość zadawana przez event jednokierunkowego ograniczenia prędkości double VelLimit; // predkość zadawana przez event jednokierunkowego ograniczenia prędkości
public: public:
double VelSignalLast; // prędkość zadana na ostatnim semaforze double VelSignalLast; // prędkość zadana na ostatnim semaforze
double VelSignalNext; // prędkość zadana na następnym semaforze
double VelLimitLast; // prędkość zadana przez ograniczenie double VelLimitLast; // prędkość zadana przez ograniczenie
double VelRoad; // aktualna prędkość drogowa (ze znaku W27) double VelRoad; // aktualna prędkość drogowa (ze znaku W27)
// (PutValues albo komendą) // (PutValues albo komendą)

View File

@@ -3372,24 +3372,24 @@ 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); rsDoorOpen.Play(1, 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); rsDoorClose.Play(1, 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); rsDoorOpen.Play(1, 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); rsDoorClose.Play(1, 0, MechInside, vPosition);
dDoorMoveR -= dt1 * MoverParameters->DoorCloseSpeed; dDoorMoveR -= dt1 * MoverParameters->DoorCloseSpeed;
if (dDoorMoveR < 0) if (dDoorMoveR < 0)
dDoorMoveR = 0; dDoorMoveR = 0;
@@ -5189,20 +5189,12 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName,
str = Parser->GetNextSymbol(); str = Parser->GetNextSymbol();
sPantUp.Init(str.c_str(), 50, GetPosition().x, GetPosition().y, GetPosition().z, sPantUp.Init(str.c_str(), 50, GetPosition().x, GetPosition().y, GetPosition().z,
true); true);
sPantUp.AM = 50000;
sPantUp.AA = -1 * (105 - random(10)) / 100;
sPantUp.FM = 1.0;
sPantUp.FA = 0.0;
} }
if (str == AnsiString("pantographdown:")) // pliki dzwiekow pantografow if (str == AnsiString("pantographdown:")) // pliki dzwiekow pantografow
{ {
str = Parser->GetNextSymbol(); str = Parser->GetNextSymbol();
sPantDown.Init(str.c_str(), 50, GetPosition().x, GetPosition().y, sPantDown.Init(str.c_str(), 50, GetPosition().x, GetPosition().y,
GetPosition().z, true); GetPosition().z, true);
sPantDown.AM = 50000;
sPantDown.AA = -1 * (105 - random(10)) / 100;
sPantDown.FM = 1.0;
sPantDown.FA = 0.0;
} }
else if (str == AnsiString("compressor:")) // pliki ze sprezarka else if (str == AnsiString("compressor:")) // pliki ze sprezarka
{ {
@@ -5225,22 +5217,13 @@ void TDynamicObject::LoadMMediaFile(AnsiString BaseDir, AnsiString TypeName,
else if (str == AnsiString("dooropen:")) else if (str == AnsiString("dooropen:"))
{ {
str = Parser->GetNextSymbol(); str = Parser->GetNextSymbol();
rsDoorOpen.Init(str.c_str(), 50, GetPosition().x, GetPosition().y, rsDoorOpen.Init(str.c_str(), 50, GetPosition().x, GetPosition().y, GetPosition().z, true);
GetPosition().z, true);
rsDoorOpen.AM = 50000;
rsDoorOpen.AA = -1 * (105 - random(10)) / 100;
rsDoorOpen.FM = 1.0;
rsDoorOpen.FA = 0.0;
} }
else if (str == AnsiString("doorclose:")) else if (str == AnsiString("doorclose:"))
{ {
str = Parser->GetNextSymbol(); str = Parser->GetNextSymbol();
rsDoorClose.Init(str.c_str(), 50, GetPosition().x, GetPosition().y, rsDoorClose.Init(str.c_str(), 50, GetPosition().x, GetPosition().y,
GetPosition().z, true); GetPosition().z, true);
rsDoorClose.AM = 50000;
rsDoorClose.AA = -1 * (105 - random(10)) / 100;
rsDoorClose.FM = 1.0;
rsDoorClose.FA = 0.0;
} }
else if (str == AnsiString("sand:")) // pliki z piasecznica else if (str == AnsiString("sand:")) // pliki z piasecznica
{ {

View File

@@ -60,7 +60,7 @@ AutoIncBuild=0
MajorVer=16 MajorVer=16
MinorVer=0 MinorVer=0
Release=1173 Release=1173
Build=481 Build=482
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.481 FileVersion=16.0.1173.482
InternalName=DP+SPKS+asynch+python InternalName=DP+SPKS+asynch+python
LegalCopyright= LegalCopyright=
LegalTrademarks= LegalTrademarks=
@@ -81,13 +81,6 @@ ProductName=MaSzyna EU07-424
ProductVersion=16.0 ProductVersion=16.0
Comments= Comments=
[Excluded Packages]
$(BCB)\Bin\bcbsmp50.bpl=Borland C++ Sample Components
$(BCB)\Bin\dclqrt50.bpl=QuickReport Components
C:\WINDOWS\system32\ibsmp50.bpl=Borland C++ InterBase Alerter Component
$(BCB)\Bin\dcltee50.bpl=TeeChart 5.0 Components
$(BCB)\Bin\applet50.bpl=Borland Control Panel Applet Package
[HistoryLists\hlIncludePath] [HistoryLists\hlIncludePath]
Count=2 Count=2
Item0=Console;opengl;McZapkie;$(BCB)\include;$(BCB)\include\vcl;python\include Item0=Console;opengl;McZapkie;$(BCB)\include;$(BCB)\include\vcl;python\include

View File

@@ -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.481"; AnsiString Global::asRelease = "16.0.1172.482";
AnsiString Global::asVersion = AnsiString Global::asVersion =
"Compilation 2016-08-24, release " + Global::asRelease + "."; // tutaj, bo wysy³any "Compilation 2017-01-10, 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,

View File

@@ -4085,7 +4085,7 @@ begin
if (EngineType=ElectricSeriesMotor) then if (EngineType=ElectricSeriesMotor) then
begin begin
case RVentType of {wentylatory rozruchowe} case RVentType of {wentylatory rozruchowe}
1: if ActiveDir<>0 then 1: if (ActiveDir<>0) and (RList[MainCtrlActualPos].R>RVentCutOff) then
RventRot:=RventRot+(RVentnmax-RventRot)*RVentSpeed*dt RventRot:=RventRot+(RVentnmax-RventRot)*RVentSpeed*dt
else else
RventRot:=RventRot*(1-RVentSpeed*dt); RventRot:=RventRot*(1-RVentSpeed*dt);

View File

@@ -349,6 +349,15 @@ PyObject *TTrain::GetTrainState()
PyDict_SetItemString(dict, "manual_brake", PyGetBool(mvOccupied->ManualBrakePos > 0)); PyDict_SetItemString(dict, "manual_brake", PyGetBool(mvOccupied->ManualBrakePos > 0));
PyDict_SetItemString(dict, "pantpress", PyGetFloat(mvControlled->PantPress)); PyDict_SetItemString(dict, "pantpress", PyGetFloat(mvControlled->PantPress));
PyDict_SetItemString(dict, "trainnumber", PyGetString(DynamicObject->Mechanik->TrainName().c_str())); PyDict_SetItemString(dict, "trainnumber", PyGetString(DynamicObject->Mechanik->TrainName().c_str()));
PyDict_SetItemString(dict, "velnext", PyGetFloat(DynamicObject->Mechanik->VelNext));
PyDict_SetItemString(dict, "actualproximitydist", PyGetFloat(DynamicObject->Mechanik->ActualProximityDist));
PyDict_SetItemString(dict, "velsignallast", PyGetFloat(DynamicObject->Mechanik->VelSignalLast));
PyDict_SetItemString(dict, "vellimitlast", PyGetFloat(DynamicObject->Mechanik->VelLimitLast));
PyDict_SetItemString(dict, "velroad", PyGetFloat(DynamicObject->Mechanik->VelRoad));
PyDict_SetItemString(dict, "velsignalnext", PyGetFloat(DynamicObject->Mechanik->VelSignalNext));
PyDict_SetItemString(dict, "battery", PyGetBool(mvControlled->Battery));
PyDict_SetItemString(dict, "tractionforce", PyGetFloat(DynamicObject->MoverParameters->Ft));
return dict; return dict;
} }
@@ -459,6 +468,10 @@ void TTrain::OnKeyDown(int cKey)
if (mvOccupied->BatterySwitch(true)) // bateria potrzebna np. do zapalenia œwiate³ if (mvOccupied->BatterySwitch(true)) // bateria potrzebna np. do zapalenia œwiate³
{ {
dsbSwitch->Play(0, 0, 0); dsbSwitch->Play(0, 0, 0);
if (ggBatteryButton.SubModel)
{
ggBatteryButton.PutValue(1);
}
if (mvOccupied->LightsPosNo > 0) if (mvOccupied->LightsPosNo > 0)
{ {
SetLights(); SetLights();
@@ -1500,6 +1513,10 @@ void TTrain::OnKeyDown(int cKey)
{ // ewentualnie zablokowaæ z FIZ, { // ewentualnie zablokowaæ z FIZ,
// np. w samochodach siê nie // np. w samochodach siê nie
// od³¹cza akumulatora // od³¹cza akumulatora
if (ggBatteryButton.SubModel)
{
ggBatteryButton.PutValue(0);
}
dsbSwitch->Play(0, 0, 0); dsbSwitch->Play(0, 0, 0);
// mvOccupied->SecuritySystem.Status=0; // mvOccupied->SecuritySystem.Status=0;
mvControlled->PantFront(false); mvControlled->PantFront(false);
@@ -3665,6 +3682,7 @@ bool TTrain::Update()
(mvOccupied->EpFuse)); // napiecie na nastawniku hamulcowym (mvOccupied->EpFuse)); // napiecie na nastawniku hamulcowym
btLampkaForward.Turn(mvControlled->ActiveDir > 0); // jazda do przodu btLampkaForward.Turn(mvControlled->ActiveDir > 0); // jazda do przodu
btLampkaBackward.Turn(mvControlled->ActiveDir < 0); // jazda do ty³u btLampkaBackward.Turn(mvControlled->ActiveDir < 0); // jazda do ty³u
btLampkaED.Turn(mvControlled->DynamicBrakeFlag); //hamulec ED
} }
else else
{ // gdy bateria wy³¹czona { // gdy bateria wy³¹czona
@@ -3678,6 +3696,7 @@ bool TTrain::Update()
btLampkaNapNastHam.TurnOff(); btLampkaNapNastHam.TurnOff();
btLampkaForward.TurnOff(); btLampkaForward.TurnOff();
btLampkaBackward.TurnOff(); btLampkaBackward.TurnOff();
btLampkaED.TurnOff();
} }
// McZapkie-080602: obroty (albo translacje) regulatorow // McZapkie-080602: obroty (albo translacje) regulatorow
if (ggMainCtrl.SubModel) if (ggMainCtrl.SubModel)
@@ -4950,6 +4969,7 @@ bool TTrain::Update()
// hunter-091012 // hunter-091012
ggCabLightButton.Update(); ggCabLightButton.Update();
ggCabLightDimButton.Update(); ggCabLightDimButton.Update();
ggBatteryButton.Update();
//------ //------
if (ActiveUniversal4) if (ActiveUniversal4)
ggUniversal4Button.PermIncValue(dt); ggUniversal4Button.PermIncValue(dt);
@@ -5429,6 +5449,7 @@ bool TTrain::InitializeCab(int NewCabNo, AnsiString asFileName)
// hunter-091012 // hunter-091012
ggCabLightButton.Clear(); ggCabLightButton.Clear();
ggCabLightDimButton.Clear(); ggCabLightDimButton.Clear();
ggBatteryButton.Clear();
//------- //-------
ggUniversal4Button.Clear(); ggUniversal4Button.Clear();
ggFuseButton.Clear(); ggFuseButton.Clear();
@@ -5514,6 +5535,7 @@ bool TTrain::InitializeCab(int NewCabNo, AnsiString asFileName)
btLampkaWylSzybkiB.Clear(); btLampkaWylSzybkiB.Clear();
btLampkaForward.Clear(); btLampkaForward.Clear();
btLampkaBackward.Clear(); btLampkaBackward.Clear();
btLampkaED.Clear();
btCabLight.Clear(); // hunter-171012 btCabLight.Clear(); // hunter-171012
ggLeftLightButton.Clear(); ggLeftLightButton.Clear();
ggRightLightButton.Clear(); ggRightLightButton.Clear();
@@ -5649,9 +5671,9 @@ bool TTrain::InitializeCab(int NewCabNo, AnsiString asFileName)
else if (str == AnsiString("cablight_sw:")) // hunter-091012: swiatlo w kabinie else if (str == AnsiString("cablight_sw:")) // hunter-091012: swiatlo w kabinie
ggCabLightButton.Load(Parser, DynamicObject->mdKabina); ggCabLightButton.Load(Parser, DynamicObject->mdKabina);
else if (str == AnsiString("cablightdim_sw:")) else if (str == AnsiString("cablightdim_sw:"))
ggCabLightDimButton.Load( ggCabLightDimButton.Load(Parser, DynamicObject->mdKabina); // hunter-091012: przyciemnienie swiatla w kabinie
Parser, else if (str == AnsiString("battery_sw:"))
DynamicObject->mdKabina); // hunter-091012: przyciemnienie swiatla w kabinie ggBatteryButton.Load(Parser, DynamicObject->mdKabina);
// ABu 090305: uniwersalne przyciski lub inne rzeczy // ABu 090305: uniwersalne przyciski lub inne rzeczy
else if (str == AnsiString("universal1:")) else if (str == AnsiString("universal1:"))
ggUniversal1Button.Load(Parser, DynamicObject->mdKabina, DynamicObject->mdModel); ggUniversal1Button.Load(Parser, DynamicObject->mdKabina, DynamicObject->mdModel);
@@ -5911,6 +5933,8 @@ bool TTrain::InitializeCab(int NewCabNo, AnsiString asFileName)
btLampkaBocznik4.Load(Parser, DynamicObject->mdKabina); btLampkaBocznik4.Load(Parser, DynamicObject->mdKabina);
else if (str == AnsiString("i-braking:")) else if (str == AnsiString("i-braking:"))
btLampkaHamienie.Load(Parser, DynamicObject->mdKabina); btLampkaHamienie.Load(Parser, DynamicObject->mdKabina);
else if (str == AnsiString("i-dynamicbrake:"))
btLampkaED.Load(Parser, DynamicObject->mdKabina);
else if (str == AnsiString("i-braking-ezt:")) else if (str == AnsiString("i-braking-ezt:"))
btLampkaHamowanie1zes.Load(Parser, DynamicObject->mdKabina); btLampkaHamowanie1zes.Load(Parser, DynamicObject->mdKabina);
else if (str == AnsiString("i-braking-ezt2:")) else if (str == AnsiString("i-braking-ezt2:"))

View File

@@ -189,6 +189,7 @@ class TTrain
TGauge ggCabLightButton; // hunter-091012: przelacznik oswietlania kabiny TGauge ggCabLightButton; // hunter-091012: przelacznik oswietlania kabiny
TGauge ggCabLightDimButton; // hunter-091012: przelacznik przyciemnienia TGauge ggCabLightDimButton; // hunter-091012: przelacznik przyciemnienia
TGauge ggBatteryButton; // Stele 161228 hebelek baterii
// oswietlenia kabiny // oswietlenia kabiny
// NBMX wrzesien 2003 - obsluga drzwi // NBMX wrzesien 2003 - obsluga drzwi
@@ -255,6 +256,7 @@ class TTrain
TButton btLampkaBocznik4; TButton btLampkaBocznik4;
TButton btLampkaRadiotelefon; TButton btLampkaRadiotelefon;
TButton btLampkaHamienie; TButton btLampkaHamienie;
TButton btLampkaED; //Stele 161228 hamowanie elektrodynamiczne
TButton btLampkaJazda; // Ra: nie u篡wane TButton btLampkaJazda; // Ra: nie u篡wane
// KURS90 // KURS90
TButton btLampkaBoczniki; TButton btLampkaBoczniki;