mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 16:19:19 +02:00
Kompiluje się do DynamicObject. Prace nad TMoverParameters.
This commit is contained in:
@@ -172,7 +172,7 @@ static int const sound_relay = 16;
|
||||
static int const sound_manyrelay = 32;
|
||||
static int const sound_brakeacc = 64;
|
||||
|
||||
static bool const PhysicActivationFlag = false;
|
||||
static bool PhysicActivationFlag = false;
|
||||
|
||||
//szczególne typy pojazdów (inna obsługa) dla zmiennej TrainType
|
||||
//zamienione na flagi bitowe, aby szybko wybierać grupę (np. EZT+SZT)
|
||||
@@ -879,7 +879,7 @@ public:
|
||||
int iProblem; // flagi problemów z taborem, aby AI nie musiało porównywać; 0=może jechać
|
||||
int iLights[2]; // bity zapalonych świateł tutaj, żeby dało się liczyć pobór prądu
|
||||
private:
|
||||
double CouplerDist(Byte Coupler);
|
||||
double CouplerDist(int Coupler);
|
||||
|
||||
public:
|
||||
TMoverParameters(double VelInitial, std::string TypeNameInit, std::string NameInit, int LoadInitial, std::string LoadTypeInitial, int Cab);
|
||||
@@ -1050,7 +1050,7 @@ public:
|
||||
TPowerType PowerDecode(std::string s); //Q 20160719
|
||||
TEngineTypes EngineDecode(std::string s); //Q 20160721
|
||||
bool CreateBrakeSys(); //Q 20160722
|
||||
bool CheckLocomotiveParametersQ(bool ReadyFlag, int Dir);
|
||||
bool CheckLocomotiveParameters(bool ReadyFlag, int Dir);
|
||||
std::string EngineDescription(int what);
|
||||
};
|
||||
|
||||
|
||||
@@ -52,6 +52,39 @@ double sqr(double val) // SQR() zle liczylo w current() ...
|
||||
return val * val;
|
||||
}
|
||||
|
||||
double ComputeCollision(double v1, double v2, double m1, double m2, double beta, bool vc)
|
||||
{ // oblicza zmiane predkosci i przyrost pedu wskutek kolizji
|
||||
if (v1 < v2 && vc)
|
||||
return 0;
|
||||
else
|
||||
{
|
||||
double sum = m1 + m2;
|
||||
double w1 = ((m1 - m2) * v1 + 2 * m2 * v2) / sum;
|
||||
double w2 = ((m2 - m1) * v2 + 2 * m1 * v1) / sum;
|
||||
v1 = w1 * sqrt(1 - beta); // niejawna zmiana predkosci wskutek zderzenia
|
||||
v2 = w2 * sqrt(1 - beta);
|
||||
return m1 * (w2 - w1) * (1 - beta);
|
||||
}
|
||||
}
|
||||
|
||||
int DirPatch(int Coupler1, int Coupler2)
|
||||
{
|
||||
return (Coupler1 != Coupler2 ? 1 : -1);
|
||||
}
|
||||
|
||||
int DirF(int CouplerN)
|
||||
{
|
||||
switch (CouplerN)
|
||||
{
|
||||
case 0:
|
||||
return -1;
|
||||
case 1:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// *************************************************************************************************
|
||||
// Q: 20160716
|
||||
// *************************************************************************************************
|
||||
@@ -284,7 +317,7 @@ TMoverParameters::TMoverParameters(double VelInitial, std::string TypeNameInit,
|
||||
BrakeCtrlPosNo = 0;
|
||||
LightsPosNo = 0;
|
||||
LightsDefPos = 1;
|
||||
for (k = -1; k < Hamulce::MainBrakeMaxPos; k++)
|
||||
for (k = -1; k < MainBrakeMaxPos; k++)
|
||||
{
|
||||
BrakePressureTable[k].PipePressureVal = 0;
|
||||
BrakePressureTable[k].BrakePressureVal = 0;
|
||||
@@ -2464,9 +2497,9 @@ bool TMoverParameters::DecBrakeLevelOld(void)
|
||||
bool TMoverParameters::IncLocalBrakeLevel(int CtrlSpeed)
|
||||
{
|
||||
bool IBL;
|
||||
if ((LocalBrakePos < Hamulce::LocalBrakePosNo) /*and (BrakeCtrlPos<1)*/)
|
||||
if ((LocalBrakePos < LocalBrakePosNo) /*and (BrakeCtrlPos<1)*/)
|
||||
{
|
||||
while ((LocalBrakePos < Hamulce::LocalBrakePosNo) && (CtrlSpeed > 0))
|
||||
while ((LocalBrakePos < LocalBrakePosNo) && (CtrlSpeed > 0))
|
||||
{
|
||||
LocalBrakePos++;
|
||||
CtrlSpeed--;
|
||||
@@ -2508,9 +2541,9 @@ bool TMoverParameters::DecLocalBrakeLevel(int CtrlSpeed)
|
||||
bool TMoverParameters::IncLocalBrakeLevelFAST(void)
|
||||
{
|
||||
bool ILBLF;
|
||||
if (LocalBrakePos < Hamulce::LocalBrakePosNo)
|
||||
if (LocalBrakePos < LocalBrakePosNo)
|
||||
{
|
||||
LocalBrakePos = Hamulce::LocalBrakePosNo;
|
||||
LocalBrakePos = LocalBrakePosNo;
|
||||
ILBLF = true;
|
||||
}
|
||||
else
|
||||
@@ -2972,7 +3005,7 @@ void TMoverParameters::UpdatePipePressure(double dt)
|
||||
if ((BrakeCtrlPosNo > 1) && (ActiveCab != 0))
|
||||
// with BrakePressureTable[BrakeCtrlPos] do
|
||||
{
|
||||
dpLocalValve = LocHandle->GetPF(LocalBrakePos / Hamulce::LocalBrakePosNo, Hamulec->GetBCP(),
|
||||
dpLocalValve = LocHandle->GetPF(LocalBrakePos / LocalBrakePosNo, Hamulec->GetBCP(),
|
||||
ScndPipePress, dt, 0);
|
||||
if ((BrakeHandle == FV4a) &&
|
||||
((PipePress < 2.75) && ((Hamulec->GetStatus() && b_rls) == 0)) &&
|
||||
@@ -5378,25 +5411,25 @@ int nSize;
|
||||
|
||||
int ti(std::string val)
|
||||
{
|
||||
return StrToInt(val);
|
||||
return atoi(val.c_str());
|
||||
}
|
||||
|
||||
double td(std::string val)
|
||||
{
|
||||
return val.ToDouble();
|
||||
return atof(val.c_str());
|
||||
}
|
||||
|
||||
std::string ts(std::string val)
|
||||
{
|
||||
// WriteLog("["+ val + "]");
|
||||
|
||||
return (std::string(val));
|
||||
return val;
|
||||
// else return "unknown";
|
||||
}
|
||||
|
||||
std::string tS(std::string val)
|
||||
{
|
||||
return (val.UpperCase());
|
||||
return ToUpper(val);
|
||||
}
|
||||
|
||||
// *************************************************************************************************
|
||||
@@ -6768,7 +6801,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
|
||||
// Q: 20160717
|
||||
// *************************************************************************************************
|
||||
|
||||
bool TMoverParameters::CheckLocomotiveParametersQ(bool ReadyFlag, int Dir)
|
||||
bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
{
|
||||
bool OK;
|
||||
int b;
|
||||
|
||||
@@ -18,6 +18,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <time.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
@@ -69,6 +70,12 @@ inline int Random()
|
||||
return rand();
|
||||
}
|
||||
|
||||
inline float random(float a, float b)
|
||||
{
|
||||
srand(time(NULL));
|
||||
return a + rand() / (float)RAND_MAX * (b - a);
|
||||
}
|
||||
|
||||
inline double BorlandTime()
|
||||
{
|
||||
std::tm epoch;
|
||||
@@ -108,7 +115,11 @@ void ComputeArc(double X0, double Y0, double Xn, double Yn, double R, double L,
|
||||
/*wylicza polozenie Xout Yout i orientacje phi punktu na elemencie dL luku*/
|
||||
void ComputeALine(double X0, double Y0, double Xn, double Yn, double L, double R, double & Xout, double & Yout);
|
||||
|
||||
|
||||
inline bool fileExist(const std::string &name)
|
||||
{
|
||||
struct stat buffer;
|
||||
return (stat(name.c_str(), &buffer) == 0);
|
||||
}
|
||||
|
||||
double Xmin; double Ymin; double Xmax; double Ymax;
|
||||
double Xaspect; double Yaspect;
|
||||
|
||||
Reference in New Issue
Block a user