From 0bae4511e4d791e32b5c06e6d766b288872f5856 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 3 Nov 2017 22:01:02 +0100 Subject: [PATCH] ATragMX - Fixed UI (C1 vs. Distance interpolation) (#5720) * The C1 coefficient needs to be updated automatically whenever the target range changes --- addons/atragmx/functions/fnc_change_target_slot.sqf | 5 ++--- addons/atragmx/functions/fnc_init.sqf | 2 ++ addons/atragmx/functions/fnc_parse_input.sqf | 6 ++++++ addons/atragmx/functions/fnc_sord.sqf | 2 ++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/addons/atragmx/functions/fnc_change_target_slot.sqf b/addons/atragmx/functions/fnc_change_target_slot.sqf index 158e31ad87..6fd3889309 100644 --- a/addons/atragmx/functions/fnc_change_target_slot.sqf +++ b/addons/atragmx/functions/fnc_change_target_slot.sqf @@ -15,10 +15,9 @@ */ #include "script_component.hpp" -private _target = 0 max _this min 3; +GVAR(currentTarget) = 0 max _this min 3; -[] call FUNC(parse_input); +GVAR(targetRangeDirtyFlag) = true; -GVAR(currentTarget) = _target; call FUNC(update_target_selection); call FUNC(calculate_target_solution); diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf index a574e946f8..28b5202670 100644 --- a/addons/atragmx/functions/fnc_init.sqf +++ b/addons/atragmx/functions/fnc_init.sqf @@ -84,6 +84,8 @@ GVAR(truingDropMuzzleVelocity) = 0; GVAR(targetSolutionInput) = nil; +GVAR(targetRangeDirtyFlag) = false; + GVAR(showMainPage) = true; GVAR(showAddNewGun) = false; GVAR(showAtmoEnvData) = false; diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf index 05615d04e4..3ff40bbbcc 100644 --- a/addons/atragmx/functions/fnc_parse_input.sqf +++ b/addons/atragmx/functions/fnc_parse_input.sqf @@ -99,6 +99,7 @@ if (GVAR(currentUnit) == 1) then { } else { _targetRange = 25 max _targetRange min 3700; }; +GVAR(targetRangeDirtyFlag) = GVAR(targetRangeDirtyFlag) || {_targetRange != GVAR(targetRange) select GVAR(currentTarget)}; GVAR(latitude) set [GVAR(currentTarget), -90 max Round(parseNumber(ctrlText 140000)) min 90]; GVAR(directionOfFire) set [GVAR(currentTarget), 0 max abs(Round(parseNumber(ctrlText 140010))) min 359]; GVAR(windSpeed1) set [GVAR(currentTarget), _windSpeed1]; @@ -173,6 +174,11 @@ if (_muzzleVelocity != GVAR(workingMemory) select 1) then { GVAR(workingMemory) set [1, _muzzleVelocity]; GVAR(workingMemory) set [2, _zeroRange]; +if (GVAR(targetRangeDirtyFlag) && missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + [false, false] call FUNC(recalculate_c1_ballistic_coefficient); + GVAR(targetRangeDirtyFlag) = false; +}; + [] call FUNC(update_gun); [] call FUNC(update_gun_ammo_data); [] call FUNC(update_atmosphere); diff --git a/addons/atragmx/functions/fnc_sord.sqf b/addons/atragmx/functions/fnc_sord.sqf index 792d727c70..c6f77f748b 100644 --- a/addons/atragmx/functions/fnc_sord.sqf +++ b/addons/atragmx/functions/fnc_sord.sqf @@ -21,6 +21,8 @@ if (!GVAR(initialised)) exitWith {}; params ["_slopeDistance", "_azimuth", "_inclination"]; +GVAR(targetRangeDirtyFlag) = (round(_slopeDistance) != (GVAR(targetRange) select GVAR(currentTarget))); + GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)]; GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)]; GVAR(targetRange) set [GVAR(currentTarget), round(_slopeDistance)];