diff --git a/input/command.cpp b/input/command.cpp index 305b1a3d..b963905b 100644 --- a/input/command.cpp +++ b/input/command.cpp @@ -147,6 +147,7 @@ commanddescription_sequence Commands_descriptions = { {"radiostopenable", command_target::vehicle, command_mode::oneoff}, {"radiostopdisable", command_target::vehicle, command_mode::oneoff}, {"radiostoptest", command_target::vehicle, command_mode::oneoff}, + {"radiocall1send", command_target::vehicle, command_mode::oneoff}, {"radiocall3send", command_target::vehicle, command_mode::oneoff}, {"radiovolumeincrease", command_target::vehicle, command_mode::oneoff}, {"radiovolumedecrease", command_target::vehicle, command_mode::oneoff}, @@ -526,6 +527,7 @@ std::unordered_map commandMap = { {"radiostopenable", user_command::radiostopenable}, {"radiostopdisable", user_command::radiostopdisable}, {"radiostoptest", user_command::radiostoptest}, + {"radiocall1send", user_command::radiocall1send}, {"radiocall3send", user_command::radiocall3send}, {"radiovolumeincrease", user_command::radiovolumeincrease}, {"radiovolumedecrease", user_command::radiovolumedecrease}, diff --git a/input/command.h b/input/command.h index 44a25fbd..53c56d7e 100644 --- a/input/command.h +++ b/input/command.h @@ -141,6 +141,7 @@ enum class user_command radiostopenable, radiostopdisable, radiostoptest, + radiocall1send, radiocall3send, radiovolumeincrease, radiovolumedecrease, diff --git a/input/drivermouseinput.cpp b/input/drivermouseinput.cpp index b829521b..e1184b20 100644 --- a/input/drivermouseinput.cpp +++ b/input/drivermouseinput.cpp @@ -835,6 +835,9 @@ drivermouse_input::default_bindings() { { "radiotest_sw:", { user_command::radiostoptest, user_command::none } }, + { "radiocall1_sw:", { + user_command::radiocall1send, + user_command::none } }, { "radiocall3_sw:", { user_command::radiocall3send, user_command::none } }, diff --git a/vehicle/Train.cpp b/vehicle/Train.cpp index de2e8e5e..d385a540 100644 --- a/vehicle/Train.cpp +++ b/vehicle/Train.cpp @@ -450,6 +450,7 @@ TTrain::commandhandler_map const TTrain::m_commandhandlers = { { user_command::radiostopenable, &TTrain::OnCommand_radiostopenable }, { user_command::radiostopdisable, &TTrain::OnCommand_radiostopdisable }, { user_command::radiostoptest, &TTrain::OnCommand_radiostoptest }, + { user_command::radiocall1send, &TTrain::OnCommand_radiocall1send }, { user_command::radiocall3send, &TTrain::OnCommand_radiocall3send }, { user_command::radiovolumeincrease, &TTrain::OnCommand_radiovolumeincrease }, { user_command::radiovolumedecrease, &TTrain::OnCommand_radiovolumedecrease }, @@ -6917,6 +6918,23 @@ void TTrain::OnCommand_radiostoptest( TTrain *Train, command_data const &Command } } +void TTrain::OnCommand_radiocall1send( TTrain *Train, command_data const &Command ) +{ + if( Command.action == GLFW_PRESS ) { + if( ( Train->RadioChannel() != 10 ) + && ( true == Train->mvOccupied->Radio ) + && ( Train->mvOccupied->Power24vIsAvailable || Train->mvOccupied->Power110vIsAvailable) ) { + simulation::Events.queue_receivers( radio_message::call1, Train->Dynamic()->GetPosition() ); + } + // visual feedback + Train->ggRadioCall1.UpdateValue( 1.0 ); + } + else if( Command.action == GLFW_RELEASE ) { + // visual feedback + Train->ggRadioCall1.UpdateValue( 0.0 ); + } +} + void TTrain::OnCommand_radiocall3send( TTrain *Train, command_data const &Command ) { if( Command.action == GLFW_PRESS ) { @@ -8343,6 +8361,7 @@ bool TTrain::Update( double const Deltatime ) ggRadioChannelNext.Update(); ggRadioStop.Update(); ggRadioTest.Update(); + ggRadioCall1.Update(); ggRadioCall3.Update(); ggRadioVolumeSelector.Update(); ggRadioVolumePrevious.Update(); @@ -9861,6 +9880,7 @@ void TTrain::clear_cab_controls() ggRadioChannelNext.Clear(); ggRadioStop.Clear(); ggRadioTest.Clear(); + ggRadioCall1.Clear(); ggRadioCall3.Clear(); ggRadioVolumeSelector.Clear(); ggRadioVolumePrevious.Clear(); @@ -10668,6 +10688,7 @@ bool TTrain::initialize_gauge(cParser &Parser, std::string const &Label, int con { "radiochannelnext_sw:", ggRadioChannelNext }, { "radiostop_sw:", ggRadioStop }, { "radiotest_sw:", ggRadioTest }, + { "radiocall1_sw:", ggRadioCall1 }, { "radiocall3_sw:", ggRadioCall3 }, { "radiovolume_sw:", ggRadioVolumeSelector }, { "radiovolumeprev_sw:", ggRadioVolumePrevious }, diff --git a/vehicle/Train.h b/vehicle/Train.h index 96a41463..916d761b 100644 --- a/vehicle/Train.h +++ b/vehicle/Train.h @@ -475,6 +475,7 @@ class TTrain { static void OnCommand_radiostopenable( TTrain *Train, command_data const &Command ); static void OnCommand_radiostopdisable( TTrain *Train, command_data const &Command ); static void OnCommand_radiostoptest( TTrain *Train, command_data const &Command ); + static void OnCommand_radiocall1send( TTrain *Train, command_data const &Command ); static void OnCommand_radiocall3send( TTrain *Train, command_data const &Command ); static void OnCommand_radiovolumeincrease(TTrain *Train, command_data const &Command); static void OnCommand_radiovolumedecrease(TTrain *Train, command_data const &Command); @@ -580,6 +581,7 @@ public: // reszta może by?publiczna TGauge ggRadioChannelNext; TGauge ggRadioTest; TGauge ggRadioStop; + TGauge ggRadioCall1; TGauge ggRadioCall3; TGauge ggRadioVolumeSelector; TGauge ggRadioVolumePrevious; diff --git a/vr/openvr_imp.cpp b/vr/openvr_imp.cpp index 5e09547c..088fd5b5 100644 --- a/vr/openvr_imp.cpp +++ b/vr/openvr_imp.cpp @@ -687,9 +687,12 @@ std::unordered_map vr_openvr::m_buttonb { "radiotest_sw:", { user_command::radiostoptest, user_command::none } }, - { "radiocall3_sw:", { - user_command::radiocall3send, - user_command::none } }, + { "radiocall1_sw:", { + user_command::radiocall1send, + user_command::none } }, + { "radiocall3_sw:", { + user_command::radiocall3send, + user_command::none } }, { "radiovolume_sw:",{ user_command::radiovolumeincrease, user_command::radiovolumedecrease } },