mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 13:59:19 +02:00
AI now uses EIMCtrlType no 1 and 2 correctly
This commit is contained in:
committed by
tmj-fstate
parent
05f0fbb7dd
commit
b8ff8703c5
72
Driver.cpp
72
Driver.cpp
@@ -2789,7 +2789,7 @@ bool TController::IncBrake()
|
|||||||
OK = mvOccupied->BrakeLevelAdd(1.0);
|
OK = mvOccupied->BrakeLevelAdd(1.0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
OK = mvOccupied->IncLocalBrakeLevel(1);
|
OK = IncBrakeEIM();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( mvOccupied->fBrakeCtrlPos != mvOccupied->Handle->GetPos( bh_EPB ) ) {
|
else if( mvOccupied->fBrakeCtrlPos != mvOccupied->Handle->GetPos( bh_EPB ) ) {
|
||||||
@@ -2807,6 +2807,28 @@ bool TController::IncBrake()
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TController::IncBrakeEIM()
|
||||||
|
{ // zwiększenie hamowania
|
||||||
|
bool OK = false;
|
||||||
|
switch (mvControlling->EIMCtrlType)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
OK = mvControlling->IncLocalBrakeLevel(1);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
OK = mvControlling->MainCtrlPos > 0;
|
||||||
|
if (OK)
|
||||||
|
mvControlling->MainCtrlPos = 0;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
OK = mvControlling->MainCtrlPos > 1;
|
||||||
|
if (OK)
|
||||||
|
mvControlling->MainCtrlPos = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
bool TController::DecBrake()
|
bool TController::DecBrake()
|
||||||
{ // zmniejszenie siły hamowania
|
{ // zmniejszenie siły hamowania
|
||||||
bool OK = false;
|
bool OK = false;
|
||||||
@@ -2844,7 +2866,7 @@ bool TController::DecBrake()
|
|||||||
OK = mvOccupied->BrakeLevelAdd(-1.0);
|
OK = mvOccupied->BrakeLevelAdd(-1.0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
OK = mvOccupied->DecLocalBrakeLevel(1);
|
OK = DecBrakeEIM();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mvOccupied->fBrakeCtrlPos != mvOccupied->Handle->GetPos(bh_EPR))
|
else if (mvOccupied->fBrakeCtrlPos != mvOccupied->Handle->GetPos(bh_EPR))
|
||||||
@@ -2863,6 +2885,28 @@ bool TController::DecBrake()
|
|||||||
return OK;
|
return OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool TController::DecBrakeEIM()
|
||||||
|
{ // zmniejszenie siły hamowania
|
||||||
|
bool OK = false;
|
||||||
|
switch (mvControlling->EIMCtrlType)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
OK = mvControlling->DecLocalBrakeLevel(1);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
OK = mvControlling->MainCtrlPos < 2;
|
||||||
|
if (OK)
|
||||||
|
mvControlling->MainCtrlPos = 2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
OK = mvControlling->MainCtrlPos < 3;
|
||||||
|
if (OK)
|
||||||
|
mvControlling->MainCtrlPos = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
bool TController::IncSpeed()
|
bool TController::IncSpeed()
|
||||||
{ // zwiększenie prędkości; zwraca false, jeśli dalej się nie da zwiększać
|
{ // zwiększenie prędkości; zwraca false, jeśli dalej się nie da zwiększać
|
||||||
if( true == tsGuardSignal.is_playing() ) {
|
if( true == tsGuardSignal.is_playing() ) {
|
||||||
@@ -3075,7 +3119,7 @@ bool TController::DecSpeed(bool force)
|
|||||||
OK = mvControlling->DecMainCtrl(2 + (mvControlling->MainCtrlPos / 2));
|
OK = mvControlling->DecMainCtrl(2 + (mvControlling->MainCtrlPos / 2));
|
||||||
break;
|
break;
|
||||||
case TEngineType::ElectricInductionMotor:
|
case TEngineType::ElectricInductionMotor:
|
||||||
OK = mvControlling->DecMainCtrl(1);
|
OK = DecSpeedEIM();
|
||||||
break;
|
break;
|
||||||
case TEngineType::WheelsDriven:
|
case TEngineType::WheelsDriven:
|
||||||
if (!mvControlling->CabNo)
|
if (!mvControlling->CabNo)
|
||||||
@@ -3102,6 +3146,28 @@ bool TController::DecSpeed(bool force)
|
|||||||
return OK;
|
return OK;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool TController::DecSpeedEIM()
|
||||||
|
{ // zmniejszenie prędkości (ale nie hamowanie)
|
||||||
|
bool OK = false; // domyślnie false, aby wyszło z pętli while
|
||||||
|
switch (mvControlling->EIMCtrlType)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
OK = mvControlling->DecMainCtrl(1);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
OK = mvControlling->MainCtrlPos > 4;
|
||||||
|
if (OK)
|
||||||
|
mvControlling->MainCtrlPos = 4;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
OK = mvControlling->MainCtrlPos > 2;
|
||||||
|
if (OK)
|
||||||
|
mvControlling->MainCtrlPos = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
void TController::SpeedSet()
|
void TController::SpeedSet()
|
||||||
{ // Ra: regulacja prędkości, wykonywana w każdym przebłysku świadomości AI
|
{ // Ra: regulacja prędkości, wykonywana w każdym przebłysku świadomości AI
|
||||||
// ma dokręcać do bezoporowych i zdejmować pozycje w przypadku przekroczenia prądu
|
// ma dokręcać do bezoporowych i zdejmować pozycje w przypadku przekroczenia prądu
|
||||||
|
|||||||
4
Driver.h
4
Driver.h
@@ -211,6 +211,10 @@ private:
|
|||||||
bool DecBrake();
|
bool DecBrake();
|
||||||
bool IncSpeed();
|
bool IncSpeed();
|
||||||
bool DecSpeed(bool force = false);
|
bool DecSpeed(bool force = false);
|
||||||
|
bool IncBrakeEIM();
|
||||||
|
bool DecBrakeEIM();
|
||||||
|
bool IncSpeedEIM();
|
||||||
|
bool DecSpeedEIM();
|
||||||
void SpeedSet();
|
void SpeedSet();
|
||||||
void SpeedCntrl(double DesiredSpeed);
|
void SpeedCntrl(double DesiredSpeed);
|
||||||
double ESMVelocity(bool Main);
|
double ESMVelocity(bool Main);
|
||||||
|
|||||||
Reference in New Issue
Block a user