diff --git a/bin/bc5.ini b/bin/bc5.ini index 96b3594f..f2d0c93a 100644 --- a/bin/bc5.ini +++ b/bin/bc5.ini @@ -141,6 +141,14 @@ joystick_button_NFU_stbd=15 joystick_button_ack_alarm=0 joystick_button_toggle_azimuth1_master=17 joystick_button_toggle_azimuth2_master=18 +joystick_button_increase_radar_gain=0 +joystick_button_decrease_radar_gain=0 +joystick_button_increase_radar_clutter=0 +joystick_button_decrease_radar_clutter=0 +joystick_button_increase_radar_rain=0 +joystick_button_decrease_radar_rain=0 +joystick_button_increase_radar_range=0 +joystick_button_decrease_radar_range=0 joystick_POV_look_left=27000 joystick_POV_look_right=9000 joystick_POV_look_up=0 @@ -185,6 +193,14 @@ joystick_no_NFU_stbd=0 joystick_no_ack_alarm=0 joystick_no_toggle_azimuth1_master=0 joystick_no_toggle_azimuth2_master=0 +joystick_no_increase_radar_gain=0 +joystick_no_decrease_radar_gain=0 +joystick_no_increase_radar_clutter=0 +joystick_no_decrease_radar_clutter=0 +joystick_no_increase_radar_rain=0 +joystick_no_decrease_radar_rain=0 +joystick_no_increase_radar_range=0 +joystick_no_decrease_radar_range=0 joystick_no_POV=0 [RADAR] diff --git a/src/MyEventReceiver.cpp b/src/MyEventReceiver.cpp index 4de1cba9..00a7c89c 100644 --- a/src/MyEventReceiver.cpp +++ b/src/MyEventReceiver.cpp @@ -1857,6 +1857,72 @@ bool MyEventReceiver::OnEvent(const irr::SEvent &event) } } + // Radar control buttons + if (thisJoystick == joystickSetup.joystickNoIncreaseClutterSetting) + { + if (IsButtonPressed(joystickSetup.joystickButtonIncreaseClutterSetting, thisButtonState) && !IsButtonPressed(joystickSetup.joystickButtonIncreaseClutterSetting, previousButtonState)) + { + model->increaseRadarClutter(5); + } + } + + if (thisJoystick == joystickSetup.joystickNoDecreaseClutterSetting) + { + if (IsButtonPressed(joystickSetup.joystickButtonDecreaseClutterSetting, thisButtonState) && !IsButtonPressed(joystickSetup.joystickButtonDecreaseClutterSetting, previousButtonState)) + { + model->decreaseRadarClutter(5); + } + } + + if (thisJoystick == joystickSetup.joystickNoIncreaseGainSetting) + { + if (IsButtonPressed(joystickSetup.joystickButtonIncreaseGainSetting, thisButtonState) && !IsButtonPressed(joystickSetup.joystickButtonIncreaseGainSetting, previousButtonState)) + { + model->increaseRadarGain(5); + } + } + + if (thisJoystick == joystickSetup.joystickNoDecreaseGainSetting) + { + if (IsButtonPressed(joystickSetup.joystickButtonDecreaseGainSetting, thisButtonState) && !IsButtonPressed(joystickSetup.joystickButtonDecreaseGainSetting, previousButtonState)) + { + model->decreaseRadarGain(5); + } + } + + if (thisJoystick == joystickSetup.joystickNoIncreaseRainSetting) + { + if (IsButtonPressed(joystickSetup.joystickButtonIncreaseRainSetting, thisButtonState) && !IsButtonPressed(joystickSetup.joystickButtonIncreaseRainSetting, previousButtonState)) + { + model->increaseRadarRain(5); + } + } + + if (thisJoystick == joystickSetup.joystickNoDecreaseRainSetting) + { + if (IsButtonPressed(joystickSetup.joystickButtonDecreaseRainSetting, thisButtonState) && !IsButtonPressed(joystickSetup.joystickButtonDecreaseRainSetting, previousButtonState)) + { + model->decreaseRadarRain(5); + } + } + + if (thisJoystick == joystickSetup.joystickNoIncreaseRange) + { + if (IsButtonPressed(joystickSetup.joystickButtonIncreaseRange, thisButtonState) && !IsButtonPressed(joystickSetup.joystickButtonIncreaseRange, previousButtonState)) + { + model->increaseRadarRange(); + } + } + + if (thisJoystick == joystickSetup.joystickNoDecreaseRange) + { + if (IsButtonPressed(joystickSetup.joystickButtonDecreaseRange, thisButtonState) && !IsButtonPressed(joystickSetup.joystickButtonDecreaseRange, previousButtonState)) + { + model->decreaseRadarRange(); + } + } + // End of radar control buttons + // DEE 10JAN23 .... Ive never seen the master concept implemented on azimuth drives in real life as in practice you can steer // perfectly well with just one drive on passage. Whilst Maneouvering or steaming in confined waters then // both drives are needed to operate independently. diff --git a/src/MyEventReceiver.hpp b/src/MyEventReceiver.hpp index 75819efb..9167ddf7 100644 --- a/src/MyEventReceiver.hpp +++ b/src/MyEventReceiver.hpp @@ -161,6 +161,24 @@ class JoystickSetup { irr::u16 joystickPOVLookRight; irr::u16 joystickPOVLookUp; irr::u16 joystickPOVLookDown; + + irr::u16 joystickButtonIncreaseClutterSetting; + irr::u16 joystickButtonDecreaseClutterSetting; + irr::u16 joystickButtonIncreaseGainSetting; + irr::u16 joystickButtonDecreaseGainSetting; + irr::u16 joystickButtonIncreaseRainSetting; + irr::u16 joystickButtonDecreaseRainSetting; + irr::u16 joystickButtonDecreaseRange; + irr::u16 joystickButtonIncreaseRange; + + irr::u16 joystickNoIncreaseClutterSetting; + irr::u16 joystickNoDecreaseClutterSetting; + irr::u16 joystickNoIncreaseGainSetting; + irr::u16 joystickNoDecreaseGainSetting; + irr::u16 joystickNoIncreaseRainSetting; + irr::u16 joystickNoDecreaseRainSetting; + irr::u16 joystickNoDecreaseRange; + irr::u16 joystickNoIncreaseRange; }; class MyEventReceiver : public irr::IEventReceiver diff --git a/src/RadarCalculation.cpp b/src/RadarCalculation.cpp index cdfb7049..26a8f8e3 100644 --- a/src/RadarCalculation.cpp +++ b/src/RadarCalculation.cpp @@ -328,6 +328,54 @@ irr::f32 RadarCalculation::getRainClutter() const return radarRainClutterReduction; } +void RadarCalculation::increaseClutter(irr::f32 value) +{ + radarSeaClutterReduction += value; + if (radarSeaClutterReduction > 100) { + radarSeaClutterReduction = 100; + } +} + +void RadarCalculation::decreaseClutter(irr::f32 value) +{ + radarSeaClutterReduction -= value; + if (radarSeaClutterReduction < 0) { + radarSeaClutterReduction = 0; + } +} + +void RadarCalculation::increaseRainClutter(irr::f32 value) +{ + radarRainClutterReduction += value; + if (radarRainClutterReduction > 100) { + radarRainClutterReduction = 100; + } +} + +void RadarCalculation::decreaseRainClutter(irr::f32 value) +{ + radarRainClutterReduction -= value; + if (radarRainClutterReduction < 0) { + radarRainClutterReduction = 0; + } +} + +void RadarCalculation::increaseGain(irr::f32 value) +{ + radarGain += value; + if (radarGain > 100) { + radarGain = 100; + } +} + +void RadarCalculation::decreaseGain(irr::f32 value) +{ + radarGain -= value; + if (radarGain < 0) { + radarGain = 0; + } +} + irr::f32 RadarCalculation::getEBLRangeNm() const { return EBLRangeNm; diff --git a/src/RadarCalculation.hpp b/src/RadarCalculation.hpp index 5c89de72..8495278c 100644 --- a/src/RadarCalculation.hpp +++ b/src/RadarCalculation.hpp @@ -120,6 +120,12 @@ class RadarCalculation void setGain(irr::f32 value); void setClutter(irr::f32 value); void setRainClutter(irr::f32 value); + void increaseClutter(irr::f32 value); + void decreaseClutter(irr::f32 value); + void increaseRainClutter(irr::f32 value); + void decreaseRainClutter(irr::f32 value); + void increaseGain(irr::f32 value); + void decreaseGain(irr::f32 value); irr::f32 getGain() const; irr::f32 getClutter() const; irr::f32 getRainClutter() const; diff --git a/src/SimulationModel.cpp b/src/SimulationModel.cpp index 77745b0d..b300bf52 100644 --- a/src/SimulationModel.cpp +++ b/src/SimulationModel.cpp @@ -1243,6 +1243,36 @@ SimulationModel::~SimulationModel() radarCalculation.setRainClutter(value); } + void SimulationModel::increaseRadarGain(irr::f32 value) + { + radarCalculation.increaseGain(value); + } + + void SimulationModel::decreaseRadarGain(irr::f32 value) + { + radarCalculation.decreaseGain(value); + } + + void SimulationModel::increaseRadarClutter(irr::f32 value) + { + radarCalculation.increaseClutter(value); + } + + void SimulationModel::decreaseRadarClutter(irr::f32 value) + { + radarCalculation.decreaseClutter(value); + } + + void SimulationModel::increaseRadarRain(irr::f32 value) + { + radarCalculation.increaseRainClutter(value); + } + + void SimulationModel::decreaseRadarRain(irr::f32 value) + { + radarCalculation.decreaseRainClutter(value); + } + void SimulationModel::setPIData(irr::s32 PIid, irr::f32 PIbearing, irr::f32 PIrange) { radarCalculation.setPIData(PIid, PIbearing, PIrange); diff --git a/src/SimulationModel.hpp b/src/SimulationModel.hpp index 103d9d1f..59525087 100644 --- a/src/SimulationModel.hpp +++ b/src/SimulationModel.hpp @@ -258,6 +258,12 @@ class SimulationModel //Start of the 'Model' part of MVC void setRadarGain(irr::f32 value); void setRadarClutter(irr::f32 value); void setRadarRain(irr::f32 value); + void increaseRadarGain(irr::f32 value); + void decreaseRadarGain(irr::f32 value); + void increaseRadarClutter(irr::f32 value); + void decreaseRadarClutter(irr::f32 value); + void increaseRadarRain(irr::f32 value); + void decreaseRadarRain(irr::f32 value); void setPIData(irr::s32 PIid, irr::f32 PIbearing, irr::f32 PIrange); irr::f32 getPIbearing(irr::s32 PIid) const; irr::f32 getPIrange(irr::s32 PIid) const; diff --git a/src/main.cpp b/src/main.cpp index 069ee5a3..0af466cd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -285,6 +285,28 @@ JoystickSetup getJoystickSetup(std::string iniFilename, bool isAzimuthDrive) { joystickSetup.joystickNoAckAlarm=IniFile::iniFileTou32(iniFilename, "joystick_no_ack_alarm"); joystickSetup.joystickButtonAckAlarm=IniFile::iniFileTou32(iniFilename, "joystick_button_ack_alarm")-1; + // Radar controls by button + joystickSetup.joystickNoIncreaseClutterSetting = IniFile::iniFileTou32(iniFilename, "joystick_no_increase_radar_clutter"); + joystickSetup.joystickNoDecreaseClutterSetting = IniFile::iniFileTou32(iniFilename, "joystick_no_decrease_radar_clutter"); + joystickSetup.joystickButtonIncreaseClutterSetting = IniFile::iniFileTou32(iniFilename, "joystick_button_increase_radar_clutter") - 1; + joystickSetup.joystickButtonDecreaseClutterSetting = IniFile::iniFileTou32(iniFilename, "joystick_button_decrease_radar_clutter") - 1; + + joystickSetup.joystickNoIncreaseGainSetting = IniFile::iniFileTou32(iniFilename, "joystick_no_increase_radar_gain"); + joystickSetup.joystickNoDecreaseGainSetting = IniFile::iniFileTou32(iniFilename, "joystick_no_decrease_radar_gain"); + joystickSetup.joystickButtonIncreaseGainSetting = IniFile::iniFileTou32(iniFilename, "joystick_button_increase_radar_gain") - 1; + joystickSetup.joystickButtonDecreaseGainSetting = IniFile::iniFileTou32(iniFilename, "joystick_button_decrease_radar_gain") - 1; + + joystickSetup.joystickNoIncreaseRainSetting = IniFile::iniFileTou32(iniFilename, "joystick_no_increase_radar_rain"); + joystickSetup.joystickNoDecreaseRainSetting = IniFile::iniFileTou32(iniFilename, "joystick_no_decrease_radar_rain"); + joystickSetup.joystickButtonIncreaseRainSetting = IniFile::iniFileTou32(iniFilename, "joystick_button_increase_radar_rain") - 1; + joystickSetup.joystickButtonDecreaseRainSetting = IniFile::iniFileTou32(iniFilename, "joystick_button_decrease_radar_rain") - 1; + + joystickSetup.joystickNoDecreaseRange = IniFile::iniFileTou32(iniFilename, "joystick_no_decrease_radar_range"); + joystickSetup.joystickNoIncreaseRange = IniFile::iniFileTou32(iniFilename, "joystick_no_increase_radar_range"); + joystickSetup.joystickButtonDecreaseRange = IniFile::iniFileTou32(iniFilename, "joystick_button_decrease_radar_range") - 1; + joystickSetup.joystickButtonIncreaseRange = IniFile::iniFileTou32(iniFilename, "joystick_button_increase_radar_range") - 1; + // End of Radar controls by button + joystickSetup.joystickNoAzimuth1Master=IniFile::iniFileTou32(iniFilename, "joystick_no_toggle_azimuth1_master"); joystickSetup.joystickNoAzimuth2Master=IniFile::iniFileTou32(iniFilename, "joystick_no_toggle_azimuth2_master"); joystickSetup.joystickButtonAzimuth1Master=IniFile::iniFileTou32(iniFilename, "joystick_button_toggle_azimuth1_master")-1;