From 6e3d9b4fa08e88705f3ce69956a76d26b9cff466 Mon Sep 17 00:00:00 2001 From: mharis001 Date: Tue, 16 May 2023 07:03:20 -0400 Subject: [PATCH] Area Markers - Add Editable Markers setting --- addons/area_markers/XEH_postInit.sqf | 5 ---- addons/area_markers/XEH_preInit.sqf | 2 ++ .../area_markers/functions/fnc_deleteIcon.sqf | 3 +-- .../area_markers/functions/fnc_isEditable.sqf | 4 ++- addons/area_markers/initSettings.sqf | 25 +++++++++++++++++++ addons/area_markers/script_component.hpp | 6 +++-- addons/area_markers/stringtable.xml | 21 ++++++++++++++++ 7 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 addons/area_markers/initSettings.sqf diff --git a/addons/area_markers/XEH_postInit.sqf b/addons/area_markers/XEH_postInit.sqf index cbffcda1f..cbee9c982 100644 --- a/addons/area_markers/XEH_postInit.sqf +++ b/addons/area_markers/XEH_postInit.sqf @@ -16,9 +16,4 @@ if (hasInterface) then { addMissionEventHandler ["MarkerCreated", {call FUNC(onMarkerCreated)}]; addMissionEventHandler ["MarkerDeleted", {call FUNC(onMarkerDeleted)}]; addMissionEventHandler ["MarkerUpdated", {call FUNC(onMarkerUpdated)}]; - - // Manually trigger event for 3DEN placed and already existent (JIP) markers - { - _x call FUNC(onMarkerCreated); - } forEach allMapMarkers; }; diff --git a/addons/area_markers/XEH_preInit.sqf b/addons/area_markers/XEH_preInit.sqf index 469798001..c95627a23 100644 --- a/addons/area_markers/XEH_preInit.sqf +++ b/addons/area_markers/XEH_preInit.sqf @@ -6,6 +6,8 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; +#include "initSettings.sqf" + if (isServer) then { // Unique ID for creating markers GVAR(nextID) = 0; diff --git a/addons/area_markers/functions/fnc_deleteIcon.sqf b/addons/area_markers/functions/fnc_deleteIcon.sqf index de2c4cf27..634c32f42 100644 --- a/addons/area_markers/functions/fnc_deleteIcon.sqf +++ b/addons/area_markers/functions/fnc_deleteIcon.sqf @@ -18,6 +18,5 @@ params ["_marker"]; if (_marker in GVAR(icons)) then { - ctrlDelete (GVAR(icons) get _marker); - GVAR(icons) deleteAt _marker; + ctrlDelete (GVAR(icons) deleteAt _marker); }; diff --git a/addons/area_markers/functions/fnc_isEditable.sqf b/addons/area_markers/functions/fnc_isEditable.sqf index 426cd645d..cdb722de5 100644 --- a/addons/area_markers/functions/fnc_isEditable.sqf +++ b/addons/area_markers/functions/fnc_isEditable.sqf @@ -17,4 +17,6 @@ params ["_marker"]; -markerShape _marker in ["RECTANGLE", "ELLIPSE"] && {GVAR(blacklist) findIf {_x in _marker} == -1} +markerShape _marker in ["RECTANGLE", "ELLIPSE"] +&& {GVAR(blacklist) findIf {_x in _marker} == -1} +&& {GVAR(editableMarkers) == EDITABLE_MARKERS_ALL || {QUOTE(ADDON) in _marker}} diff --git a/addons/area_markers/initSettings.sqf b/addons/area_markers/initSettings.sqf new file mode 100644 index 000000000..c24b2991d --- /dev/null +++ b/addons/area_markers/initSettings.sqf @@ -0,0 +1,25 @@ +[ + QGVAR(editableMarkers), + "LIST", + [LSTRING(EditableMarkers), LSTRING(EditableMarkers_Description)], + [ELSTRING(main,DisplayName), LSTRING(DisplayName)], + [ + [ + EDITABLE_MARKERS_ALL, + EDITABLE_MARKERS_ONLY_ZEUS_CREATED + ], + [ + [LSTRING(AllMarkers), LSTRING(AllMarkers_Description)], + [LSTRING(OnlyZeusCreated), LSTRING(OnlyZeusCreated_Description)] + ], + 0 + ], + true, + { + // Manually trigger event to update editability of all markers based on the setting + // Also handles 3DEN placed and already existent (JIP) markers + { + _x call FUNC(onMarkerUpdated); + } forEach allMapMarkers; + } +] call CBA_fnc_addSetting; diff --git a/addons/area_markers/script_component.hpp b/addons/area_markers/script_component.hpp index 868b15893..f7d202e16 100644 --- a/addons/area_markers/script_component.hpp +++ b/addons/area_markers/script_component.hpp @@ -26,8 +26,7 @@ #define POS_H(N) ((N) * GUI_GRID_H) #define ICON_SIZE 0.6 - -#define ICON_WIDTH POS_W(ICON_SIZE) +#define ICON_WIDTH POS_W(ICON_SIZE) #define ICON_HEIGHT POS_H(ICON_SIZE) #define OFFSET_X POS_W(ICON_SIZE / 2) @@ -56,3 +55,6 @@ #define IDC_CONFIGURE_CANCEL 42881 #define IDCS_CONFIGURE_EDIT_BOXES [IDC_CONFIGURE_SIZE_A, IDC_CONFIGURE_SIZE_B, IDC_CONFIGURE_ROTATION_EDIT, IDC_CONFIGURE_ALPHA_EDIT] + +#define EDITABLE_MARKERS_ALL 0 +#define EDITABLE_MARKERS_ONLY_ZEUS_CREATED 1 diff --git a/addons/area_markers/stringtable.xml b/addons/area_markers/stringtable.xml index ed733031b..0299b6ee2 100644 --- a/addons/area_markers/stringtable.xml +++ b/addons/area_markers/stringtable.xml @@ -1,6 +1,27 @@ + + Area Markers + + + Editable Markers + + + Controls which area markers are editable through Zeus. + + + All Markers + + + All area markers (including those placed in 3DEN or created through script) are editable unless manually blacklisted. + + + Only Zeus Created + + + Only area markers created through Zeus are editable. + Create Area Marker Создать Маркер Области