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

merged upstream changes

This commit is contained in:
tmj-fstate
2017-01-23 12:40:14 +01:00
75 changed files with 9745 additions and 9755 deletions

View File

@@ -130,15 +130,15 @@ static int const dtrain_out = 128; /*wykolejenie*/
#define p_slippdmg (1.000000E-03)
/*typ sprzegu*/
static int const ctrain_virtual = 0; //gdy pojazdy na tym samym torze się widzą wzajemnie
static int const ctrain_virtual = 0; //gdy pojazdy na tym samym torze się widzą wzajemnie
static int const ctrain_coupler = 1; //sprzeg fizyczny
static int const ctrain_pneumatic = 2; //przewody hamulcowe
static int const ctrain_controll = 4; //przewody sterujące (ukrotnienie)
static int const ctrain_power = 8; //przewody zasilające (WN)
static int const ctrain_passenger = 16; //mostek przejściowy
static int const ctrain_scndpneumatic = 32; //przewody 8 atm (żółte; zasilanie powietrzem)
static int const ctrain_controll = 4; //przewody sterujące (ukrotnienie)
static int const ctrain_power = 8; //przewody zasilające (WN)
static int const ctrain_passenger = 16; //mostek przejściowy
static int const ctrain_scndpneumatic = 32; //przewody 8 atm (żółte; zasilanie powietrzem)
static int const ctrain_heating = 64; //przewody ogrzewania WN
static int const ctrain_depot = 128; //nie rozłączalny podczas zwykłych manewrów (międzyczłonowy), we wpisie wartość ujemna
static int const ctrain_depot = 128; //nie rozłączalny podczas zwykłych manewrów (międzyczłonowy), we wpisie wartość ujemna
/*typ hamulca elektrodynamicznego*/
static int const dbrake_none = 0;
@@ -149,9 +149,9 @@ static int const dbrake_automatic = 8;
/*status czuwaka/SHP*/
//hunter-091012: rozdzielenie alarmow, dodanie testu czuwaka
static int const s_waiting = 1; //działa
static int const s_waiting = 1; //działa
static int const s_aware = 2; //czuwak miga
static int const s_active = 4; //SHP świeci
static int const s_active = 4; //SHP świeci
static int const s_CAalarm = 8; //buczy
static int const s_SHPalarm = 16; //buczy
static int const s_CAebrake = 32; //hamuje
@@ -170,20 +170,20 @@ static int const sound_brakeacc = 64;
static bool PhysicActivationFlag = false;
//szczególne typy pojazdów (inna obsługa) dla zmiennej TrainType
//zamienione na flagi bitowe, aby szybko wybierać grupę (np. EZT+SZT)
//szczególne typy pojazdów (inna obsługa) dla zmiennej TrainType
//zamienione na flagi bitowe, aby szybko wybierać grupę (np. EZT+SZT)
static int const dt_Default = 0;
static int const dt_EZT = 1;
static int const dt_ET41 = 2;
static int const dt_ET42 = 4;
static int const dt_PseudoDiesel = 8;
static int const dt_ET22 = 0x10; //używane od Megapacka
static int const dt_SN61 = 0x20; //nie używane w warunkach, ale ustawiane z CHK
static int const dt_ET22 = 0x10; //używane od Megapacka
static int const dt_SN61 = 0x20; //nie używane w warunkach, ale ustawiane z CHK
static int const dt_EP05 = 0x40;
static int const dt_ET40 = 0x80;
static int const dt_181 = 0x100;
//stałe dla asynchronów
//stałe dla asynchronów
static int const eimc_s_dfic = 0;
static int const eimc_s_dfmax = 1;
static int const eimc_s_p = 2;
@@ -206,7 +206,7 @@ static int const eimc_p_Imax = 20;
static int const eimc_p_abed = 21;
static int const eimc_p_eped = 22;
//zmienne dla asynchronów
//zmienne dla asynchronów
static int const eimv_FMAXMAX = 0;
static int const eimv_Fmax = 1;
static int const eimv_ks = 2;
@@ -234,10 +234,10 @@ static int const bom_PN = 2;
static int const bom_EP = 4;
static int const bom_MED = 8;
enum TProblem // lista problemów taboru, które uniemożliwiają jazdę
enum TProblem // lista problemów taboru, które uniemożliwiają jazdę
{ // flagi bitowe
pr_Hamuje = 1, // pojazd ma załączony hamulec lub zatarte osie
pr_Pantografy = 2, // pojazd wymaga napompowania pantografów
pr_Hamuje = 1, // pojazd ma załączony hamulec lub zatarte osie
pr_Pantografy = 2, // pojazd wymaga napompowania pantografów
pr_Ostatni = 0x80000000 // ostatnia flaga bitowa
};
@@ -373,21 +373,21 @@ struct TBoilerType {
};
/*rodzaj odbieraka pradu*/
struct TCurrentCollector {
long CollectorsNo; //musi być tu, bo inaczej się kopie
double MinH; double MaxH; //zakres ruchu pantografu, nigdzie nie używany
double CSW; //szerokość części roboczej (styku) ślizgacza
double MinV; double MaxV; //minimalne i maksymalne akceptowane napięcie
long CollectorsNo; //musi być tu, bo inaczej się kopie
double MinH; double MaxH; //zakres ruchu pantografu, nigdzie nie używany
double CSW; //szerokość części roboczej (styku) ślizgacza
double MinV; double MaxV; //minimalne i maksymalne akceptowane napięcie
double OVP; //czy jest przekaznik nadnapieciowy
double InsetV; //minimalne napięcie wymagane do załączenia
double MinPress; //minimalne ciśnienie do załączenia WS
double MaxPress; //maksymalne ciśnienie za reduktorem
double InsetV; //minimalne napięcie wymagane do załączenia
double MinPress; //minimalne ciśnienie do załączenia WS
double MaxPress; //maksymalne ciśnienie za reduktorem
//inline TCurrentCollector() {
// CollectorsNo = 0;
// MinH, MaxH, CSW, MinV, MaxV = 0.0;
// OVP, InsetV, MinPress, MaxPress = 0.0;
//}
};
/*typy źródeł mocy*/
/*typy źródeł mocy*/
enum TPowerSource { NotDefined, InternalSource, Transducer, Generator, Accumulator, CurrentCollector, PowerCable, Heater };
@@ -417,7 +417,7 @@ struct _mover__3
TBoilerType Boiler;
};
/*parametry źródeł mocy*/
/*parametry źródeł mocy*/
struct TPowerParameters
{
double MaxVoltage;
@@ -541,7 +541,7 @@ struct TSecuritySystem
{
int SystemType; /*0: brak, 1: czuwak aktywny, 2: SHP/sygnalizacja kabinowa*/
double AwareDelay; // czas powtarzania czuwaka
double AwareMinSpeed; // minimalna prędkość załączenia czuwaka, normalnie 10% Vmax
double AwareMinSpeed; // minimalna prędkość załączenia czuwaka, normalnie 10% Vmax
double SoundSignalDelay;
double EmergencyBrakeDelay;
int Status; /*0: wylaczony, 1: wlaczony, 2: czuwak, 4: shp, 8: alarm, 16: hamowanie awaryjne*/
@@ -581,20 +581,20 @@ struct TCoupling {
double DmaxC = 0.1;
double FmaxC = 1000.0;
TCouplerType CouplerType = NoCoupler; /*typ sprzegu*/
/*zmienne*/
/*zmienne*/
int CouplingFlag = 0; /*0 - wirtualnie, 1 - sprzegi, 2 - pneumatycznie, 4 - sterowanie, 8 - kabel mocy*/
int AllowedFlag = 3; //Ra: znaczenie jak wyżej, maska dostępnych // domyślnie hak i hamulec, inne trzeba włączyć jawnie w FIZ
int AllowedFlag = 3; //Ra: znaczenie jak wyżej, maska dostępnych
bool Render = false; /*ABu: czy rysowac jak zaczepiony sprzeg*/
double CoupleDist = 0.0; /*ABu: optymalizacja - liczenie odleglosci raz na klatkę, bez iteracji*/
double CoupleDist = 0.0; /*ABu: optymalizacja - liczenie odleglosci raz na klatkę, bez iteracji*/
class TMoverParameters *Connected = nullptr; /*co jest podlaczone*/
int ConnectedNr = 0; //Ra: od której strony podłączony do (Connected): 0=przód, 1=tył
int ConnectedNr = 0; //Ra: od której strony podłączony do (Connected): 0=przód, 1=tył
double CForce = 0.0; /*sila z jaka dzialal*/
double Dist = 0.0; /*strzalka ugiecia zderzaków*/
double Dist = 0.0; /*strzalka ugiecia zderzaków*/
bool CheckCollision = false; /*czy sprawdzac sile czy pedy*/
};
class TMoverParameters
{ // Ra: wrapper na kod pascalowy, przejmujący jego funkcje Q: 20160824 - juz nie wrapper a klasa bazowa :)
{ // Ra: wrapper na kod pascalowy, przejmujący jego funkcje Q: 20160824 - juz nie wrapper a klasa bazowa :)
public:
double dMoveLen;
@@ -605,7 +605,7 @@ public:
/*--sekcja stalych typowych parametrow*/
std::string TypeName; /*nazwa serii/typu*/
//TrainType: string; {typ: EZT/elektrowoz - Winger 040304}
int TrainType; /*Ra: powinno być szybciej niż string*/
int TrainType; /*Ra: powinno być szybciej niż string*/
TEngineTypes EngineType; /*typ napedu*/
TPowerParameters EnginePowerSource; /*zrodlo mocy dla silnikow*/
TPowerParameters SystemPowerSource; /*zrodlo mocy dla systemow sterowania/przetwornic/sprezarek*/
@@ -614,7 +614,7 @@ public:
TPowerParameters LightPowerSource; /*zrodlo mocy dla oswietlenia*/
TPowerParameters AlterLightPowerSource;/*alternatywne mocy dla oswietlenia*/
double Vmax; double Mass; double Power; /*max. predkosc kontrukcyjna, masa wlasna, moc*/
double Mred; /*Ra: zredukowane masy wirujące; potrzebne do obliczeń hamowania*/
double Mred; /*Ra: zredukowane masy wirujące; potrzebne do obliczeń hamowania*/
double TotalMass; /*wyliczane przez ComputeMass*/
double HeatingPower; double LightPower; /*moc pobierana na ogrzewanie/oswietlenie*/
double BatteryVoltage; /*Winger - baterie w elektrykach*/
@@ -626,7 +626,7 @@ public:
double NominalBatteryVoltage; /*Winger - baterie w elektrykach*/
TDimension Dim; /*wymiary*/
double Cx; /*wsp. op. aerodyn.*/
double Floor; //poziom podłogi dla ładunków
double Floor; //poziom podłogi dla ładunków
double WheelDiameter; /*srednica kol napednych*/
double WheelDiameterL; //Ra: srednica kol tocznych przednich
double WheelDiameterT; //Ra: srednica kol tocznych tylnych
@@ -655,7 +655,7 @@ public:
TLocalBrake LocalBrake; /*rodzaj hamulca indywidualnego*/
TBrakePressureTable BrakePressureTable; /*wyszczegolnienie cisnien w rurze*/
TBrakePressure BrakePressureActual; //wartości ważone dla aktualnej pozycji kranu
TBrakePressure BrakePressureActual; //wartości ważone dla aktualnej pozycji kranu
int ASBType; /*0: brak hamulca przeciwposlizgowego, 1: reczny, 2: automat*/
int TurboTest;
double MaxBrakeForce; /*maksymalna sila nacisku hamulca*/
@@ -666,7 +666,7 @@ public:
/*max. cisnienie w cyl. ham., stala proporcjonalnosci p-K*/
double HighPipePress; double LowPipePress; double DeltaPipePress;
/*max. i min. robocze cisnienie w przewodzie glownym oraz roznica miedzy nimi*/
double CntrlPipePress; //ciśnienie z zbiorniku sterującym
double CntrlPipePress; //ciśnienie z zbiorniku sterującym
double BrakeVolume; double BrakeVVolume; double VeselVolume;
/*pojemnosc powietrza w ukladzie hamulcowym, w ukladzie glownej sprezarki [m^3] */
int BrakeCylNo; /*ilosc cylindrow ham.*/
@@ -690,7 +690,7 @@ public:
int ScndCtrlPosNo;
int LightsPosNo; int LightsDefPos;
bool LightsWrap;
int Lights[2][17]; // pozycje świateł, przód - tył, 1 .. 16
int Lights[2][17]; // pozycje świateł, przód - tył, 1 .. 16
bool ScndInMain; /*zaleznosc bocznika od nastawnika*/
bool MBrake; /*Czy jest hamulec reczny*/
double StopBrakeDecc;
@@ -727,7 +727,7 @@ public:
double RVentCutOff; /*rezystancja wylaczania wentylatorow dla RVentType=2*/
int CompressorPower; /*0: bezp. z obwodow silnika, 1: z przetwornicy, reczne, 2: w przetwornicy, stale, 5: z silnikowego*/
int SmallCompressorPower; /*Winger ZROBIC*/
bool Trafo; /*pojazd wyposażony w transformator*/
bool Trafo; /*pojazd wyposażony w transformator*/
/*-sekcja parametrow dla lokomotywy spalinowej z przekladnia mechaniczna*/
double dizel_Mmax; double dizel_nMmax; double dizel_Mnmax; double dizel_nmax; double dizel_nominalfill;
@@ -773,7 +773,7 @@ public:
bool DoorClosureWarning; /*czy jest ostrzeganie przed zamknieciem*/
double DoorOpenSpeed; double DoorCloseSpeed; /*predkosc otwierania i zamykania w j.u. */
double DoorMaxShiftL; double DoorMaxShiftR; double DoorMaxPlugShift;/*szerokosc otwarcia lub kat*/
int DoorOpenMethod; /*sposob otwarcia - 1: przesuwne, 2: obrotowe, 3: trójelementowe*/
int DoorOpenMethod; /*sposob otwarcia - 1: przesuwne, 2: obrotowe, 3: trójelementowe*/
double PlatformSpeed; /*szybkosc stopnia*/
double PlatformMaxShift; /*wysuniecie stopnia*/
int PlatformOpenMethod; /*sposob animacji stopnia*/
@@ -781,7 +781,7 @@ public:
/*--sekcja zmiennych*/
/*--opis konkretnego egzemplarza taboru*/
TLocation Loc; //pozycja pojazdów do wyznaczenia odległości pomiędzy sprzęgami
TLocation Loc; //pozycja pojazdów do wyznaczenia odległości pomiędzy sprzęgami
TRotation Rot;
std::string Name; /*nazwa wlasna*/
TCoupling Couplers[2]; //urzadzenia zderzno-sprzegowe, polaczenia miedzy wagonami
@@ -790,9 +790,9 @@ public:
bool EventFlag; /*!o true jesli cos nietypowego sie wydarzy*/
int SoundFlag; /*!o patrz stale sound_ */
double DistCounter; /*! licznik kilometrow */
double V; //predkosc w [m/s] względem sprzęgów (dodania gdy jedzie w stronę 0)
double Vel; //moduł prędkości w [km/h], używany przez AI
double AccS; //efektywne przyspieszenie styczne w [m/s^2] (wszystkie siły)
double V; //predkosc w [m/s] względem sprzęgów (dodania gdy jedzie w stronę 0)
double Vel; //moduł prędkości w [km/h], używany przez AI
double AccS; //efektywne przyspieszenie styczne w [m/s^2] (wszystkie siły)
double AccN; //przyspieszenie normalne w [m/s^2]
double AccV;
double nrot;
@@ -801,8 +801,8 @@ public:
double dL; double Fb; double Ff; /*przesuniecie, sila hamowania i tarcia*/
double FTrain; double FStand; /*! sila pociagowa i oporow ruchu*/
double FTotal; /*! calkowita sila dzialajaca na pojazd*/
double UnitBrakeForce; /*!s siła hamowania przypadająca na jeden element*/
double Ntotal; /*!s siła nacisku klockow*/
double UnitBrakeForce; /*!s siła hamowania przypadająca na jeden element*/
double Ntotal; /*!s siła nacisku klockow*/
bool SlippingWheels; bool SandDose; /*! poslizg kol, sypanie piasku*/
double Sand; /*ilosc piasku*/
double BrakeSlippingTimer; /*pomocnicza zmienna do wylaczania przeciwposlizgu*/
@@ -851,8 +851,8 @@ public:
/*komenda przekazywana przez PutCommand*/
/*i wykonywana przez RunInternalCommand*/
std::string CommandOut; /*komenda przekazywana przez ExternalCommand*/
std::string CommandLast; //Ra: ostatnio wykonana komenda do podglądu
double ValueOut; /*argument komendy która ma byc przekazana na zewnatrz*/
std::string CommandLast; //Ra: ostatnio wykonana komenda do podglądu
double ValueOut; /*argument komendy która ma byc przekazana na zewnatrz*/
TTrackShape RunningShape;/*geometria toru po ktorym jedzie pojazd*/
TTrackParam RunningTrack;/*parametry toru po ktorym jedzie pojazd*/
@@ -864,10 +864,10 @@ public:
int ScndCtrlPos; /*polozenie dodatkowego nastawnika*/
int LightsPos;
int ActiveDir; //czy lok. jest wlaczona i w ktorym kierunku:
//względem wybranej kabiny: -1 - do tylu, +1 - do przodu, 0 - wylaczona
int CabNo; //numer kabiny, z której jest sterowanie: 1 lub -1; w przeciwnym razie brak sterowania - rozrzad
int DirAbsolute; //zadany kierunek jazdy względem sprzęgów (1=w strone 0,-1=w stronę 1)
int ActiveCab; //numer kabiny, w ktorej jest obsada (zwykle jedna na skład)
//względem wybranej kabiny: -1 - do tylu, +1 - do przodu, 0 - wylaczona
int CabNo; //numer kabiny, z której jest sterowanie: 1 lub -1; w przeciwnym razie brak sterowania - rozrzad
int DirAbsolute; //zadany kierunek jazdy względem sprzęgów (1=w strone 0,-1=w stronę 1)
int ActiveCab; //numer kabiny, w ktorej jest obsada (zwykle jedna na skład)
double LastSwitchingTime; /*czas ostatniego przelaczania czegos*/
//WarningSignal: byte; {0: nie trabi, 1,2: trabi}
bool DepartureSignal; /*sygnal odjazdu*/
@@ -876,14 +876,14 @@ public:
TTractionParam RunningTraction;/*parametry sieci trakcyjnej najblizej lokomotywy*/
double enrot; double Im; double Itot; double IHeating; double ITraction; double TotalCurrent; double Mm; double Mw; double Fw; double Ft;
/*ilosc obrotow, prad silnika i calkowity, momenty, sily napedne*/
//Ra: Im jest ujemny, jeśli lok jedzie w stronę sprzęgu 1
//a ujemne powinien być przy odwróconej polaryzacji sieci...
//w wielu miejscach jest używane abs(Im)
//Ra: Im jest ujemny, jeśli lok jedzie w stronę sprzęgu 1
//a ujemne powinien być przy odwróconej polaryzacji sieci...
//w wielu miejscach jest używane abs(Im)
int Imin; int Imax; /*prad przelaczania automatycznego rozruchu, prad bezpiecznika*/
double Voltage; /*aktualne napiecie sieci zasilajacej*/
int MainCtrlActualPos; /*wskaznik RList*/
int ScndCtrlActualPos; /*wskaznik MotorParam*/
bool DelayCtrlFlag; //czy czekanie na 1. pozycji na załączenie?
bool DelayCtrlFlag; //czy czekanie na 1. pozycji na załączenie?
double LastRelayTime; /*czas ostatniego przelaczania stycznikow*/
bool AutoRelayFlag; /*mozna zmieniac jesli AutoRelayType=2*/
bool FuseFlag; /*!o bezpiecznik nadmiarowy*/
@@ -918,8 +918,8 @@ public:
/*-dla wagonow*/
long Load; /*masa w T lub ilosc w sztukach - zaladowane*/
std::string LoadType; /*co jest zaladowane*/
int LoadStatus; //+1=trwa rozladunek,+2=trwa zaladunek,+4=zakończono,0=zaktualizowany model
double LastLoadChangeTime; //raz (roz)ładowania
int LoadStatus; //+1=trwa rozladunek,+2=trwa zaladunek,+4=zakończono,0=zaktualizowany model
double LastLoadChangeTime; //raz (roz)ładowania
bool DoorBlocked; //Czy jest blokada drzwi
bool DoorLeftOpened; //stan drzwi
@@ -946,20 +946,20 @@ public:
double FrictConst2d;
double TotalMassxg; /*TotalMass*g*/
vector3 vCoulpler[2]; // powtórzenie współrzędnych sprzęgów z DynObj :/
vector3 DimHalf; // połowy rozmiarów do obliczeń geometrycznych
// int WarningSignal; //0: nie trabi, 1,2: trabi syreną o podanym numerze
int WarningSignal; // tymczasowo 8bit, ze względu na funkcje w MTools
double fBrakeCtrlPos; // płynna nastawa hamulca zespolonego
bool bPantKurek3; // kurek trójdrogowy (pantografu): true=połączenie z ZG, false=połączenie z małą sprężarką
int iProblem; // flagi problemów z taborem, aby AI nie musiało porównywać; 0=może jechać
int iLights[2]; // bity zapalonych świateł tutaj, żeby dało się liczyć pobór prądu
vector3 vCoulpler[2]; // powtórzenie współrzędnych sprzęgów z DynObj :/
vector3 DimHalf; // połowy rozmiarów do obliczeń geometrycznych
// int WarningSignal; //0: nie trabi, 1,2: trabi syreną o podanym numerze
int WarningSignal; // tymczasowo 8bit, ze względu na funkcje w MTools
double fBrakeCtrlPos; // płynna nastawa hamulca zespolonego
bool bPantKurek3; // kurek trójdrogowy (pantografu): true=połączenie z ZG, false=połączenie z małą sprężarką
int iProblem; // flagi problemów z taborem, aby AI nie musiało porównywać; 0=może jechać
int iLights[2]; // bity zapalonych świateł tutaj, żeby dało się liczyć pobór prądu
private:
double CouplerDist(int Coupler);
public:
TMoverParameters(double VelInitial, std::string TypeNameInit, std::string NameInit, int LoadInitial, std::string LoadTypeInitial, int Cab);
// obsługa sprzęgów
// obsługa sprzęgów
double Distance(const TLocation &Loc1, const TLocation &Loc2, const TDimension &Dim1, const TDimension &Dim2);
/* double Distance(const vector3 &Loc1, const vector3 &Loc2, const vector3 &Dim1, const vector3 &Dim2);
*/ //bool AttachA(int ConnectNo, int ConnectToNr, TMoverParameters *ConnectTo, int CouplingType, bool Forced = false);
@@ -970,7 +970,7 @@ public:
bool DirectionForward();
void BrakeLevelSet(double b);
bool BrakeLevelAdd(double b);
bool IncBrakeLevel(); // wersja na użytek AI
bool IncBrakeLevel(); // wersja na użytek AI
bool DecBrakeLevel();
bool ChangeCab(int direction);
bool CurrentSwitch(int direction);