mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-20 09:09:19 +02:00
Added hints about cab(de)activation, reworked cab activation gauge, fixes for AI to use it
This commit is contained in:
@@ -2765,6 +2765,7 @@ bool TController::PrepareEngine()
|
||||
ReactionTime = ( mvOccupied->Vel < 5 ? PrepareTime : EasyReactionTime ); // react faster with rolling start
|
||||
|
||||
cue_action( locale::string::driver_hint_batteryon );
|
||||
cue_action( locale::string::driver_hint_cabactivation );
|
||||
cue_action( locale::string::driver_hint_radioon );
|
||||
|
||||
if( has_diesel_engine() ) {
|
||||
@@ -5994,9 +5995,13 @@ TController::determine_consist_state() {
|
||||
// ABu-160305 testowanie gotowości do jazdy
|
||||
// Ra: przeniesione z DynObj, skład użytkownika też jest testowany, żeby mu przekazać, że ma odhamować
|
||||
|
||||
if ((mvOccupied->CabActive == 0) || (mvOccupied->CabActive == mvOccupied->CabOccupied))
|
||||
if (mvOccupied->CabActive == 0)
|
||||
{
|
||||
mvOccupied->CabActivisation(true);
|
||||
cue_action( locale::string::driver_hint_cabactivation );
|
||||
}
|
||||
else if ((mvOccupied->CabActive == -mvOccupied->CabOccupied) || (!mvOccupied->CabMaster))
|
||||
{
|
||||
cue_action( locale::string::driver_hint_cabdeactivation );
|
||||
}
|
||||
|
||||
int index = double(BrakeAccTableSize) * (mvOccupied->Vel / mvOccupied->Vmax);
|
||||
|
||||
@@ -11913,6 +11913,7 @@ bool TMoverParameters::RunCommand( std::string Command, double CValue1, double C
|
||||
}
|
||||
}
|
||||
DirAbsolute = DirActive * CabActive;
|
||||
CabMaster = false;
|
||||
OK = SendCtrlToNext( Command, CValue1, CValue2, Couplertype );
|
||||
}
|
||||
else if (Command == "AutoRelaySwitch")
|
||||
|
||||
14
Train.cpp
14
Train.cpp
@@ -2388,7 +2388,9 @@ void TTrain::OnCommand_cabactivationenable(TTrain *Train, command_data const &Co
|
||||
|
||||
if (Command.action == GLFW_PRESS) {
|
||||
// visual feedback
|
||||
Train->ggCabActivationButton.UpdateValue(1.0f, Train->dsbSwitch);
|
||||
if (Train->ggCabActivationButton.type() == TGaugeType::push) {
|
||||
Train->ggCabActivationButton.UpdateValue(1.0f, Train->dsbSwitch);
|
||||
}
|
||||
|
||||
Train->mvOccupied->CabActivisation();
|
||||
|
||||
@@ -2409,7 +2411,9 @@ void TTrain::OnCommand_cabactivationdisable(TTrain *Train, command_data const &C
|
||||
// TBD, TODO: ewentualnie zablokować z FIZ, np. w samochodach się nie odłącza akumulatora
|
||||
if (Command.action == GLFW_PRESS) {
|
||||
// visual feedback
|
||||
Train->ggCabActivationButton.UpdateValue(0.0f, Train->dsbSwitch);
|
||||
if (Train->ggCabActivationButton.type() == TGaugeType::push) {
|
||||
Train->ggCabActivationButton.UpdateValue(0.0f, Train->dsbSwitch);
|
||||
}
|
||||
|
||||
Train->mvOccupied->CabDeactivisation();
|
||||
}
|
||||
@@ -7680,6 +7684,10 @@ bool TTrain::Update( double const Deltatime )
|
||||
ggBatteryButton.Update();
|
||||
ggBatteryOnButton.Update();
|
||||
ggBatteryOffButton.Update();
|
||||
if ((ggCabActivationButton.SubModel != nullptr) && (ggCabActivationButton.type() != TGaugeType::push))
|
||||
{
|
||||
ggCabActivationButton.UpdateValue((mvOccupied->CabMaster) && (mvOccupied->CabOccupied == mvOccupied->CabActive) ? 1.0 : 0.0);
|
||||
}
|
||||
ggCabActivationButton.Update();
|
||||
|
||||
ggWaterPumpBreakerButton.Update();
|
||||
@@ -9142,7 +9150,7 @@ void TTrain::set_cab_controls( int const Cab ) {
|
||||
// battery
|
||||
ggCabActivationButton.PutValue(
|
||||
(ggCabActivationButton.type() == TGaugeType::push ? 0.5f :
|
||||
mvOccupied->CabActive == mvOccupied->CabOccupied ? 1.f :
|
||||
(mvOccupied->CabActive == mvOccupied->CabOccupied) && mvOccupied->CabMaster ? 1.f :
|
||||
0.f));
|
||||
// line breaker
|
||||
if( ggMainButton.SubModel != nullptr ) { // instead of single main button there can be on/off pair
|
||||
|
||||
@@ -100,6 +100,29 @@ TController::cue_action( locale::string const Action, float const Actionparamete
|
||||
return ( ( mvOccupied->BatteryStart != start_t::manual ) || ( mvOccupied->Power24vIsAvailable == false ) ); } );
|
||||
break;
|
||||
}
|
||||
// battery
|
||||
case locale::string::driver_hint_cabactivation: {
|
||||
if (AIControllFlag) {
|
||||
mvOccupied->CabActivisation();
|
||||
}
|
||||
remove_hint( locale::string::driver_hint_cabdeactivation );
|
||||
hint(
|
||||
Action,
|
||||
[this](float const Parameter) -> bool {
|
||||
return ( ( mvOccupied->AutomaticCabActivation ) || ( ( mvOccupied->CabMaster == true ) && ( mvOccupied->CabActive == mvOccupied->CabOccupied ) ) ); } );
|
||||
break;
|
||||
}
|
||||
case locale::string::driver_hint_cabdeactivation: {
|
||||
if (AIControllFlag) {
|
||||
mvOccupied->CabDeactivisation();
|
||||
}
|
||||
remove_hint( locale::string::driver_hint_cabactivation );
|
||||
hint(
|
||||
Action,
|
||||
[this](float const Parameter) -> bool {
|
||||
return ( ( mvOccupied->AutomaticCabActivation ) || ( ( mvOccupied->CabMaster == false ) && ( mvOccupied->CabActive == 0 ) ) ); } );
|
||||
break;
|
||||
}
|
||||
// radio
|
||||
case locale::string::driver_hint_radioon: {
|
||||
if( AIControllFlag ) {
|
||||
|
||||
@@ -59,6 +59,8 @@ init() {
|
||||
"Hints",
|
||||
"Switch on battery",
|
||||
"Switch off battery",
|
||||
"Activate cabin",
|
||||
"Deactivate cabin",
|
||||
"Switch on radio",
|
||||
"Switch off radio",
|
||||
"Tune into channel %.0f",
|
||||
@@ -372,6 +374,8 @@ init() {
|
||||
"Podpowiedzi",
|
||||
"Zalaczyc akumulatory",
|
||||
"Wylaczyc akumulatory",
|
||||
"Aktywowac kabine",
|
||||
"Zdezaktywowac kabine",
|
||||
"Zalaczyc radio",
|
||||
"Wylaczyc radio",
|
||||
"Ustawic radio na kanal %.0f",
|
||||
|
||||
@@ -48,6 +48,8 @@ enum string {
|
||||
driver_hint_header,
|
||||
driver_hint_batteryon,
|
||||
driver_hint_batteryoff,
|
||||
driver_hint_cabactivation,
|
||||
driver_hint_cabdeactivation,
|
||||
driver_hint_radioon,
|
||||
driver_hint_radiooff,
|
||||
driver_hint_radiochannel,
|
||||
|
||||
Reference in New Issue
Block a user