mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Artillery rangletables (universal) (#6853)
* Initial
* Update artillerytables.cpp
* Pass by value, remove c17 features
* Tweak accuracy
* SQF work
- improve compat with a3 mlrs with remote cam (animationSourcePhase)
- handle non [0] turrets (rhs prp)
- add config entries
- use vectorCos to fix fp error (thanks commy)
* Support per mag air friction
* tweak friction
* Integrate with mk6
* more acos fixes
* Handle invalid memPointGunOptic (CUP_BM21_Base)
* Cleanup
* cleanup/tweaks
* Update checkConfigs.sqf
* Finish cleanup of ace_mk6mortar
* Update stringtable.xml
* fix bwc for ACE_RangeTable_82mm
* Update fnc_rangeTableCanUse.sqf
* build 32dll, fix some headers
* strncpy and move testing to seperate file
* Move to sub-category
* Update for ACE_Extensions changes and add warning to ace_common
* Update stringtable.xml
* Update addons/common/functions/fnc_checkFiles.sqf
Co-Authored-By: jonpas <jonpas33@gmail.com>
* Update stringtable.xml
* Update stringtable.xml
* test extension.yml update logical operator
* Revert "test extension.yml update logical operator"
This reverts commit b1871724ad
.
* more guess and test
This commit is contained in:
64
addons/artillerytables/functions/fnc_rangeTableUpdate.sqf
Normal file
64
addons/artillerytables/functions/fnc_rangeTableUpdate.sqf
Normal file
@ -0,0 +1,64 @@
|
||||
#include "script_component.hpp"
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Called when listbox selection changes. Updates the rangetable with new values.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Elevation Mode (true = high,false=low) <BOOL><OPTIONAL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [] call ace_artillerytables_fnc_rangeTableUpdate
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
private _dialog = uiNamespace getVariable [QGVAR(rangeTableDialog), displayNull];
|
||||
private _ctrlRangeTable = _dialog displayCtrl IDC_TABLE;
|
||||
private _ctrlChargeList = _dialog displayCtrl IDC_CHARGELIST;
|
||||
private _ctrlElevationHigh = _dialog displayCtrl IDC_BUTTON_ELEV_HIGH;
|
||||
private _ctrlElevationLow = _dialog displayCtrl IDC_BUTTON_ELEV_LOW;
|
||||
|
||||
GVAR(lastElevationMode) = param [0, GVAR(lastElevationMode)]; // update if passed a new value
|
||||
GVAR(lastCharge) = lbCurSel _ctrlChargeList;
|
||||
|
||||
// get data for currently selected mag/mode combo:
|
||||
(GVAR(magModeData) select GVAR(lastCharge)) params [["_muzzleVelocity", -1], ["_airFriction", 0]];
|
||||
private _elevMin = _dialog getVariable [QGVAR(elevMin), 0];
|
||||
private _elevMax = _dialog getVariable [QGVAR(elevMax), 0];
|
||||
_ctrlElevationHigh ctrlSetTextColor ([[0.25,0.25,0.25,1],[1,1,1,1]] select GVAR(lastElevationMode));
|
||||
_ctrlElevationLow ctrlSetTextColor ([[1,1,1,1],[0.25,0.25,0.25,1]] select GVAR(lastElevationMode));
|
||||
|
||||
|
||||
lnbClear _ctrlRangeTable;
|
||||
// Call extension with current data and start workers
|
||||
TRACE_5("callExtension:start",_muzzleVelocity,_airFriction,_elevMin,_elevMax,GVAR(lastElevationMode));
|
||||
private _ret = "ace_artillerytables" callExtension ["start", [_muzzleVelocity,_airFriction,_elevMin,_elevMax,GVAR(lastElevationMode)]];
|
||||
TRACE_1("",_ret);
|
||||
|
||||
// Non-blocking read data out of extension as it becomes availiable
|
||||
[{
|
||||
private _dialog = uiNamespace getVariable [QGVAR(rangeTableDialog), displayNull];
|
||||
private _ctrlRangeTable = _dialog displayCtrl IDC_TABLE;
|
||||
if (isNull _dialog) exitWith {true};
|
||||
|
||||
private _status = 1; // 1 = data on line, 2 - data not ready, 3 - done
|
||||
while {_status == 1} do {
|
||||
private _ret = ("ace_artillerytables" callExtension ["getline", []]);
|
||||
// TRACE_1("callExtension:getline",_ret);
|
||||
_status = _ret select 1;
|
||||
if (_status == 1) then { _ctrlRangeTable lnbAddRow parseSimpleArray (_ret select 0) };
|
||||
};
|
||||
|
||||
(_status == 3) // exit loop when all data read
|
||||
}, {
|
||||
// put dummy line at end because scrolling is problematic and can't see last line
|
||||
private _dialog = uiNamespace getVariable [QGVAR(rangeTableDialog), displayNull];
|
||||
private _ctrlRangeTable = _dialog displayCtrl IDC_TABLE;
|
||||
if (isNull _dialog) exitWith {TRACE_1("dialog closed",_this);};
|
||||
|
||||
_ctrlRangeTable lnbAddRow ["", "", "", "", "", "", "", "", "", "", ""];
|
||||
TRACE_1("table filled",_ctrlRangeTable);
|
||||
}, []] call CBA_fnc_waitUntilAndExecute;
|
Reference in New Issue
Block a user