From 1ab318c2795acb92f64b993bd28469701b0f7e85 Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Sun, 24 May 2026 16:06:50 -0300 Subject: [PATCH] Added register and delete cot functions to handle CoT delete commands --- addons/main/CfgFunctions.hpp | 6 ++++ .../api/fn_delete_registered_cots.sqf | 36 +++++++++++++++++++ addons/main/functions/api/fn_register_cot.sqf | 30 ++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 addons/main/functions/api/fn_delete_registered_cots.sqf create mode 100644 addons/main/functions/api/fn_register_cot.sqf diff --git a/addons/main/CfgFunctions.hpp b/addons/main/CfgFunctions.hpp index 2ae223c..c683890 100644 --- a/addons/main/CfgFunctions.hpp +++ b/addons/main/CfgFunctions.hpp @@ -22,6 +22,12 @@ class CfgFunctions { class report_marker { file = "\armatak\armatak\addons\main\functions\api\fn_report_marker.sqf"; }; + class register_cot { + file = "\armatak\armatak\addons\main\functions\api\fn_register_cot.sqf"; + }; + class delete_registered_cots { + file = "\armatak\armatak\addons\main\functions\api\fn_delete_registered_cots.sqf"; + }; class draw_circle { file = "\armatak\armatak\addons\main\functions\api\fn_draw_circle.sqf"; }; diff --git a/addons/main/functions/api/fn_delete_registered_cots.sqf b/addons/main/functions/api/fn_delete_registered_cots.sqf new file mode 100644 index 0000000..9266c60 --- /dev/null +++ b/addons/main/functions/api/fn_delete_registered_cots.sqf @@ -0,0 +1,36 @@ +// function name: armatak_fnc_delete_registered_cots +// function author: Valmo, Codex +// function description: Sends forced delete CoTs for all registered CoTs in a scope. +// +// Arguments: +// 0: Scope/key used to group CoTs +// +// Return Value: +// Number of delete CoTs sent +// +// Public: Yes + +params [ + ["_scope", "", [""]] +]; + +if (_scope isEqualTo "") exitWith {0}; + +private _registry = missionNamespace getVariable ["armatak_registered_cots", []]; +private _remaining = []; +private _deleted = 0; + +{ + _x params ["_registeredScope", "_uid", "_type", "_lat", "_lon", "_hae"]; + + if (_registeredScope isEqualTo _scope) then { + "armatak" callExtension ["tcp_socket:cot:delete", [[_uid, _type, _lat, _lon, _hae]]]; + _deleted = _deleted + 1; + } else { + _remaining pushBack _x; + }; +} forEach _registry; + +missionNamespace setVariable ["armatak_registered_cots", _remaining]; + +_deleted diff --git a/addons/main/functions/api/fn_register_cot.sqf b/addons/main/functions/api/fn_register_cot.sqf new file mode 100644 index 0000000..36246d1 --- /dev/null +++ b/addons/main/functions/api/fn_register_cot.sqf @@ -0,0 +1,30 @@ +// function name: armatak_fnc_register_cot +// function author: Valmo, Codex +// function description: Registers a CoT object under a scope so it can be deleted later. +// +// Arguments: +// 0: Scope/key used to group CoTs +// 1: CoT UID +// 2: CoT type +// 3: Latitude +// 4: Longitude +// 5: HAE altitude +// +// Public: Yes + +params [ + ["_scope", "", [""]], + ["_uid", "", [""]], + ["_type", "", [""]], + ["_lat", 0, [0]], + ["_lon", 0, [0]], + ["_hae", 0, [0]] +]; + +if (_scope isEqualTo "" || {_uid isEqualTo ""} || {_type isEqualTo ""}) exitWith {false}; + +private _registry = missionNamespace getVariable ["armatak_registered_cots", []]; +_registry pushBack [_scope, _uid, _type, _lat, _lon, _hae]; +missionNamespace setVariable ["armatak_registered_cots", _registry]; + +true