mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 12:49:18 +02:00
build 171102: mouse support for light preset switch, vehicle lights cab indicators
This commit is contained in:
432
Train.cpp
432
Train.cpp
@@ -246,6 +246,8 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = {
|
|||||||
{ user_command::motoroverloadrelaythresholdtoggle, &TTrain::OnCommand_motoroverloadrelaythresholdtoggle },
|
{ user_command::motoroverloadrelaythresholdtoggle, &TTrain::OnCommand_motoroverloadrelaythresholdtoggle },
|
||||||
{ user_command::motoroverloadrelayreset, &TTrain::OnCommand_motoroverloadrelayreset },
|
{ user_command::motoroverloadrelayreset, &TTrain::OnCommand_motoroverloadrelayreset },
|
||||||
{ user_command::heatingtoggle, &TTrain::OnCommand_heatingtoggle },
|
{ user_command::heatingtoggle, &TTrain::OnCommand_heatingtoggle },
|
||||||
|
{ user_command::lightspresetactivatenext, &TTrain::OnCommand_lightspresetactivatenext },
|
||||||
|
{ user_command::lightspresetactivateprevious, &TTrain::OnCommand_lightspresetactivateprevious },
|
||||||
{ user_command::headlighttoggleleft, &TTrain::OnCommand_headlighttoggleleft },
|
{ user_command::headlighttoggleleft, &TTrain::OnCommand_headlighttoggleleft },
|
||||||
{ user_command::headlighttoggleright, &TTrain::OnCommand_headlighttoggleright },
|
{ user_command::headlighttoggleright, &TTrain::OnCommand_headlighttoggleright },
|
||||||
{ user_command::headlighttoggleupper, &TTrain::OnCommand_headlighttoggleupper },
|
{ user_command::headlighttoggleupper, &TTrain::OnCommand_headlighttoggleupper },
|
||||||
@@ -2067,6 +2069,60 @@ void TTrain::OnCommand_motoroverloadrelayreset( TTrain *Train, command_data cons
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TTrain::OnCommand_lightspresetactivatenext( TTrain *Train, command_data const &Command ) {
|
||||||
|
|
||||||
|
if( Train->mvOccupied->LightsPosNo == 0 ) {
|
||||||
|
// lights are controlled by preset selector
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if( Command.action != GLFW_PRESS ) {
|
||||||
|
// one change per key press
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ( Train->mvOccupied->LightsPos < Train->mvOccupied->LightsPosNo )
|
||||||
|
|| ( true == Train->mvOccupied->LightsWrap ) ) {
|
||||||
|
// active light preset is stored as value in range 1-LigthPosNo
|
||||||
|
Train->mvOccupied->LightsPos = (
|
||||||
|
Train->mvOccupied->LightsPos < Train->mvOccupied->LightsPosNo ?
|
||||||
|
Train->mvOccupied->LightsPos + 1 :
|
||||||
|
1 ); // wrap mode
|
||||||
|
|
||||||
|
Train->SetLights();
|
||||||
|
// visual feedback
|
||||||
|
if( Train->ggLightsButton.SubModel != nullptr ) {
|
||||||
|
Train->ggLightsButton.UpdateValue( Train->mvOccupied->LightsPos - 1, Train->dsbSwitch );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTrain::OnCommand_lightspresetactivateprevious( TTrain *Train, command_data const &Command ) {
|
||||||
|
|
||||||
|
if( Train->mvOccupied->LightsPosNo == 0 ) {
|
||||||
|
// lights are controlled by preset selector
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if( Command.action != GLFW_PRESS ) {
|
||||||
|
// one change per key press
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ( Train->mvOccupied->LightsPos > 1 )
|
||||||
|
|| ( true == Train->mvOccupied->LightsWrap ) ) {
|
||||||
|
// active light preset is stored as value in range 1-LigthPosNo
|
||||||
|
Train->mvOccupied->LightsPos = (
|
||||||
|
Train->mvOccupied->LightsPos > 1 ?
|
||||||
|
Train->mvOccupied->LightsPos - 1 :
|
||||||
|
Train->mvOccupied->LightsPosNo ); // wrap mode
|
||||||
|
|
||||||
|
Train->SetLights();
|
||||||
|
// visual feedback
|
||||||
|
if( Train->ggLightsButton.SubModel != nullptr ) {
|
||||||
|
Train->ggLightsButton.UpdateValue( Train->mvOccupied->LightsPos - 1, Train->dsbSwitch );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TTrain::OnCommand_headlighttoggleleft( TTrain *Train, command_data const &Command ) {
|
void TTrain::OnCommand_headlighttoggleleft( TTrain *Train, command_data const &Command ) {
|
||||||
|
|
||||||
if( Train->mvOccupied->LightsPosNo > 0 ) {
|
if( Train->mvOccupied->LightsPosNo > 0 ) {
|
||||||
@@ -2900,7 +2956,8 @@ void TTrain::OnKeyDown(int cKey)
|
|||||||
DynamicObject->Mechanik->TakeControl(true);
|
DynamicObject->Mechanik->TakeControl(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cKey == Global::Keys[k_UpperSign]) // ABu 060205: światło górne -
|
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||||
|
else if (cKey == Global::Keys[k_UpperSign]) // ABu 060205: światło górne -
|
||||||
// włączenie
|
// włączenie
|
||||||
{
|
{
|
||||||
if (mvOccupied->LightsPosNo > 0) //kręciolek od swiatel
|
if (mvOccupied->LightsPosNo > 0) //kręciolek od swiatel
|
||||||
@@ -2917,6 +2974,7 @@ void TTrain::OnKeyDown(int cKey)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else // McZapkie-240302 - klawisze bez shifta
|
else // McZapkie-240302 - klawisze bez shifta
|
||||||
{
|
{
|
||||||
@@ -3013,8 +3071,7 @@ void TTrain::OnKeyDown(int cKey)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// McZapkie-240302 - wylaczanie automatycznego pilota (w trybie ~debugmode
|
// McZapkie-240302 - wylaczanie automatycznego pilota (w trybie ~debugmode mozna tylko raz)
|
||||||
// mozna tylko raz)
|
|
||||||
else if (cKey == GLFW_KEY_Q) // bez Shift
|
else if (cKey == GLFW_KEY_Q) // bez Shift
|
||||||
{
|
{
|
||||||
if (DynamicObject->Mechanik)
|
if (DynamicObject->Mechanik)
|
||||||
@@ -3249,6 +3306,7 @@ if
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||||
else if (cKey == Global::Keys[k_UpperSign]) // ABu 060205: światło górne -
|
else if (cKey == Global::Keys[k_UpperSign]) // ABu 060205: światło górne -
|
||||||
// wyłączenie
|
// wyłączenie
|
||||||
{
|
{
|
||||||
@@ -3266,6 +3324,7 @@ if
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
// else
|
// else
|
||||||
if (DebugModeFlag)
|
if (DebugModeFlag)
|
||||||
{ // przesuwanie składu o 100m
|
{ // przesuwanie składu o 100m
|
||||||
@@ -4317,9 +4376,6 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
true :
|
true :
|
||||||
false ) );
|
false ) );
|
||||||
|
|
||||||
// hunter-261211: jakis stary kod (i niezgodny z prawda),
|
|
||||||
// zahaszowalem i poprawilem
|
|
||||||
// youBy-220913: ale przyda sie do lampki samej przetwornicy
|
|
||||||
btLampkaPrzetw.Turn( !mvControlled->ConverterFlag );
|
btLampkaPrzetw.Turn( !mvControlled->ConverterFlag );
|
||||||
btLampkaNadmPrzetw.Turn( mvControlled->ConvOvldFlag );
|
btLampkaNadmPrzetw.Turn( mvControlled->ConvOvldFlag );
|
||||||
|
|
||||||
@@ -4330,10 +4386,12 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
|
|
||||||
btLampkaBezoporowa.Turn(mvControlled->ResistorsFlagCheck() ||
|
btLampkaBezoporowa.Turn(mvControlled->ResistorsFlagCheck() ||
|
||||||
(mvControlled->MainCtrlActualPos == 0)); // do EU04
|
(mvControlled->MainCtrlActualPos == 0)); // do EU04
|
||||||
if ((mvControlled->Itot != 0) || (mvOccupied->BrakePress > 2) ||
|
if( ( mvControlled->Itot != 0 )
|
||||||
(mvOccupied->PipePress < 3.6))
|
|| ( mvOccupied->BrakePress > 2 )
|
||||||
btLampkaStyczn.TurnOff(); // Ra: czy to jest udawanie działania
|
|| ( mvOccupied->PipePress < 3.6 ) ) {
|
||||||
// styczników liniowych?
|
// Ra: czy to jest udawanie działania styczników liniowych?
|
||||||
|
btLampkaStyczn.TurnOff();
|
||||||
|
}
|
||||||
else if (mvOccupied->BrakePress < 1)
|
else if (mvOccupied->BrakePress < 1)
|
||||||
btLampkaStyczn.TurnOn(); // mozna prowadzic rozruch
|
btLampkaStyczn.TurnOn(); // mozna prowadzic rozruch
|
||||||
if (((TestFlag(mvControlled->Couplers[1].CouplingFlag, ctrain_controll)) &&
|
if (((TestFlag(mvControlled->Couplers[1].CouplingFlag, ctrain_controll)) &&
|
||||||
@@ -4513,15 +4571,8 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
btLampkaNadmPrzetwB.TurnOn();
|
btLampkaNadmPrzetwB.TurnOn();
|
||||||
btLampkaPrzetwB.TurnOff();
|
btLampkaPrzetwB.TurnOff();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// hunter-261211: jakis stary kod (i niezgodny z prawda), zahaszowalem
|
|
||||||
// if (tmp)
|
|
||||||
// if (tmp->MoverParameters->ConverterFlag==true)
|
|
||||||
// btLampkaNadmPrzetwB.TurnOff();
|
|
||||||
// else
|
|
||||||
// btLampkaNadmPrzetwB.TurnOn();
|
|
||||||
|
|
||||||
} //**************************************************** */
|
|
||||||
if( mvControlled->Battery || mvControlled->ConverterFlag )
|
if( mvControlled->Battery || mvControlled->ConverterFlag )
|
||||||
{
|
{
|
||||||
switch (mvControlled->TrainType)
|
switch (mvControlled->TrainType)
|
||||||
@@ -4551,6 +4602,18 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
btLampkaForward.Turn(mvControlled->ActiveDir > 0); // jazda do przodu
|
btLampkaForward.Turn(mvControlled->ActiveDir > 0); // jazda do przodu
|
||||||
btLampkaBackward.Turn(mvControlled->ActiveDir < 0); // jazda do tyłu
|
btLampkaBackward.Turn(mvControlled->ActiveDir < 0); // jazda do tyłu
|
||||||
btLampkaED.Turn(mvControlled->DynamicBrakeFlag); // hamulec ED
|
btLampkaED.Turn(mvControlled->DynamicBrakeFlag); // hamulec ED
|
||||||
|
// light indicators
|
||||||
|
// NOTE: sides are hardcoded to deal with setups where single cab is equipped with all indicators
|
||||||
|
btLampkaUpperLight.Turn( ( mvOccupied->iLights[ side::front ] & light::headlight_upper ) != 0 );
|
||||||
|
btLampkaLeftLight.Turn( ( mvOccupied->iLights[ side::front ] & light::headlight_left ) != 0 );
|
||||||
|
btLampkaRightLight.Turn( ( mvOccupied->iLights[ side::front ] & light::headlight_right ) != 0 );
|
||||||
|
btLampkaLeftEndLight.Turn( ( mvOccupied->iLights[ side::front ] & light::redmarker_left ) != 0 );
|
||||||
|
btLampkaRightEndLight.Turn( ( mvOccupied->iLights[ side::front ] & light::redmarker_right ) != 0 );
|
||||||
|
btLampkaRearUpperLight.Turn( ( mvOccupied->iLights[ side::rear ] & light::headlight_upper ) != 0 );
|
||||||
|
btLampkaRearLeftLight.Turn( ( mvOccupied->iLights[ side::rear ] & light::headlight_left ) != 0 );
|
||||||
|
btLampkaRearRightLight.Turn( ( mvOccupied->iLights[ side::rear ] & light::headlight_right ) != 0 );
|
||||||
|
btLampkaRearLeftEndLight.Turn( ( mvOccupied->iLights[ side::rear ] & light::redmarker_left ) != 0 );
|
||||||
|
btLampkaRearRightEndLight.Turn( ( mvOccupied->iLights[ side::rear ] & light::redmarker_right ) != 0 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // gdy bateria wyłączona
|
{ // gdy bateria wyłączona
|
||||||
@@ -4566,7 +4629,19 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
btLampkaForward.TurnOff();
|
btLampkaForward.TurnOff();
|
||||||
btLampkaBackward.TurnOff();
|
btLampkaBackward.TurnOff();
|
||||||
btLampkaED.TurnOff();
|
btLampkaED.TurnOff();
|
||||||
|
// light indicators
|
||||||
|
btLampkaUpperLight.TurnOff();
|
||||||
|
btLampkaLeftLight.TurnOff();
|
||||||
|
btLampkaRightLight.TurnOff();
|
||||||
|
btLampkaLeftEndLight.TurnOff();
|
||||||
|
btLampkaRightEndLight.TurnOff();
|
||||||
|
btLampkaRearUpperLight.TurnOff();
|
||||||
|
btLampkaRearLeftLight.TurnOff();
|
||||||
|
btLampkaRearRightLight.TurnOff();
|
||||||
|
btLampkaRearLeftEndLight.TurnOff();
|
||||||
|
btLampkaRearRightEndLight.TurnOff();
|
||||||
}
|
}
|
||||||
|
|
||||||
// McZapkie-080602: obroty (albo translacje) regulatorow
|
// McZapkie-080602: obroty (albo translacje) regulatorow
|
||||||
if (ggMainCtrl.SubModel) {
|
if (ggMainCtrl.SubModel) {
|
||||||
|
|
||||||
@@ -4830,12 +4905,6 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
ggRearRightLightButton.PutValue(-1);
|
ggRearRightLightButton.PutValue(-1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (ggLightsButton.SubModel)
|
|
||||||
{
|
|
||||||
ggLightsButton.PutValue(mvOccupied->LightsPos - 1);
|
|
||||||
ggLightsButton.Update();
|
|
||||||
}
|
|
||||||
ggDimHeadlightsButton.Update();
|
|
||||||
//---------
|
//---------
|
||||||
// hunter-080812: poprawka na ogrzewanie w elektrykach - usuniete uzaleznienie od przetwornicy
|
// hunter-080812: poprawka na ogrzewanie w elektrykach - usuniete uzaleznienie od przetwornicy
|
||||||
if ((((mvControlled->EngineType == ElectricSeriesMotor) && (mvControlled->Mains == true) &&
|
if ((((mvControlled->EngineType == ElectricSeriesMotor) && (mvControlled->Mains == true) &&
|
||||||
@@ -4909,9 +4978,7 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//******************************************
|
|
||||||
// przelaczniki
|
// przelaczniki
|
||||||
|
|
||||||
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||||
if( Console::Pressed( Global::Keys[ k_Horn ] ) )
|
if( Console::Pressed( Global::Keys[ k_Horn ] ) )
|
||||||
{
|
{
|
||||||
@@ -5652,6 +5719,7 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
ggPantCompressorButton.Update();
|
ggPantCompressorButton.Update();
|
||||||
ggPantCompressorValve.Update();
|
ggPantCompressorValve.Update();
|
||||||
|
|
||||||
|
ggLightsButton.Update();
|
||||||
ggUpperLightButton.Update();
|
ggUpperLightButton.Update();
|
||||||
ggLeftLightButton.Update();
|
ggLeftLightButton.Update();
|
||||||
ggRightLightButton.Update();
|
ggRightLightButton.Update();
|
||||||
@@ -5663,6 +5731,7 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
ggRearRightLightButton.Update();
|
ggRearRightLightButton.Update();
|
||||||
ggRearLeftEndLightButton.Update();
|
ggRearLeftEndLightButton.Update();
|
||||||
ggRearRightEndLightButton.Update();
|
ggRearRightEndLightButton.Update();
|
||||||
|
ggDimHeadlightsButton.Update();
|
||||||
//------------
|
//------------
|
||||||
ggConverterButton.Update();
|
ggConverterButton.Update();
|
||||||
ggConverterLocalButton.Update();
|
ggConverterLocalButton.Update();
|
||||||
@@ -5673,14 +5742,14 @@ bool TTrain::Update( double const Deltatime )
|
|||||||
ggHornButton.Update();
|
ggHornButton.Update();
|
||||||
ggHornLowButton.Update();
|
ggHornLowButton.Update();
|
||||||
ggHornHighButton.Update();
|
ggHornHighButton.Update();
|
||||||
/*
|
#ifdef EU07_USE_OLD_COMMAND_SYSTEM
|
||||||
ggUniversal1Button.Update();
|
ggUniversal1Button.Update();
|
||||||
ggUniversal2Button.Update();
|
ggUniversal2Button.Update();
|
||||||
if( Universal4Active ) {
|
if( Universal4Active ) {
|
||||||
ggUniversal4Button.PermIncValue( dt );
|
ggUniversal4Button.PermIncValue( dt );
|
||||||
}
|
}
|
||||||
ggUniversal4Button.Update();
|
ggUniversal4Button.Update();
|
||||||
*/
|
#endif
|
||||||
for( auto &universal : ggUniversals ) {
|
for( auto &universal : ggUniversals ) {
|
||||||
universal.Update();
|
universal.Update();
|
||||||
}
|
}
|
||||||
@@ -6597,6 +6666,17 @@ void TTrain::clear_cab_controls()
|
|||||||
btLampkaWylSzybkiB.Clear();
|
btLampkaWylSzybkiB.Clear();
|
||||||
btLampkaForward.Clear();
|
btLampkaForward.Clear();
|
||||||
btLampkaBackward.Clear();
|
btLampkaBackward.Clear();
|
||||||
|
// light indicators
|
||||||
|
btLampkaUpperLight.Clear();
|
||||||
|
btLampkaLeftLight.Clear();
|
||||||
|
btLampkaRightLight.Clear();
|
||||||
|
btLampkaLeftEndLight.Clear();
|
||||||
|
btLampkaRightEndLight.Clear();
|
||||||
|
btLampkaRearUpperLight.Clear();
|
||||||
|
btLampkaRearLeftLight.Clear();
|
||||||
|
btLampkaRearRightLight.Clear();
|
||||||
|
btLampkaRearLeftEndLight.Clear();
|
||||||
|
btLampkaRearRightEndLight.Clear();
|
||||||
btCabLight.Clear(); // hunter-171012
|
btCabLight.Clear(); // hunter-171012
|
||||||
ggLeftLightButton.Clear();
|
ggLeftLightButton.Clear();
|
||||||
ggRightLightButton.Clear();
|
ggRightLightButton.Clear();
|
||||||
@@ -6706,6 +6786,8 @@ void TTrain::set_cab_controls() {
|
|||||||
ggMaxCurrentCtrl.PutValue( 1.0 );
|
ggMaxCurrentCtrl.PutValue( 1.0 );
|
||||||
}
|
}
|
||||||
// lights
|
// lights
|
||||||
|
ggLightsButton.PutValue( mvOccupied->LightsPos - 1 );
|
||||||
|
|
||||||
int const vehicleside =
|
int const vehicleside =
|
||||||
( mvOccupied->ActiveCab == 1 ?
|
( mvOccupied->ActiveCab == 1 ?
|
||||||
side::front :
|
side::front :
|
||||||
@@ -6802,227 +6884,88 @@ void TTrain::set_cab_controls() {
|
|||||||
// TODO: when cleaning up break setting indicator state into a separate function, so we can reuse it
|
// TODO: when cleaning up break setting indicator state into a separate function, so we can reuse it
|
||||||
}
|
}
|
||||||
|
|
||||||
// initializes a button matching provided label. returns: true if the label was found, false
|
// initializes a button matching provided label. returns: true if the label was found, false otherwise
|
||||||
// otherwise
|
|
||||||
// NOTE: this is temporary work-around for compiler else-if limit
|
|
||||||
// TODO: refactor the cabin controls into some sensible structure
|
// TODO: refactor the cabin controls into some sensible structure
|
||||||
bool TTrain::initialize_button(cParser &Parser, std::string const &Label, int const Cabindex)
|
bool TTrain::initialize_button(cParser &Parser, std::string const &Label, int const Cabindex) {
|
||||||
{
|
|
||||||
/*
|
std::unordered_map<std::string, TButton &> const lights = {
|
||||||
TButton *bt; // roboczy wskaźnik na obiekt animujący lampkę
|
{ "i-maxft:", btLampkaMaxSila },
|
||||||
*/
|
{ "i-maxftt:", btLampkaPrzekrMaxSila },
|
||||||
// SEKCJA LAMPEK
|
{ "i-radio:", btLampkaRadio },
|
||||||
if (Label == "i-maxft:")
|
{ "i-manual_brake:", btLampkaHamulecReczny },
|
||||||
{
|
{ "i-door_blocked:", btLampkaBlokadaDrzwi },
|
||||||
btLampkaMaxSila.Load(Parser, DynamicObject->mdKabina);
|
{ "i-slippery:", btLampkaPoslizg },
|
||||||
|
{ "i-contactors:", btLampkaStyczn },
|
||||||
|
{ "i-conv_ovld:", btLampkaNadmPrzetw },
|
||||||
|
{ "i-converter:", btLampkaPrzetw },
|
||||||
|
{ "i-diff_relay:", btLampkaPrzekRozn },
|
||||||
|
{ "i-diff_relay2:", btLampkaPrzekRoznPom },
|
||||||
|
{ "i-motor_ovld:", btLampkaNadmSil },
|
||||||
|
{ "i-train_controll:", btLampkaUkrotnienie },
|
||||||
|
{ "i-brake_delay_r:", btLampkaHamPosp },
|
||||||
|
{ "i-mainbreaker:", btLampkaWylSzybki },
|
||||||
|
{ "i-vent_ovld:", btLampkaNadmWent },
|
||||||
|
{ "i-comp_ovld:", btLampkaNadmSpr },
|
||||||
|
{ "i-resistors:", btLampkaOpory },
|
||||||
|
{ "i-no_resistors:", btLampkaBezoporowa },
|
||||||
|
{ "i-no_resistors_b:", btLampkaBezoporowaB },
|
||||||
|
{ "i-highcurrent:", btLampkaWysRozr },
|
||||||
|
{ "i-vent_trim:", btLampkaWentZaluzje },
|
||||||
|
{ "i-trainheating:", btLampkaOgrzewanieSkladu },
|
||||||
|
{ "i-security_aware:", btLampkaCzuwaka },
|
||||||
|
{ "i-security_cabsignal:", btLampkaSHP },
|
||||||
|
{ "i-door_left:", btLampkaDoorLeft },
|
||||||
|
{ "i-door_right:", btLampkaDoorRight },
|
||||||
|
{ "i-departure_signal:", btLampkaDepartureSignal },
|
||||||
|
{ "i-reserve:", btLampkaRezerwa },
|
||||||
|
{ "i-scnd:", btLampkaBoczniki },
|
||||||
|
{ "i-scnd1:", btLampkaBocznik1 },
|
||||||
|
{ "i-scnd2:", btLampkaBocznik2 },
|
||||||
|
{ "i-scnd3:", btLampkaBocznik3 },
|
||||||
|
{ "i-scnd4:", btLampkaBocznik4 },
|
||||||
|
{ "i-braking:", btLampkaHamienie },
|
||||||
|
{ "i-dynamicbrake:", btLampkaED },
|
||||||
|
{ "i-braking-ezt:", btLampkaHamowanie1zes },
|
||||||
|
{ "i-braking-ezt2:", btLampkaHamowanie2zes },
|
||||||
|
{ "i-compressor:", btLampkaSprezarka },
|
||||||
|
{ "i-compressorb:", btLampkaSprezarkaB },
|
||||||
|
{ "i-voltbrake:", btLampkaNapNastHam },
|
||||||
|
{ "i-mainbreakerb:", btLampkaWylSzybkiB },
|
||||||
|
{ "i-resistorsb:", btLampkaOporyB },
|
||||||
|
{ "i-contactorsb:", btLampkaStycznB },
|
||||||
|
{ "i-conv_ovldb:", btLampkaNadmPrzetwB },
|
||||||
|
{ "i-converterb:", btLampkaPrzetwB },
|
||||||
|
{ "i-forward:", btLampkaForward },
|
||||||
|
{ "i-backward:", btLampkaBackward },
|
||||||
|
{ "i-upperlight:", btLampkaUpperLight },
|
||||||
|
{ "i-leftlight:", btLampkaLeftLight },
|
||||||
|
{ "i-rightlight:", btLampkaRightLight },
|
||||||
|
{ "i-leftend:", btLampkaLeftEndLight },
|
||||||
|
{ "i-rightend:", btLampkaRightEndLight },
|
||||||
|
{ "i-rearupperlight:", btLampkaRearUpperLight },
|
||||||
|
{ "i-rearleftlight:", btLampkaRearLeftLight },
|
||||||
|
{ "i-rearrightlight:", btLampkaRearRightLight },
|
||||||
|
{ "i-rearleftend:", btLampkaRearLeftEndLight },
|
||||||
|
{ "i-rearrightend:", btLampkaRearRightEndLight },
|
||||||
|
{ "i-cablight:", btCabLight }
|
||||||
|
};
|
||||||
|
auto lookup = lights.find( Label );
|
||||||
|
if( lookup != lights.end() ) {
|
||||||
|
lookup->second.Load( Parser, DynamicObject->mdKabina );
|
||||||
}
|
}
|
||||||
else if (Label == "i-maxftt:")
|
|
||||||
{
|
else if( Label == "i-instrumentlight:" ) {
|
||||||
btLampkaPrzekrMaxSila.Load(Parser, DynamicObject->mdKabina);
|
btInstrumentLight.Load( Parser, DynamicObject->mdKabina, DynamicObject->mdModel );
|
||||||
}
|
|
||||||
else if (Label == "i-radio:")
|
|
||||||
{
|
|
||||||
btLampkaRadio.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-manual_brake:")
|
|
||||||
{
|
|
||||||
btLampkaHamulecReczny.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-door_blocked:")
|
|
||||||
{
|
|
||||||
btLampkaBlokadaDrzwi.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-slippery:")
|
|
||||||
{
|
|
||||||
btLampkaPoslizg.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-contactors:")
|
|
||||||
{
|
|
||||||
btLampkaStyczn.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-conv_ovld:")
|
|
||||||
{
|
|
||||||
btLampkaNadmPrzetw.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-converter:")
|
|
||||||
{
|
|
||||||
btLampkaPrzetw.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-diff_relay:")
|
|
||||||
{
|
|
||||||
btLampkaPrzekRozn.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-diff_relay2:")
|
|
||||||
{
|
|
||||||
btLampkaPrzekRoznPom.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-motor_ovld:")
|
|
||||||
{
|
|
||||||
btLampkaNadmSil.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-train_controll:")
|
|
||||||
{
|
|
||||||
btLampkaUkrotnienie.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-brake_delay_r:")
|
|
||||||
{
|
|
||||||
btLampkaHamPosp.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-mainbreaker:")
|
|
||||||
{
|
|
||||||
btLampkaWylSzybki.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-vent_ovld:")
|
|
||||||
{
|
|
||||||
btLampkaNadmWent.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-comp_ovld:")
|
|
||||||
{
|
|
||||||
btLampkaNadmSpr.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-resistors:")
|
|
||||||
{
|
|
||||||
btLampkaOpory.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-no_resistors:")
|
|
||||||
{
|
|
||||||
btLampkaBezoporowa.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-no_resistors_b:")
|
|
||||||
{
|
|
||||||
btLampkaBezoporowaB.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-highcurrent:")
|
|
||||||
{
|
|
||||||
btLampkaWysRozr.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-instrumentlight:")
|
|
||||||
{
|
|
||||||
btInstrumentLight.Load(Parser, DynamicObject->mdKabina, DynamicObject->mdModel);
|
|
||||||
InstrumentLightType = 0;
|
InstrumentLightType = 0;
|
||||||
}
|
}
|
||||||
else if (Label == "i-instrumentlight_M:")
|
else if( Label == "i-instrumentlight_M:" ) {
|
||||||
{
|
btInstrumentLight.Load( Parser, DynamicObject->mdKabina, DynamicObject->mdModel );
|
||||||
btInstrumentLight.Load(Parser, DynamicObject->mdKabina, DynamicObject->mdModel);
|
|
||||||
InstrumentLightType = 1;
|
InstrumentLightType = 1;
|
||||||
}
|
}
|
||||||
else if (Label == "i-instrumentlight_C:")
|
else if( Label == "i-instrumentlight_C:" ) {
|
||||||
{
|
btInstrumentLight.Load( Parser, DynamicObject->mdKabina, DynamicObject->mdModel );
|
||||||
btInstrumentLight.Load(Parser, DynamicObject->mdKabina, DynamicObject->mdModel);
|
|
||||||
InstrumentLightType = 2;
|
InstrumentLightType = 2;
|
||||||
}
|
}
|
||||||
else if (Label == "i-vent_trim:")
|
|
||||||
{
|
|
||||||
btLampkaWentZaluzje.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-trainheating:")
|
|
||||||
{
|
|
||||||
btLampkaOgrzewanieSkladu.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-security_aware:")
|
|
||||||
{
|
|
||||||
btLampkaCzuwaka.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-security_cabsignal:")
|
|
||||||
{
|
|
||||||
btLampkaSHP.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-door_left:")
|
|
||||||
{
|
|
||||||
btLampkaDoorLeft.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-door_right:")
|
|
||||||
{
|
|
||||||
btLampkaDoorRight.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-departure_signal:")
|
|
||||||
{
|
|
||||||
btLampkaDepartureSignal.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-reserve:")
|
|
||||||
{
|
|
||||||
btLampkaRezerwa.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-scnd:")
|
|
||||||
{
|
|
||||||
btLampkaBoczniki.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-scnd1:")
|
|
||||||
{
|
|
||||||
btLampkaBocznik1.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-scnd2:")
|
|
||||||
{
|
|
||||||
btLampkaBocznik2.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-scnd3:")
|
|
||||||
{
|
|
||||||
btLampkaBocznik3.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-scnd4:")
|
|
||||||
{
|
|
||||||
btLampkaBocznik4.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-braking:")
|
|
||||||
{
|
|
||||||
btLampkaHamienie.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if( Label == "i-dynamicbrake:" ) {
|
|
||||||
|
|
||||||
btLampkaED.Load( Parser, DynamicObject->mdKabina );
|
|
||||||
}
|
|
||||||
else if (Label == "i-braking-ezt:")
|
|
||||||
{
|
|
||||||
btLampkaHamowanie1zes.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-braking-ezt2:")
|
|
||||||
{
|
|
||||||
btLampkaHamowanie2zes.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-compressor:")
|
|
||||||
{
|
|
||||||
btLampkaSprezarka.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-compressorb:")
|
|
||||||
{
|
|
||||||
btLampkaSprezarkaB.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-voltbrake:")
|
|
||||||
{
|
|
||||||
btLampkaNapNastHam.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-mainbreakerb:")
|
|
||||||
{
|
|
||||||
btLampkaWylSzybkiB.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-resistorsb:")
|
|
||||||
{
|
|
||||||
btLampkaOporyB.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-contactorsb:")
|
|
||||||
{
|
|
||||||
btLampkaStycznB.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-conv_ovldb:")
|
|
||||||
{
|
|
||||||
btLampkaNadmPrzetwB.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-converterb:")
|
|
||||||
{
|
|
||||||
btLampkaPrzetwB.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-forward:")
|
|
||||||
{
|
|
||||||
btLampkaForward.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-backward:")
|
|
||||||
{
|
|
||||||
btLampkaBackward.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-cablight:")
|
|
||||||
{ // hunter-171012
|
|
||||||
btCabLight.Load(Parser, DynamicObject->mdKabina);
|
|
||||||
}
|
|
||||||
else if (Label == "i-doors:")
|
else if (Label == "i-doors:")
|
||||||
{
|
{
|
||||||
int i = Parser.getToken<int>() - 1;
|
int i = Parser.getToken<int>() - 1;
|
||||||
@@ -7039,15 +6982,10 @@ bool TTrain::initialize_button(cParser &Parser, std::string const &Label, int co
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// initializes a gauge matching provided label. returns: true if the label was found, false
|
// initializes a gauge matching provided label. returns: true if the label was found, false otherwise
|
||||||
// otherwise
|
|
||||||
// NOTE: this is temporary work-around for compiler else-if limit
|
|
||||||
// TODO: refactor the cabin controls into some sensible structure
|
// TODO: refactor the cabin controls into some sensible structure
|
||||||
bool TTrain::initialize_gauge(cParser &Parser, std::string const &Label, int const Cabindex) {
|
bool TTrain::initialize_gauge(cParser &Parser, std::string const &Label, int const Cabindex) {
|
||||||
|
|
||||||
/*
|
|
||||||
TGauge *gg { nullptr }; // roboczy wskaźnik na obiekt animujący gałkę
|
|
||||||
*/
|
|
||||||
std::unordered_map<std::string, TGauge &> const gauges = {
|
std::unordered_map<std::string, TGauge &> const gauges = {
|
||||||
{ "mainctrl:", ggMainCtrl },
|
{ "mainctrl:", ggMainCtrl },
|
||||||
{ "scndctrl:", ggScndCtrl },
|
{ "scndctrl:", ggScndCtrl },
|
||||||
|
|||||||
13
Train.h
13
Train.h
@@ -171,6 +171,8 @@ class TTrain
|
|||||||
static void OnCommand_motoroverloadrelaythresholdtoggle( TTrain *Train, command_data const &Command );
|
static void OnCommand_motoroverloadrelaythresholdtoggle( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_motoroverloadrelayreset( TTrain *Train, command_data const &Command );
|
static void OnCommand_motoroverloadrelayreset( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_heatingtoggle( TTrain *Train, command_data const &Command );
|
static void OnCommand_heatingtoggle( TTrain *Train, command_data const &Command );
|
||||||
|
static void OnCommand_lightspresetactivatenext( TTrain *Train, command_data const &Command );
|
||||||
|
static void OnCommand_lightspresetactivateprevious( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_headlighttoggleleft( TTrain *Train, command_data const &Command );
|
static void OnCommand_headlighttoggleleft( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_headlighttoggleright( TTrain *Train, command_data const &Command );
|
static void OnCommand_headlighttoggleright( TTrain *Train, command_data const &Command );
|
||||||
static void OnCommand_headlighttoggleupper( TTrain *Train, command_data const &Command );
|
static void OnCommand_headlighttoggleupper( TTrain *Train, command_data const &Command );
|
||||||
@@ -366,6 +368,17 @@ public: // reszta może by?publiczna
|
|||||||
TButton btLampkaHamulecReczny;
|
TButton btLampkaHamulecReczny;
|
||||||
TButton btLampkaForward; // Ra: lampki w przód i w ty?dla komputerowych kabin
|
TButton btLampkaForward; // Ra: lampki w przód i w ty?dla komputerowych kabin
|
||||||
TButton btLampkaBackward;
|
TButton btLampkaBackward;
|
||||||
|
// light indicators
|
||||||
|
TButton btLampkaUpperLight;
|
||||||
|
TButton btLampkaLeftLight;
|
||||||
|
TButton btLampkaRightLight;
|
||||||
|
TButton btLampkaLeftEndLight;
|
||||||
|
TButton btLampkaRightEndLight;
|
||||||
|
TButton btLampkaRearUpperLight;
|
||||||
|
TButton btLampkaRearLeftLight;
|
||||||
|
TButton btLampkaRearRightLight;
|
||||||
|
TButton btLampkaRearLeftEndLight;
|
||||||
|
TButton btLampkaRearRightEndLight;
|
||||||
|
|
||||||
TButton btCabLight; // hunter-171012: lampa oswietlajaca kabine
|
TButton btCabLight; // hunter-171012: lampa oswietlajaca kabine
|
||||||
// Ra 2013-12: wirtualne "lampki" do odbijania na haslerze w PoKeys
|
// Ra 2013-12: wirtualne "lampki" do odbijania na haslerze w PoKeys
|
||||||
|
|||||||
@@ -682,7 +682,7 @@ void TWorld::OnKeyDown(int cKey)
|
|||||||
*/
|
*/
|
||||||
if (cKey == Global::Keys[k_Heating]) // Ra: klawisz nie jest najszczęśliwszy
|
if (cKey == Global::Keys[k_Heating]) // Ra: klawisz nie jest najszczęśliwszy
|
||||||
{ // zmiana próżny/ładowny; Ra: zabrane z kabiny
|
{ // zmiana próżny/ładowny; Ra: zabrane z kabiny
|
||||||
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 20, false, false ) ) };
|
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 10, false, false ) ) };
|
||||||
if (vehicle)
|
if (vehicle)
|
||||||
{
|
{
|
||||||
if (Global::shiftState ? vehicle->MoverParameters->IncBrakeMult() :
|
if (Global::shiftState ? vehicle->MoverParameters->IncBrakeMult() :
|
||||||
@@ -695,7 +695,7 @@ void TWorld::OnKeyDown(int cKey)
|
|||||||
}
|
}
|
||||||
else if (cKey == Global::Keys[k_EndSign])
|
else if (cKey == Global::Keys[k_EndSign])
|
||||||
{ // Ra 2014-07: zabrane z kabiny
|
{ // Ra 2014-07: zabrane z kabiny
|
||||||
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 20, false, true ) ) };
|
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 10, false, true ) ) };
|
||||||
if (vehicle)
|
if (vehicle)
|
||||||
{
|
{
|
||||||
int CouplNr = (LengthSquared3(vehicle->HeadPosition() - Camera.Pos) >
|
int CouplNr = (LengthSquared3(vehicle->HeadPosition() - Camera.Pos) >
|
||||||
@@ -724,7 +724,7 @@ void TWorld::OnKeyDown(int cKey)
|
|||||||
}
|
}
|
||||||
else if (cKey == Global::Keys[k_IncLocalBrakeLevel])
|
else if (cKey == Global::Keys[k_IncLocalBrakeLevel])
|
||||||
{ // zahamowanie dowolnego pojazdu
|
{ // zahamowanie dowolnego pojazdu
|
||||||
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 20, false, false ) ) };
|
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 10, false, false ) ) };
|
||||||
if (vehicle)
|
if (vehicle)
|
||||||
{
|
{
|
||||||
if (Global::ctrlState)
|
if (Global::ctrlState)
|
||||||
@@ -743,7 +743,7 @@ void TWorld::OnKeyDown(int cKey)
|
|||||||
}
|
}
|
||||||
else if (cKey == Global::Keys[k_DecLocalBrakeLevel])
|
else if (cKey == Global::Keys[k_DecLocalBrakeLevel])
|
||||||
{ // odhamowanie dowolnego pojazdu
|
{ // odhamowanie dowolnego pojazdu
|
||||||
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 20, false, false ) ) };
|
auto *vehicle { std::get<TDynamicObject *>( simulation::Region->find_vehicle( Global::pCameraPosition, 10, false, false ) ) };
|
||||||
if (vehicle)
|
if (vehicle)
|
||||||
{
|
{
|
||||||
if (Global::ctrlState)
|
if (Global::ctrlState)
|
||||||
|
|||||||
@@ -105,6 +105,8 @@ const int k_ProgramHelp = 48;
|
|||||||
/*
|
/*
|
||||||
// const int k_FreeFlyMode= 59;
|
// const int k_FreeFlyMode= 59;
|
||||||
*/
|
*/
|
||||||
|
{ "lightspresetactivatenext", command_target::vehicle },
|
||||||
|
{ "lightspresetactivateprevious", command_target::vehicle },
|
||||||
{ "headlighttoggleleft", command_target::vehicle },
|
{ "headlighttoggleleft", command_target::vehicle },
|
||||||
{ "headlighttoggleright", command_target::vehicle },
|
{ "headlighttoggleright", command_target::vehicle },
|
||||||
{ "headlighttoggleupper", command_target::vehicle },
|
{ "headlighttoggleupper", command_target::vehicle },
|
||||||
|
|||||||
@@ -100,6 +100,8 @@ const int k_ProgramHelp = 48;
|
|||||||
/*
|
/*
|
||||||
// const int k_FreeFlyMode= 59;
|
// const int k_FreeFlyMode= 59;
|
||||||
*/
|
*/
|
||||||
|
lightspresetactivatenext,
|
||||||
|
lightspresetactivateprevious,
|
||||||
headlighttoggleleft,
|
headlighttoggleleft,
|
||||||
headlighttoggleright,
|
headlighttoggleright,
|
||||||
headlighttoggleupper,
|
headlighttoggleupper,
|
||||||
@@ -117,10 +119,6 @@ const int k_ProgramHelp = 48;
|
|||||||
interiorlightdimtoggle,
|
interiorlightdimtoggle,
|
||||||
instrumentlighttoggle,
|
instrumentlighttoggle,
|
||||||
/*
|
/*
|
||||||
const int k_Univ1 = 66;
|
|
||||||
const int k_Univ2 = 67;
|
|
||||||
const int k_Univ3 = 68;
|
|
||||||
const int k_Univ4 = 69;
|
|
||||||
const int k_EndSign = 70;
|
const int k_EndSign = 70;
|
||||||
const int k_Active = 71;
|
const int k_Active = 71;
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -318,6 +318,10 @@ const int k_ProgramHelp = 48;
|
|||||||
/*
|
/*
|
||||||
// const int k_FreeFlyMode= 59;
|
// const int k_FreeFlyMode= 59;
|
||||||
*/
|
*/
|
||||||
|
// lightspresetactivatenext
|
||||||
|
{ GLFW_KEY_T | keymodifier::shift },
|
||||||
|
// lightspresetactivateprevious
|
||||||
|
{ GLFW_KEY_T },
|
||||||
// headlighttoggleleft
|
// headlighttoggleleft
|
||||||
{ GLFW_KEY_Y },
|
{ GLFW_KEY_Y },
|
||||||
// headlighttoggleright
|
// headlighttoggleright
|
||||||
|
|||||||
@@ -304,8 +304,8 @@ mouse_input::default_bindings() {
|
|||||||
user_command::redmarkertoggleright,
|
user_command::redmarkertoggleright,
|
||||||
user_command::none } },
|
user_command::none } },
|
||||||
{ "lights_sw:", {
|
{ "lights_sw:", {
|
||||||
user_command::none,
|
user_command::lightspresetactivatenext,
|
||||||
user_command::none } }, // TODO: implement commands for lights controller
|
user_command::lightspresetactivateprevious } },
|
||||||
{ "rearupperlight_sw:", {
|
{ "rearupperlight_sw:", {
|
||||||
user_command::headlighttogglerearupper,
|
user_command::headlighttogglerearupper,
|
||||||
user_command::none } },
|
user_command::none } },
|
||||||
|
|||||||
14
scene.cpp
14
scene.cpp
@@ -872,7 +872,12 @@ basic_region::update_traction( TDynamicObject *Vehicle, int const Pantographinde
|
|||||||
void
|
void
|
||||||
basic_region::serialize( std::string const &Scenariofile ) const {
|
basic_region::serialize( std::string const &Scenariofile ) const {
|
||||||
|
|
||||||
auto filename { Global::asCurrentSceneryPath + Scenariofile };
|
auto filename { Scenariofile };
|
||||||
|
if( filename[ 0 ] == '$' ) {
|
||||||
|
// trim leading $ char rainsted utility may add to the base name for modified .scn files
|
||||||
|
filename.erase( 0, 1 );
|
||||||
|
}
|
||||||
|
filename = Global::asCurrentSceneryPath + filename;
|
||||||
if( ( filename.rfind( '.' ) != std::string::npos )
|
if( ( filename.rfind( '.' ) != std::string::npos )
|
||||||
&& ( filename.rfind( '.' ) != filename.rfind( ".." ) + 1 ) ) {
|
&& ( filename.rfind( '.' ) != filename.rfind( ".." ) + 1 ) ) {
|
||||||
// trim extension, it's typically going to be for different file type
|
// trim extension, it's typically going to be for different file type
|
||||||
@@ -910,7 +915,12 @@ basic_region::serialize( std::string const &Scenariofile ) const {
|
|||||||
bool
|
bool
|
||||||
basic_region::deserialize( std::string const &Scenariofile ) {
|
basic_region::deserialize( std::string const &Scenariofile ) {
|
||||||
|
|
||||||
auto filename { Global::asCurrentSceneryPath + Scenariofile };
|
auto filename { Scenariofile };
|
||||||
|
if( filename[ 0 ] == '$' ) {
|
||||||
|
// trim leading $ char rainsted utility may add to the base name for modified .scn files
|
||||||
|
filename.erase( 0, 1 );
|
||||||
|
}
|
||||||
|
filename = Global::asCurrentSceneryPath + filename;
|
||||||
if( ( filename.rfind( '.' ) != std::string::npos )
|
if( ( filename.rfind( '.' ) != std::string::npos )
|
||||||
&& ( filename.rfind( '.' ) != filename.rfind( ".." ) + 1 ) ) {
|
&& ( filename.rfind( '.' ) != filename.rfind( ".." ) + 1 ) ) {
|
||||||
// trim extension, it's typically going to be for different file type
|
// trim extension, it's typically going to be for different file type
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ Type_
|
|||||||
clamp_circular( Type_ Value, Type_ const Range = static_cast<Type_>(360) ) {
|
clamp_circular( Type_ Value, Type_ const Range = static_cast<Type_>(360) ) {
|
||||||
|
|
||||||
Value -= Range * (int)( Value / Range ); // clamp the range to 0-360
|
Value -= Range * (int)( Value / Range ); // clamp the range to 0-360
|
||||||
if( Value < 0.0 ) Value += Range;
|
if( Value < Type_(0) ) Value += Range;
|
||||||
|
|
||||||
return Value;
|
return Value;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user