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

miscellaneous bug fixes.

This commit is contained in:
tmj-fstate
2017-02-10 22:17:12 +01:00
parent adeaa5fc79
commit 1b6339e482
14 changed files with 596 additions and 593 deletions

View File

@@ -28,7 +28,7 @@ http://mozilla.org/MPL/2.0/.
#include "McZapkie/MOVER.h" #include "McZapkie/MOVER.h"
#define LOGVELOCITY 0 #define LOGVELOCITY 0
#define LOGORDERS 0 #define LOGORDERS 1
#define LOGSTOPS 1 #define LOGSTOPS 1
#define LOGBACKSCAN 0 #define LOGBACKSCAN 0
#define LOGPRESS 0 #define LOGPRESS 0
@@ -2354,7 +2354,7 @@ bool TController::IncBrake()
*/ */
// dodane dla towarowego // dodane dla towarowego
if (mvOccupied->BrakeDelayFlag == bdelay_G ? if (mvOccupied->BrakeDelayFlag == bdelay_G ?
-AccDesired * 6.6 > Min0R(2, mvOccupied->BrakeCtrlPos) : -AccDesired * 6.6 > std::min(2, mvOccupied->BrakeCtrlPos) :
true) true)
{ {
OK = mvOccupied->IncBrakeLevel(); OK = mvOccupied->IncBrakeLevel();
@@ -3254,6 +3254,7 @@ bool TController::UpdateSituation(double dt)
{ // uruchamiać przynajmniej raz na sekundę { // uruchamiać przynajmniej raz na sekundę
if ((iDrivigFlags & movePrimary) == 0) if ((iDrivigFlags & movePrimary) == 0)
return true; // pasywny nic nie robi return true; // pasywny nic nie robi
double AbsAccS; double AbsAccS;
// double VelReduced; //o ile km/h może przekroczyć dozwoloną prędkość bez hamowania // double VelReduced; //o ile km/h może przekroczyć dozwoloną prędkość bez hamowania
bool UpdateOK = false; bool UpdateOK = false;
@@ -3593,8 +3594,7 @@ bool TController::UpdateSituation(double dt)
if ((mvControlling->MainCtrlPos > 0) || if ((mvControlling->MainCtrlPos > 0) ||
(mvOccupied->BrakeSystem == ElectroPneumatic)) // jeśli jazda (mvOccupied->BrakeSystem == ElectroPneumatic)) // jeśli jazda
{ {
// WriteLog("Odczepianie w kierunku WriteLog(mvOccupied->Name + " odczepianie w kierunku " + std::to_string(mvOccupied->DirAbsolute));
// "+AnsiString(mvOccupied->DirAbsolute));
TDynamicObject *p = TDynamicObject *p =
pVehicle; // pojazd do odczepienia, w (pVehicle) siedzi AI pVehicle; // pojazd do odczepienia, w (pVehicle) siedzi AI
int d; // numer sprzęgu, który sprawdzamy albo odczepiamy int d; // numer sprzęgu, który sprawdzamy albo odczepiamy
@@ -3629,14 +3629,14 @@ bool TController::UpdateSituation(double dt)
else if (!p->Dettach(d)) // zwraca maskę bitową połączenia; usuwa else if (!p->Dettach(d)) // zwraca maskę bitową połączenia; usuwa
// własność pojazdów // własność pojazdów
{ // tylko jeśli odepnie { // tylko jeśli odepnie
// WriteLog("Odczepiony od strony "); WriteLog( mvOccupied->Name + " odczepiony." );
iVehicleCount = -2; iVehicleCount = -2;
} // a jak nie, to dociskać dalej } // a jak nie, to dociskać dalej
} }
if (iVehicleCount >= 0) // zmieni się po odczepieniu if (iVehicleCount >= 0) // zmieni się po odczepieniu
if (!mvOccupied->DecLocalBrakeLevel(1)) if (!mvOccupied->DecLocalBrakeLevel(1))
{ // dociśnij sklad { // dociśnij sklad
// WriteLog("Dociskanie"); WriteLog( mvOccupied->Name + " dociskanie..." );
// mvOccupied->BrakeReleaser(); //wyluzuj lokomotywę // mvOccupied->BrakeReleaser(); //wyluzuj lokomotywę
// Ready=true; //zamiast sprawdzenia odhamowania całego składu // Ready=true; //zamiast sprawdzenia odhamowania całego składu
IncSpeed(); // dla (Ready)==false nie ruszy IncSpeed(); // dla (Ready)==false nie ruszy
@@ -3665,7 +3665,7 @@ bool TController::UpdateSituation(double dt)
mvOccupied->BrakeLevelSet(0); // wyłączenie EP, gdy wystarczy (może mvOccupied->BrakeLevelSet(0); // wyłączenie EP, gdy wystarczy (może
// nie być potrzebne, bo na początku // nie być potrzebne, bo na początku
// jest) // jest)
// WriteLog("Luzowanie lokomotywy i zmiana kierunku"); WriteLog("Luzowanie lokomotywy i zmiana kierunku");
mvOccupied->BrakeReleaser(1); // wyluzuj lokomotywę; a ST45? mvOccupied->BrakeReleaser(1); // wyluzuj lokomotywę; a ST45?
mvOccupied->DecLocalBrakeLevel(10); // zwolnienie hamulca mvOccupied->DecLocalBrakeLevel(10); // zwolnienie hamulca
iDrivigFlags |= movePress; // następnie będzie dociskanie iDrivigFlags |= movePress; // następnie będzie dociskanie
@@ -3683,7 +3683,7 @@ bool TController::UpdateSituation(double dt)
SetVelocity(0, 0, stopJoin); // wyłączyć przyspieszanie SetVelocity(0, 0, stopJoin); // wyłączyć przyspieszanie
if (!DecSpeed()) // jeśli już bardziej wyłączyć się nie da if (!DecSpeed()) // jeśli już bardziej wyłączyć się nie da
{ // ponowna zmiana kierunku { // ponowna zmiana kierunku
// WriteLog("Ponowna zmiana kierunku"); WriteLog( mvOccupied->Name + " ponowna zmiana kierunku" );
DirectionForward(mvOccupied->ActiveDir < DirectionForward(mvOccupied->ActiveDir <
0); // zmiana kierunku jazdy na właściwy 0); // zmiana kierunku jazdy na właściwy
iDrivigFlags &= ~movePress; // koniec dociskania iDrivigFlags &= ~movePress; // koniec dociskania
@@ -3752,6 +3752,7 @@ bool TController::UpdateSituation(double dt)
fVelPlus = 2.0; // dopuszczalne przekroczenie prędkości na ograniczeniu bez hamowania fVelPlus = 2.0; // dopuszczalne przekroczenie prędkości na ograniczeniu bez hamowania
fVelMinus = 5.0; // margines prędkości powodujący załączenie napędu fVelMinus = 5.0; // margines prędkości powodujący załączenie napędu
} // switch } // switch
switch (OrderList[OrderPos]) switch (OrderList[OrderPos])
{ // co robi maszynista { // co robi maszynista
case Prepare_engine: // odpala silnik case Prepare_engine: // odpala silnik
@@ -3771,7 +3772,7 @@ bool TController::UpdateSituation(double dt)
} }
break; break;
case Release_engine: case Release_engine:
if (ReleaseEngine()) // zdana maszyna? if( ReleaseEngine() ) // zdana maszyna?
JumpToNextOrder(); JumpToNextOrder();
break; break;
case Jump_to_first_order: case Jump_to_first_order:
@@ -5273,12 +5274,9 @@ void TController::TakeControl(bool yes)
// gdy zgaszone światła, flaga podjeżdżania pod semafory pozostaje bez zmiany // gdy zgaszone światła, flaga podjeżdżania pod semafory pozostaje bez zmiany
// conditional below disabled to get around the situation where the AI train does nothing ever // conditional below disabled to get around the situation where the AI train does nothing ever
// because it is waiting for orders which don't come until the engine is engaged, i.e. effectively never // because it is waiting for orders which don't come until the engine is engaged, i.e. effectively never
/*
if (OrderCurrentGet()) // jeśli coś robi if (OrderCurrentGet()) // jeśli coś robi
*/ PrepareEngine(); // niech sprawdzi stan silnika PrepareEngine(); // niech sprawdzi stan silnika
/*
else // jeśli nic nie robi else // jeśli nic nie robi
*/
if (pVehicle->iLights[mvOccupied->CabNo < 0 ? 1 : 0] & if (pVehicle->iLights[mvOccupied->CabNo < 0 ? 1 : 0] &
21) // któreś ze świateł zapalone? 21) // któreś ze świateł zapalone?
{ // od wersji 357 oczekujemy podania komend dla AI przez scenerię { // od wersji 357 oczekujemy podania komend dla AI przez scenerię

View File

@@ -66,8 +66,8 @@ bool TEventLauncher::Load(cParser *parser)
*parser >> token; *parser >> token;
if (token != "none") if (token != "none")
{ {
if (token.length() == 1) if (token.size() == 1)
iKey = VkKeyScan(token[1]); // jeden znak jest konwertowany na kod klawisza iKey = VkKeyScan(token[0]); // jeden znak jest konwertowany na kod klawisza
else else
iKey = stol_def(token,0); // a jak więcej, to jakby numer klawisza jest iKey = stol_def(token,0); // a jak więcej, to jakby numer klawisza jest
} }

View File

@@ -2653,26 +2653,29 @@ bool TGround::Init(std::string asFile, HDC hDC)
TEvent *found = FindEvent(tmp->asName); TEvent *found = FindEvent(tmp->asName);
if (found) if (found)
{ // jeśli znaleziony duplikat { // jeśli znaleziony duplikat
int i = tmp->asName.length(); auto const size = tmp->asName.size();
if (tmp->asName[1] == '#') // zawsze jeden znak co najmniej jest if( tmp->asName[0] == '#' ) // zawsze jeden znak co najmniej jest
{ {
delete tmp; delete tmp;
tmp = NULL; tmp = nullptr;
} // utylizacja duplikatu z krzyżykiem } // utylizacja duplikatu z krzyżykiem
else if (i > 8 ? tmp->asName.substr(0, 9) == "lineinfo:" : else if( ( size > 8 )
false) // tymczasowo wyjątki && ( tmp->asName.substr( 0, 9 ) == "lineinfo:" ))
// tymczasowo wyjątki
{ {
delete tmp; delete tmp;
tmp = NULL; tmp = nullptr;
} // tymczasowa utylizacja duplikatów W5 } // tymczasowa utylizacja duplikatów W5
else if (i > 8 ? tmp->asName.substr(i - 7, 8) == "_warning" : else if( ( size > 8 )
false) // tymczasowo wyjątki && ( tmp->asName.substr( size - 8 ) == "_warning"))
// tymczasowo wyjątki
{ {
delete tmp; delete tmp;
tmp = NULL; tmp = nullptr;
} // tymczasowa utylizacja duplikatu z trąbieniem } // tymczasowa utylizacja duplikatu z trąbieniem
else if (i > 4 ? tmp->asName.substr(i - 3, 4) == "_shp" : else if( ( size > 4 )
false) // nie podlegają logowaniu && ( tmp->asName.substr( size - 4 ) == "_shp" ))
// nie podlegają logowaniu
{ {
delete tmp; delete tmp;
tmp = NULL; tmp = NULL;
@@ -2690,7 +2693,7 @@ bool TGround::Init(std::string asFile, HDC hDC)
// zaśmiecać drzewka // zaśmiecać drzewka
} }
} }
if (tmp) if ( nullptr != tmp )
{ // jeśli nie duplikat { // jeśli nie duplikat
tmp->evNext2 = RootEvent; // lista wszystkich eventów (m.in. do InitEvents) tmp->evNext2 = RootEvent; // lista wszystkich eventów (m.in. do InitEvents)
RootEvent = tmp; RootEvent = tmp;

View File

@@ -1150,7 +1150,8 @@ private:
extern double Distance(TLocation Loc1, TLocation Loc2, TDimension Dim1, TDimension Dim2); extern double Distance(TLocation Loc1, TLocation Loc2, TDimension Dim1, TDimension Dim2);
template <typename _Type> template <typename _Type>
bool getkeyval( _Type &Variable, std::string const &Key, std::string const &Input, std::string const &Default ) { bool
extract_value( _Type &Variable, std::string const &Key, std::string const &Input, std::string const &Default ) {
auto value = extract_value( Key, Input ); auto value = extract_value( Key, Input );
if( false == value.empty() ) { if( false == value.empty() ) {

View File

@@ -2737,7 +2737,7 @@ bool TMoverParameters::BrakeDelaySwitch(int BDS)
{ {
BrakeDelayFlag = BDS; BrakeDelayFlag = BDS;
rBDS = true; rBDS = true;
BrakeStatus = (BrakeStatus & 191); BrakeStatus &= 191;
// kopowanie nastawy hamulca do kolejnego czlonu - do przemyślenia // kopowanie nastawy hamulca do kolejnego czlonu - do przemyślenia
if (CabNo != 0) if (CabNo != 0)
SendCtrlToNext("BrakeDelay", BrakeDelayFlag, CabNo); SendCtrlToNext("BrakeDelay", BrakeDelayFlag, CabNo);
@@ -3350,8 +3350,10 @@ void TMoverParameters::ComputeTotalForce(double dt, double dt1, bool FullVer)
Vel = abs(V) * 3.6; // prędkość w km/h Vel = abs(V) * 3.6; // prędkość w km/h
nrot = v2n(); // przeliczenie prędkości liniowej na obrotową nrot = v2n(); // przeliczenie prędkości liniowej na obrotową
if (TestFlag(BrakeMethod, bp_MHS) && (PipePress < 3.0) && (Vel > 45) && if( (true == TestFlag(BrakeMethod, bp_MHS))
TestFlag(BrakeDelayFlag, bdelay_M)) // ustawione na sztywno na 3 bar && (PipePress < 3.0)
&& (Vel > 45)
&& (true == TestFlag(BrakeDelayFlag, bdelay_M))) // ustawione na sztywno na 3 bar
FStand += TrackBrakeForce; // doliczenie hamowania hamulcem szynowym FStand += TrackBrakeForce; // doliczenie hamowania hamulcem szynowym
// w charakterystykach jest wartość siły hamowania zamiast nacisku // w charakterystykach jest wartość siły hamowania zamiast nacisku
// if(FullVer=true) then // if(FullVer=true) then
@@ -3496,7 +3498,7 @@ double TMoverParameters::BrakeForce(const TTrackParam &Track)
{ {
if (Ntotal > 0) // nie luz if (Ntotal > 0) // nie luz
K += Ntotal; // w kN K += Ntotal; // w kN
K *= BrakeCylNo / (NBrakeAxles * NBpA); // w kN na os K *= static_cast<double>(BrakeCylNo) / (NBrakeAxles * static_cast<double>(NBpA)); // w kN na os
} }
if ((BrakeSystem == Pneumatic) || (BrakeSystem == ElectroPneumatic)) if ((BrakeSystem == Pneumatic) || (BrakeSystem == ElectroPneumatic))
{ {
@@ -6197,13 +6199,13 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
void TMoverParameters::LoadFIZ_Param( std::string const &line ) { void TMoverParameters::LoadFIZ_Param( std::string const &line ) {
getkeyval( Mass, "M", line, "0" ); extract_value( Mass, "M", line, "0" );
getkeyval( Mred, "Mred", line, "0" ); extract_value( Mred, "Mred", line, "0" );
getkeyval( Vmax, "Vmax", line, "0" ); extract_value( Vmax, "Vmax", line, "0" );
getkeyval( Power, "PWR", line, "0" ); extract_value( Power, "PWR", line, "0" );
getkeyval( SandCapacity, "SandCap", line, "0" ); extract_value( SandCapacity, "SandCap", line, "0" );
getkeyval( HeatingPower, "HeatingP", line, "0" ); extract_value( HeatingPower, "HeatingP", line, "0" );
getkeyval( LightPower, "LightP", line, "0" ); extract_value( LightPower, "LightP", line, "0" );
{ {
std::map<std::string, int> categories{ std::map<std::string, int> categories{
@@ -6213,7 +6215,7 @@ void TMoverParameters::LoadFIZ_Param( std::string const &line ) {
{ "ship", 4 }, { "ship", 4 },
{ "airplane,", 8 } { "airplane,", 8 }
}; };
std::string category; getkeyval( category, "Category", line, "none" ); std::string category; extract_value( category, "Category", line, "none" );
auto lookup = categories.find( category ); auto lookup = categories.find( category );
CategoryFlag = ( CategoryFlag = (
lookup != categories.end() ? lookup != categories.end() ?
@@ -6237,7 +6239,7 @@ void TMoverParameters::LoadFIZ_Param( std::string const &line ) {
{ "181", dt_181 }, { "181", dt_181 },
{ "182", dt_181 } // na razie tak { "182", dt_181 } // na razie tak
}; };
std::string type; getkeyval( type, "Type", line, "none" ); std::string type; extract_value( type, "Type", line, "none" );
auto lookup = types.find( ToLower( type ) ); auto lookup = types.find( ToLower( type ) );
TrainType = ( TrainType = (
lookup != types.end() ? lookup != types.end() ?
@@ -6255,24 +6257,25 @@ void TMoverParameters::LoadFIZ_Param( std::string const &line ) {
void TMoverParameters::LoadFIZ_Load( std::string const &line ) { void TMoverParameters::LoadFIZ_Load( std::string const &line ) {
getkeyval( LoadAccepted, "LoadAccepted", line, "" ); extract_value( LoadAccepted, "LoadAccepted", line, "" );
if( true == LoadAccepted.empty() ) { if( true == LoadAccepted.empty() ) {
return; return;
} }
LoadAccepted = ToLower( LoadAccepted );
getkeyval( MaxLoad, "MaxLoad", line, "" ); extract_value( MaxLoad, "MaxLoad", line, "" );
getkeyval( LoadQuantity, "LoadQ", line, "" ); extract_value( LoadQuantity, "LoadQ", line, "" );
getkeyval( OverLoadFactor, "OverLoadFactor", line, "" ); extract_value( OverLoadFactor, "OverLoadFactor", line, "" );
getkeyval( LoadSpeed, "LoadSpeed", line, "" ); extract_value( LoadSpeed, "LoadSpeed", line, "" );
getkeyval( UnLoadSpeed, "UnLoadSpeed", line, "" ); extract_value( UnLoadSpeed, "UnLoadSpeed", line, "" );
} }
void TMoverParameters::LoadFIZ_Dimensions( std::string const &line ) { void TMoverParameters::LoadFIZ_Dimensions( std::string const &line ) {
getkeyval( Dim.L, "L", line, "" ); extract_value( Dim.L, "L", line, "" );
getkeyval( Dim.H, "H", line, "" ); extract_value( Dim.H, "H", line, "" );
getkeyval( Dim.W, "W", line, "" ); extract_value( Dim.W, "W", line, "" );
getkeyval( Cx, "Cx", line, "0.3" ); extract_value( Cx, "Cx", line, "0.3" );
if( Dim.H <= 2.0 ) { if( Dim.H <= 2.0 ) {
//gdyby nie było parametru, lepsze to niż zero //gdyby nie było parametru, lepsze to niż zero
Floor = Dim.H; Floor = Dim.H;
@@ -6281,22 +6284,22 @@ void TMoverParameters::LoadFIZ_Dimensions( std::string const &line ) {
//zgodność wsteczna //zgodność wsteczna
Floor = 0.0; Floor = 0.0;
} }
getkeyval( Floor, "Floor", line, "" ); extract_value( Floor, "Floor", line, "" );
} }
void TMoverParameters::LoadFIZ_Wheels( std::string const &line ) { void TMoverParameters::LoadFIZ_Wheels( std::string const &line ) {
getkeyval( WheelDiameter, "D", line, "" ); extract_value( WheelDiameter, "D", line, "" );
WheelDiameterL = WheelDiameter; //gdyby nie było parametru, lepsze to niż zero WheelDiameterL = WheelDiameter; //gdyby nie było parametru, lepsze to niż zero
getkeyval( WheelDiameterL, "Dl", line, "" ); extract_value( WheelDiameterL, "Dl", line, "" );
WheelDiameterT = WheelDiameter; //gdyby nie było parametru, lepsze to niż zero WheelDiameterT = WheelDiameter; //gdyby nie było parametru, lepsze to niż zero
getkeyval( WheelDiameterT, "Dt", line, "" ); extract_value( WheelDiameterT, "Dt", line, "" );
getkeyval( TrackW, "Tw", line, "" ); extract_value( TrackW, "Tw", line, "" );
getkeyval( AxleInertialMoment, "AIM", line, "" ); extract_value( AxleInertialMoment, "AIM", line, "" );
if( AxleInertialMoment <= 0.0 ) { AxleInertialMoment = 1.0; } if( AxleInertialMoment <= 0.0 ) { AxleInertialMoment = 1.0; }
getkeyval( AxleArangement, "Axle", line, "" ); extract_value( AxleArangement, "Axle", line, "" );
NPoweredAxles = s2NPW( AxleArangement ); NPoweredAxles = s2NPW( AxleArangement );
NAxles = NPoweredAxles + s2NNW( AxleArangement ); NAxles = NPoweredAxles + s2NNW( AxleArangement );
@@ -6305,8 +6308,8 @@ void TMoverParameters::LoadFIZ_Wheels( std::string const &line ) {
1 : 1 :
0; 0;
getkeyval( ADist, "Ad", line, "" ); extract_value( ADist, "Ad", line, "" );
getkeyval( BDist, "Bd", line, "" ); extract_value( BDist, "Bd", line, "" );
} }
void TMoverParameters::LoadFIZ_Brake( std::string const &line ) { void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
@@ -6314,33 +6317,33 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
BrakeValveDecode( extract_value( "BrakeValve", line ) ); BrakeValveDecode( extract_value( "BrakeValve", line ) );
BrakeSubsystemDecode(); BrakeSubsystemDecode();
getkeyval( NBpA, "NBpA", line, "" ); extract_value( NBpA, "NBpA", line, "" );
getkeyval( MaxBrakeForce, "MBF", line, "" ); extract_value( MaxBrakeForce, "MBF", line, "" );
getkeyval( BrakeValveSize, "Size", line, "" ); extract_value( BrakeValveSize, "Size", line, "" );
getkeyval( TrackBrakeForce, "TBF", line, "" ); TrackBrakeForce *= 1000.0; extract_value( TrackBrakeForce, "TBF", line, "" ); TrackBrakeForce *= 1000.0;
getkeyval( MaxBrakePress[ 3 ], "MaxBP", line, "" ); extract_value( MaxBrakePress[ 3 ], "MaxBP", line, "" );
if( MaxBrakePress[ 3 ] > 0.0 ) { if( MaxBrakePress[ 3 ] > 0.0 ) {
getkeyval( BrakeCylNo, "BCN", line, "" ); extract_value( BrakeCylNo, "BCN", line, "" );
if( BrakeCylNo > 0 ) { if( BrakeCylNo > 0 ) {
getkeyval( MaxBrakePress[ 0 ], "MaxLBP", line, "" ); extract_value( MaxBrakePress[ 0 ], "MaxLBP", line, "" );
if( MaxBrakePress[ 0 ] < 0.01 ) { MaxBrakePress[ 0 ] = MaxBrakePress[ 3 ]; } if( MaxBrakePress[ 0 ] < 0.01 ) { MaxBrakePress[ 0 ] = MaxBrakePress[ 3 ]; }
getkeyval( MaxBrakePress[ 1 ], "TareMaxBP", line, "" ); extract_value( MaxBrakePress[ 1 ], "TareMaxBP", line, "" );
getkeyval( MaxBrakePress[ 2 ], "MedMaxBP", line, "" ); extract_value( MaxBrakePress[ 2 ], "MedMaxBP", line, "" );
getkeyval( MaxBrakePress[ 4 ], "MaxASBP", line, "" ); extract_value( MaxBrakePress[ 4 ], "MaxASBP", line, "" );
if( MaxBrakePress[ 4 ] < 0.01 ) { MaxBrakePress[ 4 ] = 0.0; } if( MaxBrakePress[ 4 ] < 0.01 ) { MaxBrakePress[ 4 ] = 0.0; }
getkeyval( BrakeCylRadius, "BCR", line, "" ); extract_value( BrakeCylRadius, "BCR", line, "" );
getkeyval( BrakeCylDist, "BCD", line, "" ); extract_value( BrakeCylDist, "BCD", line, "" );
getkeyval( BrakeCylSpring, "BCS", line, "" ); extract_value( BrakeCylSpring, "BCS", line, "" );
getkeyval( BrakeSlckAdj, "BSA", line, "" ); extract_value( BrakeSlckAdj, "BSA", line, "" );
getkeyval( BrakeRigEff, "BRE", line, "1" ); extract_value( BrakeRigEff, "BRE", line, "1" );
getkeyval( BrakeCylMult[ 0 ], "BCM", line, "" ); extract_value( BrakeCylMult[ 0 ], "BCM", line, "" );
getkeyval( BrakeCylMult[ 1 ], "BCMlo", line, "" ); extract_value( BrakeCylMult[ 1 ], "BCMlo", line, "" );
getkeyval( BrakeCylMult[ 2 ], "BCMHi", line, "" ); extract_value( BrakeCylMult[ 2 ], "BCMHi", line, "" );
P2FTrans = 100 * M_PI * std::pow( BrakeCylRadius, 2 ); // w kN/bar P2FTrans = 100 * M_PI * std::pow( BrakeCylRadius, 2 ); // w kN/bar
@@ -6348,7 +6351,7 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
else { LoadFlag = 0; } else { LoadFlag = 0; }
BrakeVolume = M_PI * std::pow( BrakeCylRadius, 2 ) * BrakeCylDist * BrakeCylNo; BrakeVolume = M_PI * std::pow( BrakeCylRadius, 2 ) * BrakeCylDist * BrakeCylNo;
getkeyval( BrakeVVolume, "BVV", line, "" ); extract_value( BrakeVVolume, "BVV", line, "" );
{ {
std::map<std::string, int> brakemethods{ std::map<std::string, int> brakemethods{
@@ -6370,7 +6373,7 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
0; 0;
} }
getkeyval( RapidMult, "RM", line, "1" ); extract_value( RapidMult, "RM", line, "1" );
} }
} }
else { else {
@@ -6379,18 +6382,18 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
} }
CntrlPipePress = 5 + 0.001 * ( Random( 10 ) - Random( 10 ) ); //Ra 2014-07: trochę niedokładności CntrlPipePress = 5 + 0.001 * ( Random( 10 ) - Random( 10 ) ); //Ra 2014-07: trochę niedokładności
getkeyval( CntrlPipePress, "HiPP", line, "" ); extract_value( CntrlPipePress, "HiPP", line, "" );
HighPipePress = CntrlPipePress; HighPipePress = CntrlPipePress;
LowPipePress = std::min( HighPipePress, 3.5 ); LowPipePress = std::min( HighPipePress, 3.5 );
getkeyval( LowPipePress, "LoPP", line, "" ); extract_value( LowPipePress, "LoPP", line, "" );
DeltaPipePress = HighPipePress - LowPipePress; DeltaPipePress = HighPipePress - LowPipePress;
getkeyval( VeselVolume, "Vv", line, "" ); extract_value( VeselVolume, "Vv", line, "" );
if( VeselVolume == 0.0 ) { VeselVolume = 0.01; } if( VeselVolume == 0.0 ) { VeselVolume = 0.01; }
getkeyval( MinCompressor, "MinCP", line, "" ); extract_value( MinCompressor, "MinCP", line, "" );
getkeyval( MaxCompressor, "MaxCP", line, "" ); extract_value( MaxCompressor, "MaxCP", line, "" );
getkeyval( CompressorSpeed, "CompressorSpeed", line, "" ); extract_value( CompressorSpeed, "CompressorSpeed", line, "" );
{ {
std::map<std::string, int> compressorpowers{ std::map<std::string, int> compressorpowers{
{ "Converter", 2 }, { "Converter", 2 },
@@ -6410,39 +6413,39 @@ void TMoverParameters::LoadFIZ_Brake( std::string const &line ) {
void TMoverParameters::LoadFIZ_Doors( std::string const &line ) { void TMoverParameters::LoadFIZ_Doors( std::string const &line ) {
DoorOpenCtrl = 0; DoorOpenCtrl = 0;
std::string openctrl; getkeyval( openctrl, "OpenCtrl", line, "" ); std::string openctrl; extract_value( openctrl, "OpenCtrl", line, "" );
if( openctrl == "DriverCtrl" ) { DoorOpenCtrl = 1; } if( openctrl == "DriverCtrl" ) { DoorOpenCtrl = 1; }
DoorCloseCtrl = 0; DoorCloseCtrl = 0;
std::string closectrl; getkeyval( closectrl, "CloseCtrl", line, "" ); std::string closectrl; extract_value( closectrl, "CloseCtrl", line, "" );
if( closectrl == "DriverCtrl" ) { DoorCloseCtrl = 1; } if( closectrl == "DriverCtrl" ) { DoorCloseCtrl = 1; }
else if( closectrl == "AutomaticCtrl" ) { DoorCloseCtrl = 2; } else if( closectrl == "AutomaticCtrl" ) { DoorCloseCtrl = 2; }
if( DoorCloseCtrl == 2 ) { getkeyval( DoorStayOpen, "DoorStayOpen", line, "" ); } if( DoorCloseCtrl == 2 ) { extract_value( DoorStayOpen, "DoorStayOpen", line, "" ); }
getkeyval( DoorOpenSpeed, "OpenSpeed", line, "" ); extract_value( DoorOpenSpeed, "OpenSpeed", line, "" );
getkeyval( DoorCloseSpeed, "CloseSpeed", line, "" ); extract_value( DoorCloseSpeed, "CloseSpeed", line, "" );
getkeyval( DoorMaxShiftL, "DoorMaxShiftL", line, "" ); extract_value( DoorMaxShiftL, "DoorMaxShiftL", line, "" );
getkeyval( DoorMaxShiftR, "DoorMaxShiftR", line, "" ); extract_value( DoorMaxShiftR, "DoorMaxShiftR", line, "" );
DoorOpenMethod = 2; //obrót, default DoorOpenMethod = 2; //obrót, default
std::string openmethod; getkeyval( openmethod, "DoorOpenMethod", line, "" ); std::string openmethod; extract_value( openmethod, "DoorOpenMethod", line, "" );
if( openmethod == "Shift" ) { DoorOpenMethod = 1; } //przesuw if( openmethod == "Shift" ) { DoorOpenMethod = 1; } //przesuw
else if( openmethod == "Fold" ) { DoorOpenMethod = 3; } //3 submodele się obracają else if( openmethod == "Fold" ) { DoorOpenMethod = 3; } //3 submodele się obracają
else if( openmethod == "Plug" ) { DoorOpenMethod = 4; } //odskokowo-przesuwne else if( openmethod == "Plug" ) { DoorOpenMethod = 4; } //odskokowo-przesuwne
std::string closurewarning; getkeyval( closurewarning, "DoorClosureWarning", line, "" ); std::string closurewarning; extract_value( closurewarning, "DoorClosureWarning", line, "" );
DoorClosureWarning = ( closurewarning == "Yes" ); DoorClosureWarning = ( closurewarning == "Yes" );
std::string doorblocked; getkeyval( doorblocked, "DoorBlocked", line, "" ); std::string doorblocked; extract_value( doorblocked, "DoorBlocked", line, "" );
DoorBlocked = ( doorblocked == "Yes" ); DoorBlocked = ( doorblocked == "Yes" );
getkeyval( DoorMaxPlugShift, "DoorMaxShiftPlug", line, "" ); extract_value( DoorMaxPlugShift, "DoorMaxShiftPlug", line, "" );
getkeyval( PlatformSpeed, "PlatformSpeed", line, "" ); extract_value( PlatformSpeed, "PlatformSpeed", line, "" );
getkeyval( PlatformMaxShift, "PlatformMaxSpeed", line, "" ); extract_value( PlatformMaxShift, "PlatformMaxSpeed", line, "" );
PlatformOpenMethod = 2; // obrót, default PlatformOpenMethod = 2; // obrót, default
std::string platformopenmethod; getkeyval( platformopenmethod, "PlatformOpenMethod", line, "" ); std::string platformopenmethod; extract_value( platformopenmethod, "PlatformOpenMethod", line, "" );
if( platformopenmethod == "Shift" ) { PlatformOpenMethod = 1; } // przesuw if( platformopenmethod == "Shift" ) { PlatformOpenMethod = 1; } // przesuw
} }
@@ -6465,14 +6468,14 @@ void TMoverParameters::LoadFIZ_BuffCoupl( std::string const &line, int const Ind
lookup->second : lookup->second :
NoCoupler ); NoCoupler );
getkeyval( coupler->SpringKC, "kC", line, "" ); extract_value( coupler->SpringKC, "kC", line, "" );
getkeyval( coupler->DmaxC, "DmaxC", line, "" ); extract_value( coupler->DmaxC, "DmaxC", line, "" );
getkeyval( coupler->FmaxC, "FmaxC", line, "" ); extract_value( coupler->FmaxC, "FmaxC", line, "" );
getkeyval( coupler->SpringKB, "kB", line, "" ); extract_value( coupler->SpringKB, "kB", line, "" );
getkeyval( coupler->DmaxB, "DmaxB", line, "" ); extract_value( coupler->DmaxB, "DmaxB", line, "" );
getkeyval( coupler->FmaxB, "FmaxB", line, "" ); extract_value( coupler->FmaxB, "FmaxB", line, "" );
getkeyval( coupler->beta, "beta", line, "" ); extract_value( coupler->beta, "beta", line, "" );
getkeyval( coupler->AllowedFlag, "AllowedFlag", line, "" ); extract_value( coupler->AllowedFlag, "AllowedFlag", line, "" );
if( coupler->AllowedFlag < 0 ) { if( coupler->AllowedFlag < 0 ) {
@@ -6517,7 +6520,7 @@ void TMoverParameters::LoadFIZ_BuffCoupl( std::string const &line, int const Ind
void TMoverParameters::LoadFIZ_TurboPos( std::string const &Input ) { void TMoverParameters::LoadFIZ_TurboPos( std::string const &Input ) {
getkeyval( TurboTest, "TurboPos", Input, "" ); extract_value( TurboTest, "TurboPos", Input, "" );
} }
void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) { void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
@@ -6535,10 +6538,10 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
} }
if( BrakeSystem != Individual ) { if( BrakeSystem != Individual ) {
getkeyval( BrakeCtrlPosNo, "BCPN", line, "" ); extract_value( BrakeCtrlPosNo, "BCPN", line, "" );
for( int idx = 0; idx < 4; ++idx ) { for( int idx = 0; idx < 4; ++idx ) {
getkeyval( BrakeDelay[ idx ], "BDelay" + std::to_string( idx + 1 ), line, "" ); extract_value( BrakeDelay[ idx ], "BDelay" + std::to_string( idx + 1 ), line, "" );
} }
// brakedelays, brakedelayflag // brakedelays, brakedelayflag
{ {
@@ -6558,7 +6561,7 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
{ "G", bdelay_G } { "G", bdelay_G }
}; };
std::string brakedelay; std::string brakedelay;
getkeyval( brakedelay, "BrakeDelays", line, "" ); extract_value( brakedelay, "BrakeDelays", line, "" );
auto lookup = brakedelays.find( brakedelay ); auto lookup = brakedelays.find( brakedelay );
BrakeDelays = BrakeDelays =
lookup != brakedelays.end() ? lookup != brakedelays.end() ?
@@ -6573,7 +6576,7 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
// brakeopmode // brakeopmode
{ {
std::map<std::string, int> brakeopmodes{ std::map<std::string, int> brakeopmodes{
{ "PM", bom_PS + bom_PN }, { "PN", bom_PS + bom_PN },
{ "PNEPMED", bom_PS + bom_PN + bom_EP + bom_MED } { "PNEPMED", bom_PS + bom_PN + bom_EP + bom_MED }
}; };
auto lookup = brakeopmodes.find( extract_value( "BrakeOpModes", line ) ); auto lookup = brakeopmodes.find( extract_value( "BrakeOpModes", line ) );
@@ -6616,12 +6619,12 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
} }
// mbpm // mbpm
getkeyval( MBPM, "MaxBPMass", line, "" ); extract_value( MBPM, "MaxBPMass", line, "" );
MBPM *= 1000; // MBPM *= 1000;
// asbtype // asbtype
std::string asb; std::string asb;
getkeyval( asb, "ASB", line, "" ); extract_value( asb, "ASB", line, "" );
if( BrakeCtrlPosNo > 0 ) { if( BrakeCtrlPosNo > 0 ) {
if( asb == "Manual" ) { ASBType = 1; } if( asb == "Manual" ) { ASBType = 1; }
@@ -6663,12 +6666,12 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
dbrake_none; dbrake_none;
} }
getkeyval( MainCtrlPosNo, "MCPN", line, "" ); extract_value( MainCtrlPosNo, "MCPN", line, "" );
getkeyval( ScndCtrlPosNo, "SCPN", line, "" ); extract_value( ScndCtrlPosNo, "SCPN", line, "" );
getkeyval( ScndInMain, "SCIM", line, "" ); extract_value( ScndInMain, "SCIM", line, "" );
std::string autorelay; std::string autorelay;
getkeyval( autorelay, "AutoRelay", line, "" ); extract_value( autorelay, "AutoRelay", line, "" );
if( autorelay == "Optional" ) { AutoRelayType = 2; } if( autorelay == "Optional" ) { AutoRelayType = 2; }
else if( autorelay == "Yes" ) { AutoRelayType = 1; } else if( autorelay == "Yes" ) { AutoRelayType = 1; }
else { AutoRelayType = 0; } else { AutoRelayType = 0; }
@@ -6677,10 +6680,10 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
ScndS = ( extract_value( "ScndS", line ) == "Yes" ); // brak pozycji rownoleglej przy niskiej nastawie PSR ScndS = ( extract_value( "ScndS", line ) == "Yes" ); // brak pozycji rownoleglej przy niskiej nastawie PSR
getkeyval( InitialCtrlDelay, "IniCDelay", line, "" ); extract_value( InitialCtrlDelay, "IniCDelay", line, "" );
getkeyval( CtrlDelay, "SCDelay", line, "" ); extract_value( CtrlDelay, "SCDelay", line, "" );
CtrlDownDelay = CtrlDelay; //hunter-101012: jesli nie ma SCDDelay; CtrlDownDelay = CtrlDelay; //hunter-101012: jesli nie ma SCDDelay;
getkeyval( CtrlDownDelay, "SCDDelay", line, "" ); extract_value( CtrlDownDelay, "SCDDelay", line, "" );
//hunter-111012: dla siodemek 303E //hunter-111012: dla siodemek 303E
FastSerialCircuit = FastSerialCircuit =
@@ -6688,7 +6691,7 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) {
1 : 1 :
0; 0;
getkeyval( StopBrakeDecc, "SBD", line, "" ); extract_value( StopBrakeDecc, "SBD", line, "" );
} }
void TMoverParameters::LoadFIZ_Light( std::string const &line ) { void TMoverParameters::LoadFIZ_Light( std::string const &line ) {
@@ -6699,8 +6702,8 @@ void TMoverParameters::LoadFIZ_Light( std::string const &line ) {
AlterLightPowerSource.SourceType = LoadFIZ_SourceDecode( extract_value( "AlterLight", line ) ); AlterLightPowerSource.SourceType = LoadFIZ_SourceDecode( extract_value( "AlterLight", line ) );
LoadFIZ_PowerParamsDecode( AlterLightPowerSource, "AlterL", line ); LoadFIZ_PowerParamsDecode( AlterLightPowerSource, "AlterL", line );
getkeyval( NominalVoltage, "Volt", line, "" ); extract_value( NominalVoltage, "Volt", line, "" );
getkeyval( BatteryVoltage, "LMaxVoltage", line, "" ); extract_value( BatteryVoltage, "LMaxVoltage", line, "" );
NominalBatteryVoltage = BatteryVoltage; NominalBatteryVoltage = BatteryVoltage;
} }
@@ -6714,11 +6717,11 @@ void TMoverParameters::LoadFIZ_Security( std::string const &line ) {
SetFlag( SecuritySystem.SystemType, 2 ); SetFlag( SecuritySystem.SystemType, 2 );
} }
getkeyval( SecuritySystem.AwareDelay, "AwareDelay", line, "" ); extract_value( SecuritySystem.AwareDelay, "AwareDelay", line, "" );
SecuritySystem.AwareMinSpeed = 0.1 * Vmax; //domyślnie 10% Vmax SecuritySystem.AwareMinSpeed = 0.1 * Vmax; //domyślnie 10% Vmax
getkeyval( SecuritySystem.AwareMinSpeed, "AwareMinSpeed", line, "" ); extract_value( SecuritySystem.AwareMinSpeed, "AwareMinSpeed", line, "" );
getkeyval( SecuritySystem.SoundSignalDelay, "SoundSignalDelay", line, "" ); extract_value( SecuritySystem.SoundSignalDelay, "SoundSignalDelay", line, "" );
getkeyval( SecuritySystem.EmergencyBrakeDelay, "EmergencyBrakeDelay", line, "" ); extract_value( SecuritySystem.EmergencyBrakeDelay, "EmergencyBrakeDelay", line, "" );
SecuritySystem.RadioStop = ( extract_value( "RadioStop", line ).find( "Yes" ) != std::string::npos ); SecuritySystem.RadioStop = ( extract_value( "RadioStop", line ).find( "Yes" ) != std::string::npos );
} }
@@ -6775,34 +6778,34 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
case ElectricSeriesMotor: { case ElectricSeriesMotor: {
getkeyval( NominalVoltage, "Volt", Input, "" ); extract_value( NominalVoltage, "Volt", Input, "" );
getkeyval( WindingRes, "WindingRes", Input, "" ); extract_value( WindingRes, "WindingRes", Input, "" );
if( WindingRes == 0.0 ) { if( WindingRes == 0.0 ) {
WindingRes = 0.01; WindingRes = 0.01;
} }
getkeyval( nmax, "nmax", Input, "" ); extract_value( nmax, "nmax", Input, "" );
nmax /= 60.0; nmax /= 60.0;
break; break;
} }
case WheelsDriven: case WheelsDriven:
case Dumb: { case Dumb: {
getkeyval( Ftmax, "Ftmax", Input, "" ); extract_value( Ftmax, "Ftmax", Input, "" );
break; break;
} }
case DieselEngine: { case DieselEngine: {
getkeyval( dizel_nmin, "nmin", Input, "" ); extract_value( dizel_nmin, "nmin", Input, "" );
dizel_nmin /= 60.0; dizel_nmin /= 60.0;
getkeyval( dizel_nmax, "nmax", Input, "" ); extract_value( dizel_nmax, "nmax", Input, "" );
dizel_nmax /= 60.0; dizel_nmax /= 60.0;
nmax = dizel_nmax; // not sure if this is needed, but just in case nmax = dizel_nmax; // not sure if this is needed, but just in case
getkeyval( dizel_nmax_cutoff, "nmax_cutoff", Input, "0.0" ); extract_value( dizel_nmax_cutoff, "nmax_cutoff", Input, "0.0" );
dizel_nmax_cutoff /= 60.0; dizel_nmax_cutoff /= 60.0;
getkeyval( dizel_AIM, "AIM", Input, "1.0" ); extract_value( dizel_AIM, "AIM", Input, "1.0" );
if( true == getkeyval( AnPos, "ShuntMode", Input, "" ) ) { if( true == extract_value( AnPos, "ShuntMode", Input, "" ) ) {
//dodatkowa przekładnia dla SM03 (2Ls150) //dodatkowa przekładnia dla SM03 (2Ls150)
ShuntModeAllow = true; ShuntModeAllow = true;
ShuntMode = false; ShuntMode = false;
@@ -6815,14 +6818,14 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
} }
case DieselElectric: { //youBy case DieselElectric: { //youBy
getkeyval( Ftmax, "Ftmax", Input, "" ); extract_value( Ftmax, "Ftmax", Input, "" );
Flat = ( extract_value( "Flat", Input ) == "1" ); Flat = ( extract_value( "Flat", Input ) == "1" );
getkeyval( Vhyp, "Vhyp", Input, "" ); extract_value( Vhyp, "Vhyp", Input, "" );
Vhyp /= 3.6; Vhyp /= 3.6;
getkeyval( Vadd, "Vadd", Input, "" ); extract_value( Vadd, "Vadd", Input, "" );
Vadd /= 3.6; Vadd /= 3.6;
getkeyval( PowerCorRatio, "Cr", Input, "" ); extract_value( PowerCorRatio, "Cr", Input, "" );
getkeyval( RelayType, "RelayType", Input, "" ); extract_value( RelayType, "RelayType", Input, "" );
if( extract_value( "ShuntMode", Input ) == "1" ) { if( extract_value( "ShuntMode", Input ) == "1" ) {
ShuntModeAllow = true; ShuntModeAllow = true;
@@ -6836,29 +6839,29 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
case ElectricInductionMotor: { case ElectricInductionMotor: {
RVentnmax = 1.0; RVentnmax = 1.0;
getkeyval( NominalVoltage, "Volt", Input, "" ); extract_value( NominalVoltage, "Volt", Input, "" );
getkeyval( eimc[ eimc_s_dfic ], "dfic", Input, "" ); extract_value( eimc[ eimc_s_dfic ], "dfic", Input, "" );
getkeyval( eimc[ eimc_s_dfmax ], "dfmax", Input, "" ); extract_value( eimc[ eimc_s_dfmax ], "dfmax", Input, "" );
getkeyval( eimc[ eimc_s_p ], "p", Input, "" ); extract_value( eimc[ eimc_s_p ], "p", Input, "" );
getkeyval( eimc[ eimc_s_cfu ], "cfu", Input, "" ); extract_value( eimc[ eimc_s_cfu ], "cfu", Input, "" );
getkeyval( eimc[ eimc_s_cim ], "cim", Input, "" ); extract_value( eimc[ eimc_s_cim ], "cim", Input, "" );
getkeyval( eimc[ eimc_s_icif ], "icif", Input, "" ); extract_value( eimc[ eimc_s_icif ], "icif", Input, "" );
getkeyval( eimc[ eimc_f_Uzmax ], "Uzmax", Input, "" ); extract_value( eimc[ eimc_f_Uzmax ], "Uzmax", Input, "" );
getkeyval( eimc[ eimc_f_Uzh ], "Uzh", Input, "" ); extract_value( eimc[ eimc_f_Uzh ], "Uzh", Input, "" );
getkeyval( eimc[ eimc_f_DU ], "DU", Input, "" ); extract_value( eimc[ eimc_f_DU ], "DU", Input, "" );
getkeyval( eimc[ eimc_f_I0 ], "I0", Input, "" ); extract_value( eimc[ eimc_f_I0 ], "I0", Input, "" );
getkeyval( eimc[ eimc_f_cfu ], "fcfu", Input, "" ); extract_value( eimc[ eimc_f_cfu ], "fcfu", Input, "" );
getkeyval( eimc[ eimc_p_F0 ], "F0", Input, "" ); extract_value( eimc[ eimc_p_F0 ], "F0", Input, "" );
getkeyval( eimc[ eimc_p_a1 ], "a1", Input, "" ); extract_value( eimc[ eimc_p_a1 ], "a1", Input, "" );
getkeyval( eimc[ eimc_p_Pmax ], "Pmax", Input, "" ); extract_value( eimc[ eimc_p_Pmax ], "Pmax", Input, "" );
getkeyval( eimc[ eimc_p_Fh ], "Fh", Input, "" ); extract_value( eimc[ eimc_p_Fh ], "Fh", Input, "" );
getkeyval( eimc[ eimc_p_Ph ], "Ph", Input, "" ); extract_value( eimc[ eimc_p_Ph ], "Ph", Input, "" );
getkeyval( eimc[ eimc_p_Vh0 ], "Vh0", Input, "" ); extract_value( eimc[ eimc_p_Vh0 ], "Vh0", Input, "" );
getkeyval( eimc[ eimc_p_Vh1 ], "Vh1", Input, "" ); extract_value( eimc[ eimc_p_Vh1 ], "Vh1", Input, "" );
getkeyval( eimc[ eimc_p_Imax ], "Imax", Input, "" ); extract_value( eimc[ eimc_p_Imax ], "Imax", Input, "" );
getkeyval( eimc[ eimc_p_abed ], "abed", Input, "" ); extract_value( eimc[ eimc_p_abed ], "abed", Input, "" );
getkeyval( eimc[ eimc_p_eped ], "edep", Input, "" ); extract_value( eimc[ eimc_p_eped ], "edep", Input, "" );
Flat = ( extract_value( "Flat", Input ) == "1" ); Flat = ( extract_value( "Flat", Input ) == "1" );
@@ -6872,8 +6875,8 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
void TMoverParameters::LoadFIZ_Switches( std::string const &Input ) { void TMoverParameters::LoadFIZ_Switches( std::string const &Input ) {
getkeyval( PantSwitchType, "Pantograph", Input, "" ); extract_value( PantSwitchType, "Pantograph", Input, "" );
getkeyval( ConvSwitchType, "Converter", Input, "" ); extract_value( ConvSwitchType, "Converter", Input, "" );
} }
void TMoverParameters::LoadFIZ_MotorParamTable( std::string const &Input ) { void TMoverParameters::LoadFIZ_MotorParamTable( std::string const &Input ) {
@@ -6882,10 +6885,10 @@ void TMoverParameters::LoadFIZ_MotorParamTable( std::string const &Input ) {
case DieselEngine: { case DieselEngine: {
getkeyval( dizel_minVelfullengage, "minVelfullengage", Input, "" ); extract_value( dizel_minVelfullengage, "minVelfullengage", Input, "" );
getkeyval( dizel_engageDia, "engageDia", Input, "" ); extract_value( dizel_engageDia, "engageDia", Input, "" );
getkeyval( dizel_engageMaxForce, "engageMaxForce", Input, "" ); extract_value( dizel_engageMaxForce, "engageMaxForce", Input, "" );
getkeyval( dizel_engagefriction, "engagefriction", Input, "" ); extract_value( dizel_engagefriction, "engagefriction", Input, "" );
break; break;
} }
default: { default: {
@@ -6896,11 +6899,11 @@ void TMoverParameters::LoadFIZ_MotorParamTable( std::string const &Input ) {
void TMoverParameters::LoadFIZ_Circuit( std::string const &Input ) { void TMoverParameters::LoadFIZ_Circuit( std::string const &Input ) {
getkeyval( CircuitRes, "CircuitRes", Input, "" ); extract_value( CircuitRes, "CircuitRes", Input, "" );
getkeyval( IminLo, "IminLo", Input, "" ); extract_value( IminLo, "IminLo", Input, "" );
getkeyval( IminHi, "IminHi", Input, "" ); extract_value( IminHi, "IminHi", Input, "" );
getkeyval( ImaxLo, "ImaxLo", Input, "" ); extract_value( ImaxLo, "ImaxLo", Input, "" );
getkeyval( ImaxHi, "ImaxHi", Input, "" ); extract_value( ImaxHi, "ImaxHi", Input, "" );
Imin = IminLo; Imin = IminLo;
Imax = ImaxLo; Imax = ImaxLo;
} }
@@ -6922,27 +6925,27 @@ void TMoverParameters::LoadFIZ_RList( std::string const &Input ) {
if( RVentType > 0 ) { if( RVentType > 0 ) {
getkeyval( RVentnmax, "RVentmax", Input, "" ); extract_value( RVentnmax, "RVentmax", Input, "" );
RVentnmax /= 60.0; RVentnmax /= 60.0;
getkeyval( RVentCutOff, "RVentCutOff", Input, "" ); extract_value( RVentCutOff, "RVentCutOff", Input, "" );
} }
} }
void TMoverParameters::LoadFIZ_DList( std::string const &Input ) { void TMoverParameters::LoadFIZ_DList( std::string const &Input ) {
getkeyval( dizel_Mmax, "Mmax", Input, "" ); extract_value( dizel_Mmax, "Mmax", Input, "" );
getkeyval( dizel_nMmax, "nMmax", Input, "" ); extract_value( dizel_nMmax, "nMmax", Input, "" );
getkeyval( dizel_Mnmax, "Mnmax", Input, "" ); extract_value( dizel_Mnmax, "Mnmax", Input, "" );
getkeyval( dizel_nmax, "nmax", Input, "" ); extract_value( dizel_nmax, "nmax", Input, "" );
getkeyval( dizel_nominalfill, "nominalfill", Input, "" ); extract_value( dizel_nominalfill, "nominalfill", Input, "" );
getkeyval( dizel_Mstand, "Mstand", Input, "" ); extract_value( dizel_Mstand, "Mstand", Input, "" );
} }
void TMoverParameters::LoadFIZ_LightsList( std::string const &Input ) { void TMoverParameters::LoadFIZ_LightsList( std::string const &Input ) {
getkeyval( LightsPosNo, "Size", Input, "" ); extract_value( LightsPosNo, "Size", Input, "" );
getkeyval( LightsWrap, "Wrap", Input, "" ); extract_value( LightsWrap, "Wrap", Input, "" );
getkeyval( LightsDefPos, "Default", Input, "" ); extract_value( LightsDefPos, "Default", Input, "" );
} }
void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparameters, std::string const Prefix, std::string const &Line ) { void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparameters, std::string const Prefix, std::string const &Line ) {
@@ -6957,7 +6960,7 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
} }
case Transducer: { case Transducer: {
getkeyval( Powerparameters.InputVoltage, Prefix + "TransducerInputV", Line, "" ); extract_value( Powerparameters.InputVoltage, Prefix + "TransducerInputV", Line, "" );
break; break;
} }
case Generator: { case Generator: {
@@ -6967,7 +6970,7 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
} }
case Accumulator: { case Accumulator: {
getkeyval( Powerparameters.RAccumulator.MaxCapacity, Prefix + "Cap", Line, "" ); extract_value( Powerparameters.RAccumulator.MaxCapacity, Prefix + "Cap", Line, "" );
Powerparameters.RAccumulator.RechargeSource = LoadFIZ_SourceDecode( extract_value( Prefix + "RS", Line ) ); Powerparameters.RAccumulator.RechargeSource = LoadFIZ_SourceDecode( extract_value( Prefix + "RS", Line ) );
break; break;
} }
@@ -6975,26 +6978,26 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
auto &collectorparameters = Powerparameters.CollectorParameters; auto &collectorparameters = Powerparameters.CollectorParameters;
getkeyval( collectorparameters.CollectorsNo, "CollectorsNo", Line, "" ); extract_value( collectorparameters.CollectorsNo, "CollectorsNo", Line, "" );
getkeyval( collectorparameters.MinH, "MinH", Line, "" ); extract_value( collectorparameters.MinH, "MinH", Line, "" );
getkeyval( collectorparameters.MaxH, "MaxH", Line, "" ); extract_value( collectorparameters.MaxH, "MaxH", Line, "" );
getkeyval( collectorparameters.CSW, "CSW", Line, "" ); //szerokość części roboczej extract_value( collectorparameters.CSW, "CSW", Line, "" ); //szerokość części roboczej
getkeyval( collectorparameters.MaxV, "MaxVoltage", Line, "" ); extract_value( collectorparameters.MaxV, "MaxVoltage", Line, "" );
collectorparameters.OVP = //przekaźnik nadnapięciowy collectorparameters.OVP = //przekaźnik nadnapięciowy
extract_value( "OverVoltProt", Line ) == "Yes" ? extract_value( "OverVoltProt", Line ) == "Yes" ?
1 : 1 :
0; 0;
//napięcie rozłączające WS //napięcie rozłączające WS
collectorparameters.MinV = 0.5 * collectorparameters.MaxV; //gdyby parametr nie podany collectorparameters.MinV = 0.5 * collectorparameters.MaxV; //gdyby parametr nie podany
getkeyval( collectorparameters.MinV, "MinV", Line, "" ); extract_value( collectorparameters.MinV, "MinV", Line, "" );
//napięcie wymagane do załączenia WS //napięcie wymagane do załączenia WS
collectorparameters.InsetV = 0.6 * collectorparameters.MaxV; //gdyby parametr nie podany collectorparameters.InsetV = 0.6 * collectorparameters.MaxV; //gdyby parametr nie podany
getkeyval( collectorparameters.InsetV, "InsetV", Line, "" ); extract_value( collectorparameters.InsetV, "InsetV", Line, "" );
//ciśnienie rozłączające WS //ciśnienie rozłączające WS
getkeyval( collectorparameters.MinPress, "MinPress", Line, "2.0" ); //domyślnie 2 bary do załączenia WS extract_value( collectorparameters.MinPress, "MinPress", Line, "2.0" ); //domyślnie 2 bary do załączenia WS
//maksymalne ciśnienie za reduktorem //maksymalne ciśnienie za reduktorem
collectorparameters.MaxPress = 5.0 + 0.001 * ( Random( 50 ) - Random( 50 ) ); collectorparameters.MaxPress = 5.0 + 0.001 * ( Random( 50 ) - Random( 50 ) );
getkeyval( collectorparameters.MaxPress, "MaxPress", Line, "" ); extract_value( collectorparameters.MaxPress, "MaxPress", Line, "" );
break; break;
} }
case PowerCable: { case PowerCable: {
@@ -7002,7 +7005,7 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
Powerparameters.RPowerCable.PowerTrans = LoadFIZ_PowerDecode( extract_value( Prefix + "PowerTrans", Line ) ); Powerparameters.RPowerCable.PowerTrans = LoadFIZ_PowerDecode( extract_value( Prefix + "PowerTrans", Line ) );
if( Powerparameters.RPowerCable.PowerTrans == SteamPower ) { if( Powerparameters.RPowerCable.PowerTrans == SteamPower ) {
getkeyval( Powerparameters.RPowerCable.SteamPressure, Prefix + "SteamPress", Line, "" ); extract_value( Powerparameters.RPowerCable.SteamPressure, Prefix + "SteamPress", Line, "" );
} }
break; break;
} }
@@ -7018,9 +7021,9 @@ void TMoverParameters::LoadFIZ_PowerParamsDecode( TPowerParameters &Powerparamet
&& ( Powerparameters.SourceType != InternalSource ) ) { && ( Powerparameters.SourceType != InternalSource ) ) {
getkeyval( Powerparameters.MaxVoltage, Prefix + "MaxVoltage", Line, "" ); extract_value( Powerparameters.MaxVoltage, Prefix + "MaxVoltage", Line, "" );
getkeyval( Powerparameters.MaxCurrent, Prefix + "MaxCurrent", Line, "" ); extract_value( Powerparameters.MaxCurrent, Prefix + "MaxCurrent", Line, "" );
getkeyval( Powerparameters.IntR, Prefix + "IntR", Line, "" ); extract_value( Powerparameters.IntR, Prefix + "IntR", Line, "" );
} }
} }
@@ -7273,7 +7276,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
ScndPipePress = CompressedVolume / VeselVolume; ScndPipePress = CompressedVolume / VeselVolume;
PipePress = CntrlPipePress; PipePress = CntrlPipePress;
BrakePress = 0.0; BrakePress = 0.0;
LocalBrakePos = 0.0; LocalBrakePos = 0;
if( CabNo == 0 ) if( CabNo == 0 )
BrakeCtrlPos = static_cast<int>( Handle->GetPos( bh_NP ) ); BrakeCtrlPos = static_cast<int>( Handle->GetPos( bh_NP ) );
else else

View File

@@ -15,9 +15,9 @@ Copyright (C) 2007-2014 Maciej Cierniak
#include "stdafx.h" #include "stdafx.h"
#include "Oerlikon_ESt.h" #include "Oerlikon_ESt.h"
double d2A(double d) double d2A( double const d )
{ {
return (d * d) * 0.7854 * 1.0 / 1000; return (d * d) * 0.7854 / 1000.0;
} }
// ------ RURA ------ // ------ RURA ------
@@ -42,7 +42,7 @@ void TPrzeciwposlizg::SetPoslizg(bool flag)
void TPrzeciwposlizg::Update(double dt) void TPrzeciwposlizg::Update(double dt)
{ {
if ((Poslizg)) if (true == Poslizg)
{ {
BrakeRes->Flow(dVol); BrakeRes->Flow(dVol);
Next->Flow(PF(Next->P(), 0, d2A(10)) * dt); Next->Flow(PF(Next->P(), 0, d2A(10)) * dt);
@@ -56,16 +56,14 @@ void TPrzeciwposlizg::Update(double dt)
void TPrzekladnik::Update(double dt) void TPrzekladnik::Update(double dt)
{ {
double BCP;
double BVP;
double dV; double dV;
BCP = Next->P(); double BCP{ Next->P() };
BVP = BrakeRes->P(); double BVP{ BrakeRes->P() };
if ((BCP > P())) if ( BCP > P() )
dV = -PFVd(BCP, 0, d2A(10), P()) * dt; dV = -PFVd(BCP, 0, d2A(10), P()) * dt;
else if ((BCP < P())) else if ( BCP < P() )
dV = PFVa(BVP, BCP, d2A(10), P()) * dt; dV = PFVa(BVP, BCP, d2A(10), P()) * dt;
else else
dV = 0; dV = 0;
@@ -81,7 +79,7 @@ void TRapid::SetRapidParams(double mult, double size)
{ {
RapidMult = mult; RapidMult = mult;
RapidStatus = false; RapidStatus = false;
if ((size > 0.1)) // dopasowywanie srednicy przekladnika if (size > 0.1) // dopasowywanie srednicy przekladnika
{ {
DN = d2A(size * 0.4); DN = d2A(size * 0.4);
DL = d2A(size * 0.4); DL = d2A(size * 0.4);
@@ -100,26 +98,23 @@ void TRapid::SetRapidStatus(bool rs)
void TRapid::Update(double dt) void TRapid::Update(double dt)
{ {
double BCP; double BVP{ BrakeRes->P() };
double BVP; double BCP{ Next->P() };
double dV;
double ActMult; double ActMult;
double dV;
BVP = BrakeRes->P(); if ( true == RapidStatus )
BCP = Next->P();
if ((RapidStatus))
{ {
ActMult = RapidMult; ActMult = RapidMult;
} }
else else
{ {
ActMult = 1; ActMult = 1.0;
} }
if ((BCP * RapidMult > P() * ActMult)) if ((BCP * RapidMult) > (P() * ActMult))
dV = -PFVd(BCP, 0, DL, P() * ActMult / RapidMult) * dt; dV = -PFVd(BCP, 0, DL, P() * ActMult / RapidMult) * dt;
else if ((BCP * RapidMult < P() * ActMult)) else if ((BCP * RapidMult) < (P() * ActMult))
dV = PFVa(BVP, BCP, DN, P() * ActMult / RapidMult) * dt; dV = PFVa(BVP, BCP, DN, P() * ActMult / RapidMult) * dt;
else else
dV = 0; dV = 0;
@@ -138,16 +133,13 @@ void TPrzekCiagly::SetMult(double m)
void TPrzekCiagly::Update(double dt) void TPrzekCiagly::Update(double dt)
{ {
double BCP; double const BVP{ BrakeRes->P() };
double BVP; double const BCP{ Next->P() };
double dV; double dV;
BVP = BrakeRes->P(); if ( BCP > (P() * mult))
BCP = Next->P();
if ((BCP > P() * mult))
dV = -PFVd(BCP, 0, d2A(8), P() * mult) * dt; dV = -PFVd(BCP, 0, d2A(8), P() * mult) * dt;
else if ((BCP < P() * mult)) else if (BCP < (P() * mult))
dV = PFVa(BVP, BCP, d2A(8), P() * mult) * dt; dV = PFVa(BVP, BCP, d2A(8), P() * mult) * dt;
else else
dV = 0; dV = 0;
@@ -166,19 +158,15 @@ void TPrzek_PZZ::SetLBP(double P)
void TPrzek_PZZ::Update(double dt) void TPrzek_PZZ::Update(double dt)
{ {
double BCP;
double BVP; double const BVP{ BrakeRes->P() };
double const BCP{ Next->P() };
double const Pgr{ std::max( LBP, P() ) };
double dV; double dV;
double Pgr;
BVP = BrakeRes->P(); if (BCP > Pgr)
BCP = Next->P();
Pgr = Max0R(LBP, P());
if ((BCP > Pgr))
dV = -PFVd(BCP, 0, d2A(8), Pgr) * dt; dV = -PFVd(BCP, 0, d2A(8), Pgr) * dt;
else if ((BCP < Pgr)) else if (BCP < Pgr)
dV = PFVa(BVP, BCP, d2A(8), Pgr) * dt; dV = PFVa(BVP, BCP, d2A(8), Pgr) * dt;
else else
dV = 0; dV = 0;
@@ -209,28 +197,18 @@ void TPrzekED::Update(double dt)
// ------ OERLIKON EST NA BOGATO ------ // ------ OERLIKON EST NA BOGATO ------
double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora wstepna i PG double TNESt3::GetPF( double const PP, double const dt, double const Vel ) // przeplyw miedzy komora wstepna i PG
{ {
double dV; double const BVP{ BrakeRes->P() };
double dV1; double const VVP{ ValveRes->P() };
double temp;
double VVP;
double BVP;
double BCP;
double CVP;
double MPP;
double nastG;
unsigned char i;
BVP = BrakeRes->P();
VVP = ValveRes->P();
// BCP:=BrakeCyl.P; // BCP:=BrakeCyl.P;
BCP = Przekladniki[1]->P(); double const BCP{ Przekladniki[ 1 ]->P() };
CVP = CntrlRes->P(); double const CVP{ CntrlRes->P() };
MPP = Miedzypoj->P(); double const MPP{ Miedzypoj->P() };
dV1 = 0; double dV{ 0.0 };
double dV1{ 0.0 };
nastG = static_cast<double>(BrakeDelayFlag & bdelay_G); double const nastG = static_cast<double>(BrakeDelayFlag & bdelay_G);
// sprawdzanie stanu // sprawdzanie stanu
CheckState(BCP, dV1); CheckState(BCP, dV1);
@@ -238,24 +216,22 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
// luzowanie // luzowanie
if ((BrakeStatus & b_hld) == b_off) if ((BrakeStatus & b_hld) == b_off)
dV = PF(0, BCP, Nozzles[dTO] * nastG + (1 - nastG) * Nozzles[dOO]) * dt * dV = PF(0, BCP, Nozzles[dTO] * nastG + (1.0 - nastG) * Nozzles[dOO]) * dt *
(0.1 + 4.9 * Min0R(0.2, BCP - ((CVP - 0.05 - VVP) * BVM + 0.1))); (0.1 + 4.9 * std::min(0.2, BCP - ((CVP - 0.05 - VVP) * BVM + 0.1)));
else else
dV = 0; dV = 0;
// BrakeCyl.Flow(-dV); // BrakeCyl.Flow(-dV);
Przekladniki[1]->Flow(-dV); Przekladniki[1]->Flow(-dV);
if (((BrakeStatus & b_on) == b_on) && (Przekladniki[1]->P() * HBG300 < MaxBP)) if ( ((BrakeStatus & b_on) == b_on) && (Przekladniki[1]->P() * HBG300 < MaxBP) )
dV = PF(BVP, BCP, dV = PF( BVP, BCP, Nozzles[dTN] * (nastG + 2.0 * (BCP < Podskok ? 1.0 : 0.0)) + Nozzles[dON] * (1 - nastG) )
Nozzles[dTN] * (nastG + 2 * short(BCP < Podskok)) + Nozzles[dON] * (1 - nastG)) * * dt * (0.1 + 4.9 * std::min( 0.2, (CVP - 0.05 - VVP) * BVM - BCP ) );
dt * (0.1 + 4.9 * Min0R(0.2, (CVP - 0.05 - VVP) * BVM - BCP));
else else
dV = 0; dV = 0;
// BrakeCyl.Flow(-dV); // BrakeCyl.Flow(-dV);
Przekladniki[1]->Flow(-dV); Przekladniki[1]->Flow(-dV);
BrakeRes->Flow(dV); BrakeRes->Flow(dV);
{ for (int i = 1; i < 4; ++i)
for (i = 1; i < 4; ++i)
{ {
Przekladniki[i]->Update(dt); Przekladniki[i]->Update(dt);
if (typeid(*Przekladniki[i]) == typeid(TRapid)) if (typeid(*Przekladniki[i]) == typeid(TRapid))
@@ -268,7 +244,7 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
else if (typeid(*Przekladniki[i]) == typeid(TPrzeciwposlizg)) else if (typeid(*Przekladniki[i]) == typeid(TPrzeciwposlizg))
Przekladniki[i]->SetPoslizg((BrakeStatus & b_asb) == b_asb); Przekladniki[i]->SetPoslizg((BrakeStatus & b_asb) == b_asb);
else if (typeid(*Przekladniki[i]) == typeid(TPrzekED)) else if (typeid(*Przekladniki[i]) == typeid(TPrzekED))
if ((Vel < -15)) if (Vel < -15)
Przekladniki[i]->SetP(0); Przekladniki[i]->SetP(0);
else else
Przekladniki[i]->SetP(MaxBP * 3); Przekladniki[i]->SetP(MaxBP * 3);
@@ -277,26 +253,25 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
else if (typeid(*Przekladniki[i]) == typeid(TPrzek_PZZ)) else if (typeid(*Przekladniki[i]) == typeid(TPrzek_PZZ))
Przekladniki[i]->SetLBP(LBP); Przekladniki[i]->SetLBP(LBP);
} }
}
// przeplyw testowy miedzypojemnosci // przeplyw testowy miedzypojemnosci
dV = PF(MPP, VVP, BVs(BCP)) + PF(MPP, CVP, CVs(BCP)); dV = PF(MPP, VVP, BVs(BCP)) + PF(MPP, CVP, CVs(BCP));
if ((MPP - 0.05 > BVP)) if ((MPP - 0.05 > BVP))
dV += PF(MPP - 0.05, BVP, Nozzles[dPT] * nastG + (1 - nastG) * Nozzles[dPO]); dV += PF(MPP - 0.05, BVP, Nozzles[dPT] * nastG + (1.0 - nastG) * Nozzles[dPO]);
if (MPP > VVP) if (MPP > VVP)
dV += PF(MPP, VVP, d2A(5)); dV += PF(MPP, VVP, d2A(5));
Miedzypoj->Flow(dV * dt * 0.15); Miedzypoj->Flow(dV * dt * 0.15);
// przeplyw ZS <-> PG // przeplyw ZS <-> PG
temp = CVs(BCP); double const temp = CVs(BCP);
dV = PF(CVP, MPP, temp) * dt; dV = PF(CVP, MPP, temp) * dt;
CntrlRes->Flow(dV); CntrlRes->Flow(dV);
ValveRes->Flow(-0.02 * dV); ValveRes->Flow(-0.02 * dV);
dV1 += 0.98 * dV; dV1 += 0.98 * dV;
// przeplyw ZP <-> MPJ // przeplyw ZP <-> MPJ
if ((MPP - 0.05 > BVP)) if (MPP - 0.05 > BVP)
dV = PF(BVP, MPP - 0.05, Nozzles[dPT] * nastG + (1 - nastG) * Nozzles[dPO]) * dt; dV = PF(BVP, MPP - 0.05, Nozzles[dPT] * nastG + (1.0 - nastG) * Nozzles[dPO]) * dt;
else else
dV = 0; dV = 0;
BrakeRes->Flow(dV); BrakeRes->Flow(dV);
@@ -317,11 +292,11 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
return dV - dV1; return dV - dV1;
} }
void TNESt3::EStParams(double i_crc) // parametry charakterystyczne dla ESt void TNESt3::EStParams( double const i_crc ) // parametry charakterystyczne dla ESt
{ {
} }
void TNESt3::Init(double PP, double HPP, double LPP, double BP, int BDF) void TNESt3::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
@@ -352,17 +327,12 @@ double TNESt3::GetCRP()
// return Miedzypoj.P; // return Miedzypoj.P;
} }
void TNESt3::CheckState(double BCP, double &dV1) // glowny przyrzad rozrzadczy void TNESt3::CheckState(double const BCP, double &dV1) // glowny przyrzad rozrzadczy
{ {
double VVP; double const BVP{ BrakeRes->P() }; //-> tu ma byc komora rozprezna
double BVP; double const VVP{ ValveRes->P() };
double CVP; double const CVP{ CntrlRes->P() };
double MPP; double const MPP{ Miedzypoj->P() };
BVP = BrakeRes->P(); //-> tu ma byc komora rozprezna
VVP = ValveRes->P();
CVP = CntrlRes->P();
MPP = Miedzypoj->P();
if ((BCP < 0.25) && (VVP + 0.08 > CVP)) if ((BCP < 0.25) && (VVP + 0.08 > CVP))
Przys_blok = false; Przys_blok = false;
@@ -370,19 +340,19 @@ void TNESt3::CheckState(double BCP, double &dV1) // glowny przyrzad rozrzadczy
// sprawdzanie stanu // sprawdzanie stanu
// if ((BrakeStatus and 1)=1)and(BCP>0.25)then // if ((BrakeStatus and 1)=1)and(BCP>0.25)then
if ((VVP + 0.01 + BCP / BVM < CVP - 0.05) && (Przys_blok)) if ((VVP + 0.01 + BCP / BVM < CVP - 0.05) && (Przys_blok))
BrakeStatus |= 3; // hamowanie stopniowe; BrakeStatus |= ( b_on | b_hld ); // hamowanie stopniowe;
else if ((VVP - 0.01 + (BCP - 0.1) / BVM > CVP - 0.05)) else if (VVP - 0.01 + (BCP - 0.1) / BVM > CVP - 0.05)
BrakeStatus &= 252; // luzowanie; BrakeStatus &= ~( b_on | b_hld ); // luzowanie;
else if ((VVP + BCP / BVM > CVP - 0.05)) else if (VVP + BCP / BVM > CVP - 0.05)
BrakeStatus &= 253; // zatrzymanie napelaniania; BrakeStatus &= ~b_on; // zatrzymanie napelaniania;
else if ((VVP + (BCP - 0.1) / BVM < CVP - 0.05) && (BCP > 0.25)) // zatrzymanie luzowania else if ((VVP + (BCP - 0.1) / BVM < CVP - 0.05) && (BCP > 0.25)) // zatrzymanie luzowania
BrakeStatus |= 1; BrakeStatus |= b_hld;
if ((BrakeStatus & 1) == 0) if( ( BrakeStatus & b_hld ) == 0 )
SoundFlag |= sf_CylU; SoundFlag |= sf_CylU;
if ((VVP + 0.10 < CVP) && (BCP < 0.25)) // poczatek hamowania if ((VVP + 0.10 < CVP) && (BCP < 0.25)) // poczatek hamowania
if ((!Przys_blok)) if (false == Przys_blok)
{ {
ValveRes->CreatePress(0.1 * VVP); ValveRes->CreatePress(0.1 * VVP);
SoundFlag |= sf_Acc; SoundFlag |= sf_Acc;
@@ -390,59 +360,50 @@ void TNESt3::CheckState(double BCP, double &dV1) // glowny przyrzad rozrzadczy
Przys_blok = true; Przys_blok = true;
} }
if ((BCP > 0.5)) if (BCP > 0.5)
Zamykajacy = true; Zamykajacy = true;
else if ((VVP - 0.6 < MPP)) else if (VVP - 0.6 < MPP)
Zamykajacy = false; Zamykajacy = false;
} }
void TNESt3::CheckReleaser(double dt) // odluzniacz void TNESt3::CheckReleaser(double const dt) // odluzniacz
{ {
double VVP; double const VVP{ ValveRes->P() };
double CVP; double const CVP{ CntrlRes->P() };
VVP = ValveRes->P();
CVP = CntrlRes->P();
// odluzniacz automatyczny // odluzniacz automatyczny
if ((BrakeStatus & b_rls) == b_rls) if ((BrakeStatus & b_rls) == b_rls)
{ {
CntrlRes->Flow(PF(CVP, 0, 0.02) * dt); CntrlRes->Flow(PF(CVP, 0, 0.02) * dt);
if ((CVP < VVP + 0.3) || (!autom)) if ((CVP < VVP + 0.3) || (false == autom))
BrakeStatus &= 247; BrakeStatus &= ~b_rls;
} }
} }
double TNESt3::CVs(double BP) // napelniacz sterujacego double TNESt3::CVs(double const BP) // napelniacz sterujacego
{ {
double CVP; double const CVP{ CntrlRes->P() };
double MPP; double const MPP{ Miedzypoj->P() };
CVP = CntrlRes->P();
MPP = Miedzypoj->P();
// przeplyw ZS <-> PG // przeplyw ZS <-> PG
if ((MPP < CVP - 0.17)) if (MPP < CVP - 0.17)
return 0; return 0;
else if ((MPP > CVP - 0.08)) else if (MPP > CVP - 0.08)
return Nozzles[dSd]; return Nozzles[dSd];
else else
return Nozzles[dSm]; return Nozzles[dSm];
} }
double TNESt3::BVs(double BCP) // napelniacz pomocniczego double TNESt3::BVs(double const BCP) // napelniacz pomocniczego
{ {
double CVP; double const CVP{ CntrlRes->P() };
double MPP; double const MPP{ Miedzypoj->P() };
CVP = CntrlRes->P();
MPP = Miedzypoj->P();
// przeplyw ZP <-> rozdzielacz // przeplyw ZP <-> rozdzielacz
if ((MPP < CVP - 0.3)) if (MPP < CVP - 0.3)
return Nozzles[dP]; return Nozzles[dP];
else if ((BCP < 0.5)) else if (BCP < 0.5)
if ((Zamykajacy)) if ( true == Zamykajacy)
return Nozzles[dPm]; // 1.25 return Nozzles[dPm]; // 1.25
else else
return Nozzles[dPd]; return Nozzles[dPd];
@@ -450,11 +411,12 @@ double TNESt3::BVs(double BCP) // napelniacz pomocniczego
return 0; return 0;
} }
void TNESt3::PLC(double mass) void TNESt3::PLC(double const mass)
{ {
LoadC = 1 + LoadC = 1.0 +
double(mass < LoadM) * ( mass < LoadM ?
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1); ( (TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM) ) / MaxBP - 1.0 ) :
0.0 );
} }
void TNESt3::ForceEmptiness() void TNESt3::ForceEmptiness()
@@ -472,27 +434,25 @@ void TNESt3::ForceEmptiness()
CntrlRes->Act(); CntrlRes->Act();
} }
void TNESt3::SetLP(double TM, double LM, double TBP) void TNESt3::SetLP(double const TM, double const LM, double const TBP)
{ {
TareM = TM; TareM = TM;
LoadM = LM; LoadM = LM;
TareBP = TBP; TareBP = TBP;
} }
void TNESt3::SetLBP(double P) void TNESt3::SetLBP(double const P)
{ {
LBP = P; LBP = P;
} }
void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru ZR) void TNESt3::SetSize( int const size, std::string const &params ) // ustawianie dysz (rozmiaru ZR)
{ {
static double const dNO1l = 1.250; static double const dNO1l = 1.250;
static double const dNT1l = 0.510; static double const dNT1l = 0.510;
static double const dOO1l = 0.907; static double const dOO1l = 0.907;
static double const dOT1l = 0.524; static double const dOT1l = 0.524;
int i;
if (params.find("ESt3") != std::string::npos) if (params.find("ESt3") != std::string::npos)
{ {
Podskok = 0.7; Podskok = 0.7;
@@ -590,7 +550,7 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
case 200: case 200:
{ // dON,dOO,dTN,dTO,dP,dS { // dON,dOO,dTN,dTO,dP,dS
Nozzles[dON] = dNO1l; Nozzles[dON] = dNO1l;
Nozzles[dOO] = dOO1l * 1.0 / 1.15; Nozzles[dOO] = dOO1l / 1.15;
Nozzles[dTN] = dNT1l; Nozzles[dTN] = dNT1l;
Nozzles[dTO] = dOT1l; Nozzles[dTO] = dOT1l;
Nozzles[dP] = 7.4; Nozzles[dP] = 7.4;
@@ -603,7 +563,7 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
case 375: case 375:
{ // dON,dOO,dTN,dTO,dP,dS { // dON,dOO,dTN,dTO,dP,dS
Nozzles[dON] = dNO1l; Nozzles[dON] = dNO1l;
Nozzles[dOO] = dOO1l * 1.0 / 1.15; Nozzles[dOO] = dOO1l / 1.15;
Nozzles[dTN] = dNT1l; Nozzles[dTN] = dNT1l;
Nozzles[dTO] = dOT1l; Nozzles[dTO] = dOT1l;
Nozzles[dP] = 13.0; Nozzles[dP] = 13.0;
@@ -655,11 +615,11 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
Nozzles[dSm] = 0.9; Nozzles[dSm] = 0.9;
// przeliczanie z mm^2 na l/m // przeliczanie z mm^2 na l/m
for (i = 0; i < dMAX; ++i) for (int i = 0; i < dMAX; ++i)
{ {
Nozzles[i] = d2A(Nozzles[i]); //(/1000^2*pi/4*1000) Nozzles[i] = d2A(Nozzles[i]); //(/1000^2*pi/4*1000)
} }
for (i = 1; i < 4; ++i) for (int i = 1; i < 4; ++i)
{ {
Przekladniki[i]->BrakeRes = BrakeRes; Przekladniki[i]->BrakeRes = BrakeRes;
Przekladniki[i]->CreateCap(i); Przekladniki[i]->CreateCap(i);

View File

@@ -190,11 +190,11 @@ class TNESt3 : public TBrake {
double Nozzles[ dMAX ]; // dysze double Nozzles[ dMAX ]; // dysze
double BVM = 0.0; // przelozenie PG-CH double BVM = 0.0; // przelozenie PG-CH
// ValveFlag: byte; //polozenie roznych zaworkow // ValveFlag: byte; //polozenie roznych zaworkow
bool Zamykajacy = false; // pamiec zaworka zamykajacego bool Zamykajacy = true; // pamiec zaworka zamykajacego
// Przys_wlot: boolean; //wlot do komory przyspieszacza // Przys_wlot: boolean; //wlot do komory przyspieszacza
bool Przys_blok = false; // blokada przyspieszacza bool Przys_blok = true; // blokada przyspieszacza
bool RapidStatus = false; bool RapidStatus = true;
bool RapidStaly = false; bool RapidStaly = true;
double LoadC = 0.0; double LoadC = 0.0;
double TareM = 0.0; // masa proznego double TareM = 0.0; // masa proznego
double LoadM = 0.0; // masa pelnego double LoadM = 0.0; // masa pelnego
@@ -202,29 +202,29 @@ class TNESt3 : public TBrake {
double HBG300 = 0.0; // zawor ograniczajacy cisnienie double HBG300 = 0.0; // zawor ograniczajacy cisnienie
double Podskok = 0.0; // podskok preznosci poczatkowej double Podskok = 0.0; // podskok preznosci poczatkowej
// HPBR: real; //zasilanie ZP z wysokiego cisnienia // HPBR: real; //zasilanie ZP z wysokiego cisnienia
bool autom = false; // odluzniacz samoczynny bool autom = true; // odluzniacz samoczynny
double LBP = 0.0; // cisnienie hamulca pomocniczego double LBP = 0.0; // cisnienie hamulca pomocniczego
public: public:
inline TNESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TNESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
{} {}
void Init(double PP, double HPP, double LPP, double BP, int BDF) /*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF ) /*override*/;
virtual double GetPF(double PP, double dt, double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG virtual double GetPF( double const PP, double const dt, double const Vel ) /*override*/; // przeplyw miedzy komora wstepna i PG
void EStParams(double i_crc); // parametry charakterystyczne dla ESt void EStParams(double i_crc); // parametry charakterystyczne dla ESt
virtual double GetCRP() /*override*/; virtual double GetCRP() /*override*/;
void CheckState(double BCP, double &dV1); // glowny przyrzad rozrzadczy void CheckState(double const BCP, double &dV1); // glowny przyrzad rozrzadczy
void CheckReleaser(double dt); // odluzniacz void CheckReleaser(double const dt); // odluzniacz
double CVs(double BP); // napelniacz sterujacego double CVs(double const BP); // napelniacz sterujacego
double BVs(double BCP); // napelniacz pomocniczego double BVs(double const BCP); // napelniacz pomocniczego
void SetSize(int size, std::string params); // ustawianie dysz (rozmiaru ZR), przekladniki void SetSize( int const size, std::string const &params ); // ustawianie dysz (rozmiaru ZR), przekladniki
void PLC(double mass); // wspolczynnik cisnienia przystawki wazacej void PLC(double const mass); // wspolczynnik cisnienia przystawki wazacej
void SetLP(double TM, double LM, double TBP); // parametry przystawki wazacej void SetLP(double const TM, double const LM, double const TBP); // parametry przystawki wazacej
virtual void ForceEmptiness() /*override*/; // wymuszenie bycia pustym virtual void ForceEmptiness() /*override*/; // wymuszenie bycia pustym
void SetLBP(double P); // cisnienie z hamulca pomocniczego void SetLBP(double const P); // cisnienie z hamulca pomocniczego
}; };
extern double d2A(double d); extern double d2A( double const d );
#endif // INCLUDED_OERLIKON_EST_H #endif // INCLUDED_OERLIKON_EST_H
// END // END

View File

@@ -49,23 +49,23 @@ double PF_old(double P1, double P2, double S)
return (PH + 1) * 222 * S * (P2 - P1) / (1.13 * PH - PL); return (PH + 1) * 222 * S * (P2 - P1) / (1.13 * PH - PL);
} }
double PF(double P1, double P2, double S, double DP) double PF( double const P1, double const P2, double const S, double const DP )
{ {
double PH = std::max(P1, P2) + 1; // wyzsze cisnienie absolutne double PH = std::max(P1, P2) + 1; // wyzsze cisnienie absolutne
double PL = P1 + P2 - PH + 2; // nizsze cisnienie absolutne double PL = P1 + P2 - PH + 2; // nizsze cisnienie absolutne
double sg = PL / PH; // bezwymiarowy stosunek cisnien double sg = PL / PH; // bezwymiarowy stosunek cisnien
double FM = PH * 197 * S * Sign(P2 - P1); // najwyzszy mozliwy przeplyw, wraz z kierunkiem double FM = PH * 197 * S * Sign(P2 - P1); // najwyzszy mozliwy przeplyw, wraz z kierunkiem
if ((sg > 0.5)) // jesli ponizej stosunku krytycznego if (sg > 0.5) // jesli ponizej stosunku krytycznego
if ((PH - PL) < DP) // niewielka roznica cisnien if ((PH - PL) < DP) // niewielka roznica cisnien
return (1 - sg) / DPL * FM * 2 * std::sqrt((DP) * (PH - DP)); return (1.0 - sg) / DPL * FM * 2.0 * std::sqrt((DP) * (PH - DP));
// return 1/DPL*(PH-PL)*fm*2*SQRT((sg)*(1-sg)); // return 1/DPL*(PH-PL)*fm*2*SQRT((sg)*(1-sg));
else else
return FM * 2 * std::sqrt((sg) * (1 - sg)); return FM * 2.0 * std::sqrt((sg) * (1.0 - sg));
else // powyzej stosunku krytycznego else // powyzej stosunku krytycznego
return FM; return FM;
} }
double PF1(double P1, double P2, double S) double PF1( double const P1, double const P2, double const S )
{ {
static double const DPS = 0.001; static double const DPS = 0.001;
@@ -82,8 +82,8 @@ double PF1(double P1, double P2, double S)
return FM; return FM;
} }
double PFVa(double PH, double PL, double S, double LIM, double PFVa( double PH, double PL, double const S, double LIM, double const DP )
double DP) // zawor napelniajacy z PH do PL, PL do LIM // zawor napelniajacy z PH do PL, PL do LIM
{ {
if (LIM > PL) if (LIM > PL)
{ {
@@ -106,8 +106,8 @@ double PFVa(double PH, double PL, double S, double LIM,
return 0; return 0;
} }
double PFVd(double PH, double PL, double S, double LIM, double PFVd( double PH, double PL, double const S, double LIM, double const DP )
double DP) // zawor wypuszczajacy z PH do PL, PH do LIM // zawor wypuszczajacy z PH do PL, PH do LIM
{ {
if (LIM < PH) if (LIM < PH)
{ {
@@ -304,13 +304,13 @@ TBrake::TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn
} }
// inicjalizacja hamulca (stan poczatkowy) // inicjalizacja hamulca (stan poczatkowy)
void TBrake::Init(double PP, double HPP, double LPP, double BP, int BDF) void TBrake::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
BrakeDelayFlag = BDF; BrakeDelayFlag = BDF;
} }
// pobranie wspolczynnika tarcia materialu // pobranie wspolczynnika tarcia materialu
double TBrake::GetFC(double Vel, double N) double TBrake::GetFC( double const Vel, double const N )
{ {
return FM->GetFC(N, Vel); return FM->GetFC(N, Vel);
} }
@@ -346,7 +346,7 @@ double TBrake::GetCRP()
} }
// przeplyw z przewodu glowneg // przeplyw z przewodu glowneg
double TBrake::GetPF(double PP, double dt, double Vel) double TBrake::GetPF( double const PP, double const dt, double const Vel )
{ {
ValveRes->Act(); ValveRes->Act();
BrakeCyl->Act(); BrakeCyl->Act();
@@ -355,7 +355,7 @@ double TBrake::GetPF(double PP, double dt, double Vel)
} }
// przeplyw z przewodu zasilajacego // przeplyw z przewodu zasilajacego
double TBrake::GetHPFlow(double HP, double dt) double TBrake::GetHPFlow( double const HP, double const dt )
{ {
return 0; return 0;
} }
@@ -365,7 +365,7 @@ double TBrake::GetBCF()
return BCA * 100 * BrakeCyl->P(); return BCA * 100 * BrakeCyl->P();
} }
bool TBrake::SetBDF(int nBDF) bool TBrake::SetBDF( int const nBDF )
{ {
if (((nBDF & BrakeDelays) == nBDF) && (nBDF != BrakeDelayFlag)) if (((nBDF & BrakeDelays) == nBDF) && (nBDF != BrakeDelayFlag))
{ {
@@ -376,16 +376,16 @@ bool TBrake::SetBDF(int nBDF)
return false; return false;
} }
void TBrake::Releaser(int state) void TBrake::Releaser( int const state )
{ {
BrakeStatus = (BrakeStatus & ~b_rls) | ( state * b_rls ); BrakeStatus = (BrakeStatus & ~b_rls) | ( state * b_rls );
} }
void TBrake::SetEPS(double nEPS) void TBrake::SetEPS( double const nEPS )
{ {
} }
void TBrake::ASB(int state) void TBrake::ASB( int const state )
{ // 255-b_asb(32) { // 255-b_asb(32)
BrakeStatus = (BrakeStatus & ~b_asb) | ( state * b_asb ); BrakeStatus = (BrakeStatus & ~b_asb) | ( state * b_asb );
} }
@@ -402,7 +402,7 @@ int TBrake::GetSoundFlag()
return result; return result;
} }
void TBrake::SetASBP(double Press) void TBrake::SetASBP( double const Press )
{ {
ASBP = Press; ASBP = Press;
} }
@@ -417,7 +417,7 @@ void TBrake::ForceEmptiness()
//---WESTINGHOUSE--- //---WESTINGHOUSE---
void TWest::Init(double PP, double HPP, double LPP, double BP, int BDF) void TWest::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
@@ -426,7 +426,7 @@ void TWest::Init(double PP, double HPP, double LPP, double BP, int BDF)
// BrakeStatus:=3*int(BP>0.1); // BrakeStatus:=3*int(BP>0.1);
} }
double TWest::GetPF(double PP, double dt, double Vel) double TWest::GetPF( double const PP, double const dt, double const Vel )
{ {
double dv; double dv;
double dV1; double dV1;
@@ -509,12 +509,12 @@ double TWest::GetPF(double PP, double dt, double Vel)
return dv - dV1; return dv - dV1;
} }
double TWest::GetHPFlow(double HP, double dt) double TWest::GetHPFlow( double const HP, double const dt )
{ {
return dVP; return dVP;
} }
void TWest::SetLBP(double P) void TWest::SetLBP( double const P )
{ {
LBP = P; LBP = P;
if (P > BrakeCyl->P()) if (P > BrakeCyl->P())
@@ -525,7 +525,7 @@ void TWest::SetLBP(double P)
// LBP:=P; // LBP:=P;
} }
void TWest::SetEPS(double nEPS) void TWest::SetEPS( double const nEPS )
{ {
double BCP; double BCP;
@@ -545,14 +545,14 @@ void TWest::SetEPS(double nEPS)
EPS = nEPS; EPS = nEPS;
} }
void TWest::PLC(double mass) void TWest::PLC( double const mass )
{ {
LoadC = 1 + LoadC = 1 +
int(mass < LoadM) * int(mass < LoadM) *
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1); ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
} }
void TWest::SetLP(double TM, double LM, double TBP) void TWest::SetLP( double const TM, double const LM, double const TBP )
{ {
TareM = TM; TareM = TM;
LoadM = LM; LoadM = LM;
@@ -560,7 +560,7 @@ void TWest::SetLP(double TM, double LM, double TBP)
} }
//---OERLIKON EST4--- //---OERLIKON EST4---
void TESt::CheckReleaser(double dt) void TESt::CheckReleaser( double const dt )
{ {
double VVP = std::min(ValveRes->P(), BrakeRes->P() + 0.05); double VVP = std::min(ValveRes->P(), BrakeRes->P() + 0.05);
double CVP = CntrlRes->P() - 0.0; double CVP = CntrlRes->P() - 0.0;
@@ -575,7 +575,7 @@ void TESt::CheckReleaser(double dt)
} }
} }
void TESt::CheckState(double BCP, double &dV1) void TESt::CheckState( double const BCP, double &dV1 )
{ {
double VVP; double VVP;
double BVP; double BVP;
@@ -618,7 +618,7 @@ void TESt::CheckState(double BCP, double &dV1)
SoundFlag |= sf_CylU; SoundFlag |= sf_CylU;
} }
double TESt::CVs(double BP) double TESt::CVs( double const BP )
{ {
double VVP; double VVP;
double BVP; double BVP;
@@ -642,7 +642,7 @@ double TESt::CVs(double BP)
return 0.3; return 0.3;
} }
double TESt::BVs(double BCP) double TESt::BVs( double const BCP )
{ {
double VVP; double VVP;
double BVP; double BVP;
@@ -664,7 +664,7 @@ double TESt::BVs(double BCP)
return 0; return 0;
} }
double TESt::GetPF(double PP, double dt, double Vel) double TESt::GetPF( double const PP, double const dt, double const Vel )
{ {
double dv; double dv;
double dV1; double dV1;
@@ -731,7 +731,7 @@ double TESt::GetPF(double PP, double dt, double Vel)
return dv - dV1; return dv - dV1;
} }
void TESt::Init(double PP, double HPP, double LPP, double BP, int BDF) void TESt::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
@@ -746,7 +746,7 @@ void TESt::Init(double PP, double HPP, double LPP, double BP, int BDF)
BrakeDelayFlag = BDF; BrakeDelayFlag = BDF;
} }
void TESt::EStParams(double i_crc) void TESt::EStParams( double const i_crc )
{ {
} }
@@ -757,7 +757,7 @@ double TESt::GetCRP()
//---EP2--- //---EP2---
void TEStEP2::Init(double PP, double HPP, double LPP, double BP, int BDF) void TEStEP2::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TLSt::Init(PP, HPP, LPP, BP, BDF); TLSt::Init(PP, HPP, LPP, BP, BDF);
ImplsRes->CreateCap(1); ImplsRes->CreateCap(1);
@@ -769,7 +769,7 @@ void TEStEP2::Init(double PP, double HPP, double LPP, double BP, int BDF)
BrakeDelays = bdelay_P; BrakeDelays = bdelay_P;
} }
double TEStEP2::GetPF(double PP, double dt, double Vel) double TEStEP2::GetPF( double const PP, double const dt, double const Vel )
{ {
double result; double result;
double dv; double dv;
@@ -880,21 +880,21 @@ double TEStEP2::GetPF(double PP, double dt, double Vel)
return result; return result;
} }
void TEStEP2::PLC(double mass) void TEStEP2::PLC( double const mass )
{ {
LoadC = 1 + LoadC = 1 +
int(mass < LoadM) * int(mass < LoadM) *
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1); ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
} }
void TEStEP2::SetEPS(double nEPS) void TEStEP2::SetEPS( double const nEPS )
{ {
EPS = nEPS; EPS = nEPS;
if ((EPS > 0) && (LBP + 0.01 < BrakeCyl->P())) if ((EPS > 0) && (LBP + 0.01 < BrakeCyl->P()))
LBP = BrakeCyl->P(); LBP = BrakeCyl->P();
} }
void TEStEP2::SetLP(double TM, double LM, double TBP) void TEStEP2::SetLP( double const TM, double const LM, double const TBP )
{ {
TareM = TM; TareM = TM;
LoadM = LM; LoadM = LM;
@@ -903,23 +903,15 @@ void TEStEP2::SetLP(double TM, double LM, double TBP)
//---EST3-- //---EST3--
double TESt3::GetPF(double PP, double dt, double Vel) double TESt3::GetPF( double const PP, double const dt, double const Vel )
{ {
double dv; double BVP{ BrakeRes->P() };
double dV1; double VVP{ ValveRes->P() };
double temp; double BCP{ BrakeCyl->P() };
double VVP; double CVP{ CntrlRes->P() - 0.0 };
double BVP;
double BCP;
double CVP;
BVP = BrakeRes->P(); double dv{ 0.0 };
VVP = ValveRes->P(); double dV1{ 0.0 };
BCP = BrakeCyl->P();
CVP = CntrlRes->P() - 0.0;
dv = 0;
dV1 = 0;
// sprawdzanie stanu // sprawdzanie stanu
CheckState(BCP, dV1); CheckState(BCP, dV1);
@@ -928,7 +920,7 @@ double TESt3::GetPF(double PP, double dt, double Vel)
CVP = CntrlRes->P(); CVP = CntrlRes->P();
VVP = ValveRes->P(); VVP = ValveRes->P();
// przeplyw ZS <-> PG // przeplyw ZS <-> PG
temp = CVs(BCP); double temp = CVs(BCP);
dv = PF(CVP, VVP, 0.0015 * temp) * dt; dv = PF(CVP, VVP, 0.0015 * temp) * dt;
CntrlRes->Flow(+dv); CntrlRes->Flow(+dv);
ValveRes->Flow(-0.04 * dv); ValveRes->Flow(-0.04 * dv);
@@ -936,16 +928,19 @@ double TESt3::GetPF(double PP, double dt, double Vel)
// luzowanie // luzowanie
if ((BrakeStatus & b_hld) == b_off) if ((BrakeStatus & b_hld) == b_off)
dv = PF(0, BCP, 0.0042 * (1.37 - int(BrakeDelayFlag == bdelay_G)) * SizeBC) * dt; dv = PF(0, BCP, 0.0042 * (1.37 - (BrakeDelayFlag == bdelay_G ? 1.0 : 0.0)) * SizeBC) * dt;
else else
dv = 0; dv = 0;
BrakeCyl->Flow(-dv); BrakeCyl->Flow(-dv);
// przeplyw ZP <-> silowniki // przeplyw ZP <-> silowniki
if ((BrakeStatus & b_on) == b_on) if ((BrakeStatus & b_on) == b_on)
dv = PF(BVP, BCP, dv = PF(
0.017 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) * BVP,
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) * BCP,
dt; 0.017 *
( 1.00 + ( ((BCP < 0.58) && (BrakeDelayFlag == bdelay_G)) ? 1.0 : 0.0 ) ) *
( 1.13 - ( ((BCP > 0.60) && (BrakeDelayFlag == bdelay_G)) ? 1.0 : 0.0 ) ) * SizeBC
) * dt;
else else
dv = 0; dv = 0;
BrakeRes->Flow(dv); BrakeRes->Flow(dv);
@@ -957,7 +952,7 @@ double TESt3::GetPF(double PP, double dt, double Vel)
else else
dv = 0; dv = 0;
BrakeRes->Flow(dv); BrakeRes->Flow(dv);
dV1 = dV1 + dv * 0.96; dV1 += dv * 0.96;
ValveRes->Flow(-0.04 * dv); ValveRes->Flow(-0.04 * dv);
// przeplyw PG <-> rozdzielacz // przeplyw PG <-> rozdzielacz
dv = PF(PP, VVP, 0.01) * dt; dv = PF(PP, VVP, 0.01) * dt;
@@ -972,7 +967,7 @@ double TESt3::GetPF(double PP, double dt, double Vel)
//---EST4-RAPID--- //---EST4-RAPID---
double TESt4R::GetPF(double PP, double dt, double Vel) double TESt4R::GetPF( double const PP, double const dt, double const Vel )
{ {
double result; double result;
double dv; double dv;
@@ -1032,7 +1027,9 @@ double TESt4R::GetPF(double PP, double dt, double Vel)
result = dv - dV1; result = dv - dV1;
RapidStatus = (BrakeDelayFlag == bdelay_R) && (((Vel > 55) && (RapidStatus)) || (Vel > 70)); RapidStatus = ( BrakeDelayFlag == bdelay_R )
&& ( ( ( Vel > 55 ) && ( RapidStatus == true ) )
|| ( Vel > 70 ) );
RapidTemp = RapidTemp + (0.9 * int(RapidStatus) - RapidTemp) * dt / 2; RapidTemp = RapidTemp + (0.9 * int(RapidStatus) - RapidTemp) * dt / 2;
temp = 1.9 - RapidTemp; temp = 1.9 - RapidTemp;
@@ -1066,7 +1063,7 @@ double TESt4R::GetPF(double PP, double dt, double Vel)
return result; return result;
} }
void TESt4R::Init(double PP, double HPP, double LPP, double BP, int BDF) void TESt4R::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TESt::Init(PP, HPP, LPP, BP, BDF); TESt::Init(PP, HPP, LPP, BP, BDF);
ImplsRes->CreateCap(1); ImplsRes->CreateCap(1);
@@ -1077,7 +1074,7 @@ void TESt4R::Init(double PP, double HPP, double LPP, double BP, int BDF)
//---EST3/AL2--- //---EST3/AL2---
double TESt3AL2::GetPF(double PP, double dt, double Vel) double TESt3AL2::GetPF( double const PP, double const dt, double const Vel )
{ {
double result; double result;
double dv; double dv;
@@ -1161,21 +1158,21 @@ double TESt3AL2::GetPF(double PP, double dt, double Vel)
return result; return result;
} }
void TESt3AL2::PLC(double mass) void TESt3AL2::PLC( double const mass )
{ {
LoadC = 1 + LoadC = 1 +
int(mass < LoadM) * int(mass < LoadM) *
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1); ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
} }
void TESt3AL2::SetLP(double TM, double LM, double TBP) void TESt3AL2::SetLP( double const TM, double const LM, double const TBP )
{ {
TareM = TM; TareM = TM;
LoadM = LM; LoadM = LM;
TareBP = TBP; TareBP = TBP;
} }
void TESt3AL2::Init(double PP, double HPP, double LPP, double BP, int BDF) void TESt3AL2::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TESt::Init(PP, HPP, LPP, BP, BDF); TESt::Init(PP, HPP, LPP, BP, BDF);
ImplsRes->CreateCap(1); ImplsRes->CreateCap(1);
@@ -1184,7 +1181,7 @@ void TESt3AL2::Init(double PP, double HPP, double LPP, double BP, int BDF)
//---LSt--- //---LSt---
double TLSt::GetPF(double PP, double dt, double Vel) double TLSt::GetPF( double const PP, double const dt, double const Vel )
{ {
double result; double result;
double dv; double dv;
@@ -1298,7 +1295,7 @@ double TLSt::GetPF(double PP, double dt, double Vel)
return result; return result;
} }
void TLSt::Init(double PP, double HPP, double LPP, double BP, int BDF) void TLSt::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TESt4R::Init(PP, HPP, LPP, BP, BDF); TESt4R::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreateCap(1); ValveRes->CreateCap(1);
@@ -1312,7 +1309,7 @@ void TLSt::Init(double PP, double HPP, double LPP, double BP, int BDF)
BrakeDelayFlag = BDF; BrakeDelayFlag = BDF;
} }
void TLSt::SetLBP(double P) void TLSt::SetLBP( double const P )
{ {
LBP = P; LBP = P;
} }
@@ -1327,17 +1324,17 @@ double TLSt::GetEDBCP()
return (CVP - BCP) * BVM; return (CVP - BCP) * BVM;
} }
void TLSt::SetED(double EDstate) void TLSt::SetED( double const EDstate )
{ {
EDFlag = EDstate; EDFlag = EDstate;
} }
void TLSt::SetRM(double RMR) void TLSt::SetRM( double const RMR )
{ {
RM = 1 - RMR; RM = 1 - RMR;
} }
double TLSt::GetHPFlow(double HP, double dt) double TLSt::GetHPFlow( double const HP, double const dt )
{ {
double dv; double dv;
@@ -1348,7 +1345,7 @@ double TLSt::GetHPFlow(double HP, double dt)
//---EStED--- //---EStED---
double TEStED::GetPF(double PP, double dt, double Vel) double TEStED::GetPF( double const PP, double const dt, double const Vel )
{ {
double dv; double dv;
double dV1; double dV1;
@@ -1496,7 +1493,7 @@ double TEStED::GetPF(double PP, double dt, double Vel)
return dv - dV1; return dv - dV1;
} }
void TEStED::Init(double PP, double HPP, double LPP, double BP, int BDF) void TEStED::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TLSt::Init(PP, HPP, LPP, BP, BDF); TLSt::Init(PP, HPP, LPP, BP, BDF);
int i; int i;
@@ -1546,14 +1543,14 @@ double TEStED::GetEDBCP()
return ImplsRes->P() * LoadC; return ImplsRes->P() * LoadC;
} }
void TEStED::PLC(double mass) void TEStED::PLC( double const mass )
{ {
LoadC = 1 + LoadC = 1 +
int(mass < LoadM) * int(mass < LoadM) *
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1); ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
} }
void TEStED::SetLP(double TM, double LM, double TBP) void TEStED::SetLP( double const TM, double const LM, double const TBP )
{ {
TareM = TM; TareM = TM;
LoadM = LM; LoadM = LM;
@@ -1562,7 +1559,7 @@ void TEStED::SetLP(double TM, double LM, double TBP)
//---DAKO CV1--- //---DAKO CV1---
void TCV1::CheckState(double BCP, double &dV1) void TCV1::CheckState( double const BCP, double &dV1 )
{ {
double VVP; double VVP;
double BVP; double BVP;
@@ -1595,7 +1592,7 @@ void TCV1::CheckState(double BCP, double &dV1)
BrakeStatus |= b_hld; BrakeStatus |= b_hld;
} }
double TCV1::CVs(double BP) double TCV1::CVs(double const BP)
{ {
// przeplyw ZS <-> PG // przeplyw ZS <-> PG
if ((BP > 0.05)) if ((BP > 0.05))
@@ -1604,7 +1601,7 @@ double TCV1::CVs(double BP)
return 0.23; return 0.23;
} }
double TCV1::BVs(double BCP) double TCV1::BVs( double const BCP )
{ {
double VVP; double VVP;
double BVP; double BVP;
@@ -1623,7 +1620,7 @@ double TCV1::BVs(double BCP)
return 0.2 * (1.5 - int(BVP > VVP)); return 0.2 * (1.5 - int(BVP > VVP));
} }
double TCV1::GetPF(double PP, double dt, double Vel) double TCV1::GetPF( double const PP, double const dt, double const Vel )
{ {
double dv; double dv;
double dV1; double dV1;
@@ -1690,7 +1687,7 @@ double TCV1::GetPF(double PP, double dt, double Vel)
return dv - dV1; return dv - dV1;
} }
void TCV1::Init(double PP, double HPP, double LPP, double BP, int BDF) void TCV1::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
@@ -1712,12 +1709,12 @@ double TCV1::GetCRP()
//---CV1-L-TR--- //---CV1-L-TR---
void TCV1L_TR::SetLBP(double P) void TCV1L_TR::SetLBP( double const P )
{ {
LBP = P; LBP = P;
} }
double TCV1L_TR::GetHPFlow(double HP, double dt) double TCV1L_TR::GetHPFlow( double const HP, double const dt )
{ {
double dv; double dv;
@@ -1727,14 +1724,14 @@ double TCV1L_TR::GetHPFlow(double HP, double dt)
return dv; return dv;
} }
void TCV1L_TR::Init(double PP, double HPP, double LPP, double BP, int BDF) void TCV1L_TR::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TCV1::Init(PP, HPP, LPP, BP, BDF); TCV1::Init(PP, HPP, LPP, BP, BDF);
ImplsRes->CreateCap(2.5); ImplsRes->CreateCap(2.5);
ImplsRes->CreatePress(BP); ImplsRes->CreatePress(BP);
} }
double TCV1L_TR::GetPF(double PP, double dt, double Vel) double TCV1L_TR::GetPF( double const PP, double const dt, double const Vel )
{ {
double result; double result;
double dv; double dv;
@@ -1821,7 +1818,7 @@ double TCV1L_TR::GetPF(double PP, double dt, double Vel)
} }
//--- KNORR KE --- //--- KNORR KE ---
void TKE::CheckReleaser(double dt) void TKE::CheckReleaser( double const dt )
{ {
double VVP; double VVP;
double CVP; double CVP;
@@ -1837,7 +1834,7 @@ void TKE::CheckReleaser(double dt)
CntrlRes->Flow(+PF(CVP, 0, 0.1) * dt); CntrlRes->Flow(+PF(CVP, 0, 0.1) * dt);
} }
void TKE::CheckState(double BCP, double &dV1) void TKE::CheckState( double const BCP, double &dV1 )
{ {
double VVP; double VVP;
double BVP; double BVP;
@@ -1866,7 +1863,7 @@ void TKE::CheckState(double BCP, double &dV1)
BrakeStatus |= b_hld; BrakeStatus |= b_hld;
} }
double TKE::CVs(double BP) double TKE::CVs( double const BP )
{ {
double VVP; double VVP;
double BVP; double BVP;
@@ -1885,7 +1882,7 @@ double TKE::CVs(double BP)
return 0.23; return 0.23;
} }
double TKE::BVs(double BCP) double TKE::BVs( double const BCP )
{ {
double VVP; double VVP;
double BVP; double BVP;
@@ -1904,7 +1901,7 @@ double TKE::BVs(double BCP)
return 0.13; return 0.13;
} }
double TKE::GetPF(double PP, double dt, double Vel) double TKE::GetPF( double const PP, double const dt, double const Vel )
{ {
double dv; double dv;
double dV1; double dV1;
@@ -2020,7 +2017,7 @@ double TKE::GetPF(double PP, double dt, double Vel)
return dv - dV1; return dv - dV1;
} }
void TKE::Init(double PP, double HPP, double LPP, double BP, int BDF) void TKE::Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
@@ -2045,7 +2042,7 @@ double TKE::GetCRP()
return CntrlRes->P(); return CntrlRes->P();
} }
double TKE::GetHPFlow(double HP, double dt) double TKE::GetHPFlow( double const HP, double const dt )
{ {
double dv; double dv;
@@ -2055,33 +2052,33 @@ double TKE::GetHPFlow(double HP, double dt)
return dv; return dv;
} }
void TKE::PLC(double mass) void TKE::PLC( double const mass )
{ {
LoadC = 1 + LoadC = 1 +
int(mass < LoadM) * int(mass < LoadM) *
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1); ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
} }
void TKE::SetLP(double TM, double LM, double TBP) void TKE::SetLP( double const TM, double const LM, double const TBP )
{ {
TareM = TM; TareM = TM;
LoadM = LM; LoadM = LM;
TareBP = TBP; TareBP = TBP;
} }
void TKE::SetRM(double RMR) void TKE::SetRM( double const RMR )
{ {
RM = 1.0 - RMR; RM = 1.0 - RMR;
} }
void TKE::SetLBP(double P) void TKE::SetLBP( double const P )
{ {
LBP = P; LBP = P;
} }
//---KRANY--- //---KRANY---
double TDriverHandle::GetPF(double i_bcp, double PP, double HP, double dt, double ep) double TDriverHandle::GetPF(double const i_bcp, double PP, double HP, double dt, double ep)
{ {
return 0; return 0;
} }

View File

@@ -191,30 +191,30 @@ class TBrake {
public: public:
TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa); TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa);
//maksymalne cisnienie, promien, skok roboczy, pojemnosc ZP, ilosc cylindrow, opoznienia hamulca, material klockow, osie hamowane, klocki na os; //maksymalne cisnienie, promien, skok roboczy, pojemnosc ZP, ilosc cylindrow, opoznienia hamulca, material klockow, osie hamowane, klocki na os;
virtual void Init(double PP, double HPP, double LPP, double BP, int BDF); //inicjalizacja hamulca virtual void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF ); //inicjalizacja hamulca
double GetFC(double Vel, double N); //wspolczynnik tarcia - hamulec wie lepiej double GetFC( double const Vel, double const N ); //wspolczynnik tarcia - hamulec wie lepiej
virtual double GetPF(double PP, double dt, double Vel); //przeplyw miedzy komora wstepna i PG virtual double GetPF( double const PP, double const dt, double const Vel ); //przeplyw miedzy komora wstepna i PG
double GetBCF(); //sila tlokowa z tloka double GetBCF(); //sila tlokowa z tloka
virtual double GetHPFlow(double HP, double dt); //przeplyw - 8 bar virtual double GetHPFlow( double const HP, double const dt ); //przeplyw - 8 bar
double GetBCP(); //cisnienie cylindrow hamulcowych double GetBCP(); //cisnienie cylindrow hamulcowych
virtual double GetEDBCP(); //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09 virtual double GetEDBCP(); //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
double GetBRP(); //cisnienie zbiornika pomocniczego double GetBRP(); //cisnienie zbiornika pomocniczego
double GetVRP(); //cisnienie komory wstepnej rozdzielacza double GetVRP(); //cisnienie komory wstepnej rozdzielacza
virtual double GetCRP(); //cisnienie zbiornika sterujacego virtual double GetCRP(); //cisnienie zbiornika sterujacego
bool SetBDF(int nBDF); //nastawiacz GPRM bool SetBDF( int const nBDF ); //nastawiacz GPRM
void Releaser(int state); //odluzniacz void Releaser( int const state ); //odluzniacz
virtual void SetEPS(double nEPS); //hamulec EP virtual void SetEPS( double const nEPS ); //hamulec EP
virtual void SetRM(double RMR) {}; //ustalenie przelozenia rapida virtual void SetRM( double const RMR ) {}; //ustalenie przelozenia rapida
virtual void SetLP(double TM, double LM, double TBP) {}; //parametry przystawki wazacej virtual void SetLP(double const TM, double const LM, double const TBP) {}; //parametry przystawki wazacej
virtual void SetLBP(double P) {}; //cisnienie z hamulca pomocniczego virtual void SetLBP(double const P) {}; //cisnienie z hamulca pomocniczego
virtual void PLC(double mass) {}; //wspolczynnik cisnienia przystawki wazacej virtual void PLC(double const mass) {}; //wspolczynnik cisnienia przystawki wazacej
void ASB(int state); //hamulec przeciwposlizgowy void ASB(int state); //hamulec przeciwposlizgowy
int GetStatus(); //flaga statusu, moze sie przydac do odglosow int GetStatus(); //flaga statusu, moze sie przydac do odglosow
void SetASBP(double Press); //ustalenie cisnienia pp void SetASBP( double const Press ); //ustalenie cisnienia pp
virtual void ForceEmptiness(); virtual void ForceEmptiness();
int GetSoundFlag(); int GetSoundFlag();
virtual void SetED(double EDstate) {}; //stan hamulca ED do luzowania virtual void SetED( double const EDstate ) {}; //stan hamulca ED do luzowania
}; };
class TWest : public TBrake { class TWest : public TBrake {
@@ -229,13 +229,13 @@ class TWest : public TBrake {
double LoadC = 0.0; //wspolczynnik przystawki wazacej double LoadC = 0.0; //wspolczynnik przystawki wazacej
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
void SetLBP(double P); //cisnienie z hamulca pomocniczego void SetLBP(double const P); //cisnienie z hamulca pomocniczego
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
double GetHPFlow(double HP, double dt)/*override*/; double GetHPFlow( double const HP, double const dt )/*override*/;
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej void PLC(double const mass); //wspolczynnik cisnienia przystawki wazacej
void SetEPS(double nEPS)/*override*/; //stan hamulca EP void SetEPS( double const nEPS )/*override*/; //stan hamulca EP
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej void SetLP(double const TM, double const LM, double const TBP); //parametry przystawki wazacej
inline TWest(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TWest(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -251,8 +251,8 @@ class TESt : public TBrake {
double BVM = 0.0; // przelozenie PG-CH double BVM = 0.0; // przelozenie PG-CH
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
void EStParams(double i_crc); //parametry charakterystyczne dla ESt void EStParams(double i_crc); //parametry charakterystyczne dla ESt
double GetCRP()/*override*/; double GetCRP()/*override*/;
void CheckState(double BCP, double & dV1); //glowny przyrzad rozrzadczy void CheckState(double BCP, double & dV1); //glowny przyrzad rozrzadczy
@@ -273,7 +273,7 @@ class TESt3 : public TESt {
//double CylFlowSpeed[2][2]; //zmienna nie uzywana //double CylFlowSpeed[2][2]; //zmienna nie uzywana
public: public:
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
inline TESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TESt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TESt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -290,10 +290,10 @@ class TESt3AL2 : public TESt3 {
double LoadC = 0.0; double LoadC = 0.0;
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej void PLC(double const mass); //wspolczynnik cisnienia przystawki wazacej
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej void SetLP(double const TM, double const LM, double const TBP); //parametry przystawki wazacej
inline TESt3AL2(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TESt3AL2(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TESt3( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TESt3( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -312,8 +312,8 @@ class TESt4R : public TESt {
double RapidTemp = 0.0; //aktualne, zmienne przelozenie double RapidTemp = 0.0; //aktualne, zmienne przelozenie
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
inline TESt4R(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TESt4R(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TESt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TESt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -333,13 +333,13 @@ class TLSt : public TESt4R {
double EDFlag = 0.0; //luzowanie hamulca z powodu zalaczonego ED double EDFlag = 0.0; //luzowanie hamulca z powodu zalaczonego ED
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
void SetLBP(double P); //cisnienie z hamulca pomocniczego void SetLBP(double const P); //cisnienie z hamulca pomocniczego
void SetRM(double RMR); //ustalenie przelozenia rapida void SetRM( double const RMR ); //ustalenie przelozenia rapida
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
double GetHPFlow(double HP, double dt)/*override*/; //przeplyw - 8 bar double GetHPFlow( double const HP, double const dt )/*override*/; //przeplyw - 8 bar
virtual double GetEDBCP(); //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09 virtual double GetEDBCP(); //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED w EP09
virtual void SetED(double EDstate); //stan hamulca ED do luzowania virtual void SetED( double const EDstate ); //stan hamulca ED do luzowania
inline TLSt(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TLSt(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TESt4R( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TESt4R( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -360,11 +360,11 @@ class TEStED : public TLSt { //zawor z EP09 - Est4 z oddzielnym przekladnikiem,
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
double GetEDBCP()/*override*/; //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED double GetEDBCP()/*override*/; //cisnienie tylko z hamulca zasadniczego, uzywane do hamulca ED
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej void PLC(double const mass); //wspolczynnik cisnienia przystawki wazacej
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej void SetLP( double const TM, double const LM, double const TBP ); //parametry przystawki wazacej
inline TEStED(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TEStED(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TLSt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TLSt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -375,20 +375,19 @@ class TEStED : public TLSt { //zawor z EP09 - Est4 z oddzielnym przekladnikiem,
class TEStEP2 : public TLSt { class TEStEP2 : public TLSt {
private: private:
double TareM = 0.0; //masa proznego double TareM = 0.0; //masa proznego
double LoadM = 0.0; //masa pelnego double LoadM = 0.0; //masa pelnego
double TareBP = 0.0; //cisnienie dla proznego double TareBP = 0.0; //cisnienie dla proznego
double LoadC = 0.0; double LoadC = 0.0;
double EPS = 0.0; double EPS = 0.0;
public:
public: void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/; //inicjalizacja
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; //inicjalizacja double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG void PLC( double const mass ); //wspolczynnik cisnienia przystawki wazacej
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej void SetEPS( double const nEPS )/*override*/; //stan hamulca EP
void SetEPS(double nEPS)/*override*/; //stan hamulca EP void SetLP( double const TM, double const LM, double const TBP ); //parametry przystawki wazacej
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej
inline TEStEP2(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TEStEP2(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TLSt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TLSt( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -397,19 +396,19 @@ class TEStEP2 : public TLSt {
class TCV1 : public TBrake { class TCV1 : public TBrake {
private: private:
double BVM = 0.0; //przelozenie PG-CH double BVM = 0.0; //przelozenie PG-CH
protected: protected:
std::shared_ptr<TReservoir> CntrlRes; // zbiornik sterujący std::shared_ptr<TReservoir> CntrlRes; // zbiornik sterujący
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
double GetCRP()/*override*/; double GetCRP()/*override*/;
void CheckState(double BCP, double & dV1); void CheckState( double const BCP, double &dV1 );
double CVs(double BP); double CVs( double const BP );
double BVs(double BCP); double BVs( double const BCP );
inline TCV1(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TCV1(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -437,15 +436,15 @@ class TCV1 : public TBrake {
class TCV1L_TR : public TCV1 { class TCV1L_TR : public TCV1 {
private: private:
std::shared_ptr<TReservoir> ImplsRes; //komora impulsowa std::shared_ptr<TReservoir> ImplsRes; //komora impulsowa
double LBP = 0.0; //cisnienie hamulca pomocniczego double LBP = 0.0; //cisnienie hamulca pomocniczego
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
void SetLBP(double P); //cisnienie z hamulca pomocniczego void SetLBP( double const P ); //cisnienie z hamulca pomocniczego
double GetHPFlow(double HP, double dt)/*override*/; //przeplyw - 8 bar double GetHPFlow( double const HP, double const dt )/*override*/; //przeplyw - 8 bar
inline TCV1L_TR(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TCV1L_TR(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TCV1( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TCV1( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -470,18 +469,18 @@ class TKE : public TBrake { //Knorr Einheitsbauart — jeden do wszystkiego
double LBP = 0.0; //cisnienie hamulca pomocniczego double LBP = 0.0; //cisnienie hamulca pomocniczego
public: public:
void Init(double PP, double HPP, double LPP, double BP, int BDF)/*override*/; void Init( double const PP, double const HPP, double const LPP, double const BP, int const BDF )/*override*/;
void SetRM(double RMR); //ustalenie przelozenia rapida void SetRM( double const RMR ); //ustalenie przelozenia rapida
double GetPF(double PP, double dt, double Vel)/*override*/; //przeplyw miedzy komora wstepna i PG double GetPF( double const PP, double const dt, double const Vel )/*override*/; //przeplyw miedzy komora wstepna i PG
double GetHPFlow(double HP, double dt)/*override*/; //przeplyw - 8 bar double GetHPFlow( double const HP, double const dt )/*override*/; //przeplyw - 8 bar
double GetCRP()/*override*/; double GetCRP()/*override*/;
void CheckState(double BCP, double & dV1); void CheckState( double const BCP, double &dV1 );
void CheckReleaser(double dt); //odluzniacz void CheckReleaser( double const dt ); //odluzniacz
double CVs(double BP); //napelniacz sterujacego double CVs( double const BP ); //napelniacz sterujacego
double BVs(double BCP); //napelniacz pomocniczego double BVs( double const BCP ); //napelniacz pomocniczego
void PLC(double mass); //wspolczynnik cisnienia przystawki wazacej void PLC( double const mass ); //wspolczynnik cisnienia przystawki wazacej
void SetLP(double TM, double LM, double TBP); //parametry przystawki wazacej void SetLP( double const TM, double const LM, double const TBP ); //parametry przystawki wazacej
void SetLBP(double P); //cisnienie z hamulca pomocniczego void SetLBP( double const P ); //cisnienie z hamulca pomocniczego
inline TKE(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : inline TKE(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) :
TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa) TBrake( i_mbp, i_bcr, i_bcd, i_brc, i_bcn, i_BD, i_mat, i_ba, i_nbpa)
@@ -742,8 +741,8 @@ class TFVel6 : public TDriverHandle {
}; };
extern double PF(double P1, double P2, double S, double DP = 0.25); extern double PF( double const P1, double const P2, double const S, double const DP = 0.25 );
extern double PF1(double P1, double P2, double S); extern double PF1( double const P1, double const P2, double const S );
extern double PFVa(double PH, double PL, double S, double LIM, double DP = 0.1); //zawor napelniajacy z PH do PL, PL do LIM extern double PFVa( double PH, double PL, double const S, double LIM, double const DP = 0.1 ); //zawor napelniajacy z PH do PL, PL do LIM
extern double PFVd(double PH, double PL, double S, double LIM, double DP = 0.1); //zawor wypuszczajacy z PH do PL, PH do LIM extern double PFVd( double PH, double PL, double const S, double LIM, double const DP = 0.1 ); //zawor wypuszczajacy z PH do PL, PH do LIM

View File

@@ -35,6 +35,8 @@ Obiekty sortowane wg nazw, można dodawać i usuwać komórki scenerii:
*/ */
#ifdef EU07_USE_OLD_TNAMES_CLASS
void ItemRecord::TreeAdd(ItemRecord *r, int c) void ItemRecord::TreeAdd(ItemRecord *r, int c)
{ // dodanie rekordu do drzewa - ustalenie w której gałęzi { // dodanie rekordu do drzewa - ustalenie w której gałęzi
// zapisać w (iFlags) ile znaków jest zgodnych z nadrzędnym, żeby nie sprawdzać wszystkich od // zapisać w (iFlags) ile znaków jest zgodnych z nadrzędnym, żeby nie sprawdzać wszystkich od
@@ -183,3 +185,5 @@ ItemRecord * TNames::FindRecord(const int t, const char *n)
{ // poszukiwanie rekordu w celu np. zmiany wskaźnika { // poszukiwanie rekordu w celu np. zmiany wskaźnika
return rTypes[t] ? rTypes[t]->TreeFindRecord(n) : NULL; return rTypes[t] ? rTypes[t]->TreeFindRecord(n) : NULL;
}; };
#endif

View File

@@ -11,6 +11,8 @@ http://mozilla.org/MPL/2.0/.
#include <unordered_map> #include <unordered_map>
#include <string> #include <string>
#ifndef EU07_USE_OLD_TNAMES_CLASS
template <typename _Pointer> template <typename _Pointer>
class TNames { class TNames {
@@ -65,7 +67,8 @@ private:
pointermap_map m_maps; // list of pointer maps of types specified so far pointermap_map m_maps; // list of pointer maps of types specified so far
}; };
#ifdef EU07_USE_OLD_TNAMES_CLASS #else
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
class ItemRecord class ItemRecord
{ // rekord opisujący obiekt; raz utworzony nie przemieszcza się { // rekord opisujący obiekt; raz utworzony nie przemieszcza się

View File

@@ -303,7 +303,7 @@ TTexturesManager::AlphaValue TTexturesManager::LoadBMP(std::string const &fileNa
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
if( true == GLEW_VERSION_1_4 ) { if( GLEW_VERSION_1_4 ) {
glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE ); glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE );
} }
// This is specific to the binary format of the data read in. // This is specific to the binary format of the data read in.
@@ -784,6 +784,15 @@ TTexturesManager::AlphaValue TTexturesManager::LoadDDS(std::string fileName, int
data.width /= 2; data.width /= 2;
data.height /= 2; data.height /= 2;
}; };
if( ( data.numMipMaps == 1 )
&& ( GLEW_VERSION_1_4 ) ) {
// generate missing mipmaps for the updated render path
// TODO, TBD: skip this for UI images
glGenerateMipmap( GL_TEXTURE_2D );
WriteLog( "Warning - generating missing mipmaps for " + fileName );
}
delete[] data.pixels; delete[] data.pixels;
return std::make_pair(id, data.components == 4); return std::make_pair(id, data.components == 4);
}; };
@@ -823,39 +832,46 @@ void TTexturesManager::SetFiltering(int filter)
void TTexturesManager::SetFiltering(bool alpha, bool hash) void TTexturesManager::SetFiltering(bool alpha, bool hash)
{ {
if (alpha || hash) if( GLEW_VERSION_1_4 ) {
{
if (alpha) // przezroczystosc: nie wlaczac mipmapingu glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
{ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
if (hash) // #: calkowity brak filtracji - pikseloza
{ if( true == hash ) {
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); // #: sharpen more
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexEnvf( GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, -2.0 );
} }
else else {
// regular texture sharpening
glTexEnvf( GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, -1.0 );
}
}
else {
// legacy version, for ancient systems
if( alpha || hash ) {
if( alpha ) // przezroczystosc: nie wlaczac mipmapingu
{ {
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); if( hash ) // #: calkowity brak filtracji - pikseloza
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); {
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
}
else {
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
} }
} }
else // filtruj ale bez dalekich mipmap - robi artefakty else // filtruj ale bez dalekich mipmap - robi artefakty
{ {
/* glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
*/
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
} }
} }
else // $: filtruj wszystko - brzydko się zlewa else // $: filtruj wszystko - brzydko się zlewa
{ {
/* glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); }
*/
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
} }
}; };
@@ -873,18 +889,25 @@ GLuint TTexturesManager::CreateTexture(GLubyte *buff, GLint bpp, int width, int
SetFiltering(filter); // cyfra po % w nazwie SetFiltering(filter); // cyfra po % w nazwie
else else
SetFiltering(bHasAlpha && bDollar, bHash); // znaki #, $ i kanał alfa w nazwie SetFiltering(bHasAlpha && bDollar, bHash); // znaki #, $ i kanał alfa w nazwie
if( true == GLEW_VERSION_1_4 ) {
glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE );
}
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
/* if (bHasAlpha || bHash || (filter == 0))
*/ glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, bpp, if( GLEW_VERSION_1_4 ) {
GL_UNSIGNED_BYTE, buff);
// else glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE );
// gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, width, height, bpp, GL_UNSIGNED_BYTE, buff); glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, bpp, GL_UNSIGNED_BYTE, buff );
}
else {
// legacy version, for ancient systems
if( bHasAlpha || bHash || ( filter == 0 ) )
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, bpp, GL_UNSIGNED_BYTE, buff );
else
gluBuild2DMipmaps( GL_TEXTURE_2D, GL_RGB, width, height, bpp, GL_UNSIGNED_BYTE, buff );
}
return ID; return ID;
} }

View File

@@ -114,6 +114,7 @@
<ClCompile Include="MemCell.cpp" /> <ClCompile Include="MemCell.cpp" />
<ClCompile Include="Model3d.cpp" /> <ClCompile Include="Model3d.cpp" />
<ClCompile Include="mtable.cpp" /> <ClCompile Include="mtable.cpp" />
<ClCompile Include="Names.cpp" />
<ClCompile Include="opengl\ARB_Multisample.cpp" /> <ClCompile Include="opengl\ARB_Multisample.cpp" />
<ClCompile Include="parser.cpp" /> <ClCompile Include="parser.cpp" />
<ClCompile Include="PyInt.cpp" /> <ClCompile Include="PyInt.cpp" />
@@ -205,6 +206,10 @@
<ItemGroup> <ItemGroup>
<Image Include="eu07.ico" /> <Image Include="eu07.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="ClassDiagram.cd" />
<None Include="ClassDiagram1.cd" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>

View File

@@ -186,6 +186,9 @@
<ClCompile Include="Console\MWD.cpp"> <ClCompile Include="Console\MWD.cpp">
<Filter>Source Files\console</Filter> <Filter>Source Files\console</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Names.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="opengl\glew.h"> <ClInclude Include="opengl\glew.h">
@@ -373,4 +376,8 @@
<Filter>Resource Files</Filter> <Filter>Resource Files</Filter>
</Image> </Image>
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="ClassDiagram.cd" />
<None Include="ClassDiagram1.cd" />
</ItemGroup>
</Project> </Project>