diff --git a/McZapkie/MOVER.h b/McZapkie/MOVER.h index 29e3f0b4..8d469041 100644 --- a/McZapkie/MOVER.h +++ b/McZapkie/MOVER.h @@ -1191,6 +1191,7 @@ public: int Lights[2][17]; // pozycje świateł, przód - tył, 1 .. 16 int ScndInMain{ 0 }; /*zaleznosc bocznika od nastawnika*/ bool MBrake = false; /*Czy jest hamulec reczny*/ + double maxTachoSpeed = 0.0; // maksymalna predkosc na tarczce predkosciomierza analogowego double StopBrakeDecc = 0.0; bool ReleaseParkingBySpringBrake { false }; bool ReleaseParkingBySpringBrakeWhenDoorIsOpen{ false }; diff --git a/McZapkie/Mover.cpp b/McZapkie/Mover.cpp index 886209a9..7d030eed 100644 --- a/McZapkie/Mover.cpp +++ b/McZapkie/Mover.cpp @@ -10540,6 +10540,10 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) { } // mbrake extract_value( MBrake, "ManualBrake", line, "" ); + + // maksymalna predkosc dostepna na tarczce predkosciomierza + extract_value(maxTachoSpeed, "MaxTachoSpeed", line, ""); + // dynamicbrake { std::map dynamicbrakes{ diff --git a/Train.cpp b/Train.cpp index 206a52d6..ff22d4c2 100644 --- a/Train.cpp +++ b/Train.cpp @@ -6913,7 +6913,13 @@ bool TTrain::Update( double const Deltatime ) // McZapkie: predkosc wyswietlana na tachometrze brana jest z obrotow kol auto const maxtacho { 3.0 }; - fTachoVelocity = static_cast( std::min( std::abs(11.31 * mvControlled->WheelDiameter * mvControlled->nrot), mvControlled->Vmax * 1.05) ); + + double maxSpeed = mvControlled->Vmax * 1.05; // zachowanie starej logiki jak nie ma definicji max tarczki + if (mvOccupied->maxTachoSpeed != 0) + { + maxSpeed = mvOccupied->maxTachoSpeed; + } + fTachoVelocity = static_cast(std::min(std::abs(11.31 * mvControlled->WheelDiameter * mvControlled->nrot), maxSpeed)); { // skacze osobna zmienna float ff = simulation::Time.data().wSecond; // skacze co sekunde - pol sekundy // pomiar, pol sekundy ustawienie