16
0
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:
firleju
2016-10-25 22:46:26 +02:00
parent 28d5be7363
commit 1491681576
27 changed files with 638 additions and 530 deletions

View File

@@ -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);
};

View File

@@ -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;

View File

@@ -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;