From f254eb4936296502be91ce0f7a45cc608016d6cc Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Wed, 26 Feb 2025 23:56:46 -0600 Subject: [PATCH 01/13] initial mockup --- addons/adminMenu/Interrupt_adminMenu.hpp | 60 +++++++++++++++---- addons/adminMenu/XEH_PREP.hpp | 4 +- .../fnc_uihook_closeMarkerEditUI.sqf | 16 +++++ .../functions/fnc_uihook_openMarkerEditUI.sqf | 17 ++++++ addons/adminMenu/script_component.hpp | 2 + 5 files changed, 88 insertions(+), 11 deletions(-) create mode 100644 addons/adminMenu/functions/fnc_uihook_closeMarkerEditUI.sqf create mode 100644 addons/adminMenu/functions/fnc_uihook_openMarkerEditUI.sqf diff --git a/addons/adminMenu/Interrupt_adminMenu.hpp b/addons/adminMenu/Interrupt_adminMenu.hpp index 30fa479f..371d3b49 100644 --- a/addons/adminMenu/Interrupt_adminMenu.hpp +++ b/addons/adminMenu/Interrupt_adminMenu.hpp @@ -594,38 +594,45 @@ class GVAR(adminMenuDialog) { class attachMarkerToGroup: attachMarkerToClient { text = "Attach Marker to Unit Group"; tooltip = "Attaches selected marker to the selected unit's group."; - y = QUOTE(0.1 * safezoneH); + y = QUOTE(0.08 * safezoneH); action = QUOTE([] call FUNC(uihook_attachMarkerGroup)); }; class detatchMarker: attachMarkerToClient { - idc = -1; text = "Detatch Marker"; tooltip = "Removes the selected marker attached object.\nGroup markers may be reattached by group."; - y = QUOTE(0.18 * safezoneH); + y = QUOTE(0.14 * safezoneH); action = QUOTE([] call FUNC(uihook_detachMarker)); }; class deleteMarker: attachMarkerToClient { - idc = -1; text = "Delete Marker"; - y = QUOTE(0.26 * safezoneH); + y = QUOTE(0.2 * safezoneH); action = QUOTE([] call FUNC(uihook_deleteMarker)); }; + class createMarkerOnSelected: attachMarkerToClient { + text = "Create Marker"; + tooltip = "Create a group or unit marker on the\nselected unit's group or unit"; + y = QUOTE(0.26 * safezoneH); + action = QUOTE(createDialog QQGVAR(markerDialog)); + }; + class editSelectedMarker: attachMarkerToClient { + text = "Edit Marker"; + tooltip = "Edit the selected marker."; + y = QUOTE(0.32 * safezoneH); + action = QUOTE(createDialog QQGVAR(markerDialog)); + }; class fixMarkerKey: attachMarkerToClient { - idc = -1; text = "Reload Unit Local Markers"; tooltip = "Reloads the selected clients\nmarkers from their local marker caches"; - y = QUOTE(0.34 * safezoneH); + y = QUOTE(0.38 * safezoneH); action = QUOTE([] call FUNC(uihook_resetMarkersButton)); }; class resetAllMarkers: attachMarkerToClient { - idc = -1; text = "Reload All Client Markers"; tooltip = "Reloads every clients markers from\ntheir local marker caches"; - y = QUOTE(0.42 * safezoneH); + y = QUOTE(0.44 * safezoneH); action = QUOTE(remoteExecCall [QQEFUNC(markers,reinitMarkerHash)]; [] call FUNC(reloadMarkersTab);); }; class initServerMarks: attachMarkerToClient { - idc = -1; text = "Reinit Server AI Markers"; tooltip = "Sometimes AI are spawned with markers on the server after\nthe init runs. Run again to fix missing AI markers."; y = QUOTE(0.5 * safezoneH); @@ -635,3 +642,36 @@ class GVAR(adminMenuDialog) { }; }; }; + +class GVAR(markerDialog) { + idd = POTATO_MARKER_MENU_IDD; + movingEnable = 1; + enableSimulation = 1; + enableDisplay = 1; + onLoad = QUOTE(call FUNC(uihook_openMarkerEditUI)); + onUnload = QUOTE(call FUNC(uihook_openMarkerEditUI)); + fadein = 0; + fadeout = 0; + class controlsBackground { + class RscPicturexxxxx: RscPicture { + idc = -1; + text = "#(argb,8,8,3)color(0,0,0,0.5)"; + x = QUOTE(0.3 * safezoneW + safezoneX); + y = QUOTE(0.3 * safezoneH + safezoneY); + w = QUOTE(0.5 * safezoneW); + h = QUOTE(0.5 * safezoneH); + }; + class RscFramexxxx: RscFrame { + idc = -1; + text = ""; + x = QUOTE(0.3 * safezoneW + safezoneX); + y = QUOTE(0.3 * safezoneH + safezoneY); + w = QUOTE(0.5 * safezoneW); + h = QUOTE(0.5 * safezoneH); + }; + }; + class controls { + class RscListbox_1500: RscListBox { + }; + }; +}; diff --git a/addons/adminMenu/XEH_PREP.hpp b/addons/adminMenu/XEH_PREP.hpp index 966642d3..c495eeee 100644 --- a/addons/adminMenu/XEH_PREP.hpp +++ b/addons/adminMenu/XEH_PREP.hpp @@ -11,6 +11,7 @@ PREP(uihook_attachMarkerGroup); PREP(uihook_attachMarkerUnit); PREP(uihook_checkboxes); PREP(uihook_checkMods); +PREP(uihook_closeMarkerEditUI); PREP(uihook_checkSettings); PREP(uihook_detachMarker); PREP(uihook_deleteMarker); @@ -18,8 +19,9 @@ PREP(uihook_endMission); PREP(uihook_missionHint); PREP(uihook_openEndMission); PREP(uihook_giveAdminGun); -PREP(uihook_safeStart); PREP(uihook_tabChange); +PREP(uihook_openMarkerEditUI); +PREP(uihook_safeStart); PREP(uihook_supplySpawn); PREP(uihook_resetGearButton); PREP(uihook_resetMarkersButton); diff --git a/addons/adminMenu/functions/fnc_uihook_closeMarkerEditUI.sqf b/addons/adminMenu/functions/fnc_uihook_closeMarkerEditUI.sqf new file mode 100644 index 00000000..1202e9a2 --- /dev/null +++ b/addons/adminMenu/functions/fnc_uihook_closeMarkerEditUI.sqf @@ -0,0 +1,16 @@ +#include "script_component.hpp" +/* + * Author: Lambda.Tiger + * Attach marker to a unit based on currrent selections in the admin menu; + * + * Arguments: + * None + * + * Return Value: + * None + * + * Examples: + * [false] call potato_adminMenu_uihook_openMarkersEditUI; + * + * Public: No + */ \ No newline at end of file diff --git a/addons/adminMenu/functions/fnc_uihook_openMarkerEditUI.sqf b/addons/adminMenu/functions/fnc_uihook_openMarkerEditUI.sqf new file mode 100644 index 00000000..f5153838 --- /dev/null +++ b/addons/adminMenu/functions/fnc_uihook_openMarkerEditUI.sqf @@ -0,0 +1,17 @@ +#include "script_component.hpp" +/* + * Author: Lambda.Tiger + * Attach marker to a unit based on currrent selections in the admin menu; + * + * Arguments: + * None + * + * Return Value: + * None + * + * Examples: + * [false] call potato_adminMenu_uihook_openMarkersEditUI; + * + * Public: No + */ +params [["_addMarker", false, [false]]]; diff --git a/addons/adminMenu/script_component.hpp b/addons/adminMenu/script_component.hpp index a8387ec9..f5eaa939 100644 --- a/addons/adminMenu/script_component.hpp +++ b/addons/adminMenu/script_component.hpp @@ -49,3 +49,5 @@ #define UI_TABS_CONTROLS [UI_TAB_ZEUS, UI_TAB_SUPPLIES, UI_TAB_END, UI_TAB_TELEPORT, UI_TAB_SAFESTART, UI_TAB_CHECKMODS, UI_TAB_MISSIONHINT, UI_TAB_FIX_UNIT, UI_TAB_GIVE_ITEMS, UI_TAB_MARKERS] #define UI_TABS_INDEX_MARKERS 9 + +#define POTATO_MARKER_MENU_IDD 250224 From 7d9c996018a19f0d4bc31923ae5f4eb96b78268a Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Wed, 26 Feb 2025 23:58:01 -0600 Subject: [PATCH 02/13] put testing buttons on bottom again --- addons/adminMenu/Interrupt_adminMenu.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/adminMenu/Interrupt_adminMenu.hpp b/addons/adminMenu/Interrupt_adminMenu.hpp index 371d3b49..7fb94e3b 100644 --- a/addons/adminMenu/Interrupt_adminMenu.hpp +++ b/addons/adminMenu/Interrupt_adminMenu.hpp @@ -411,32 +411,32 @@ class GVAR(adminMenuDialog) { h = QUOTE(0.05 * safezoneH); action = QUOTE([] call FUNC(uihook_checkMods);); }; - class RscButton_160055444: RscButton { + class RscButton_DumbSettings: RscButton { idc = -1; - text = "Weapons Test"; //--- ToDo: Localize; + text = "Check Server's Profile Settings"; x = QUOTE(0.01 * safezoneW); y = QUOTE(0.08 * safezoneH); w = QUOTE(0.52 * safezoneW); h = QUOTE(0.05 * safezoneH); - action = QUOTE([] call FUNC(uihook_weaponTest)); + action = QUOTE([] call FUNC(uihook_checkSettings)); }; - class RscButton_MissionTesting: RscButton { + class RscButton_160055444: RscButton { idc = -1; - text = "Enable Mission Checklist"; //--- ToDo: Localize; + text = "Weapons Test"; //--- ToDo: Localize; x = QUOTE(0.01 * safezoneW); y = QUOTE(0.15 * safezoneH); w = QUOTE(0.52 * safezoneW); h = QUOTE(0.05 * safezoneH); - action = QUOTE([] call FUNC(uihook_enableMissionTesting)); + action = QUOTE([] call FUNC(uihook_weaponTest)); }; - class RscButton_DumbSettings: RscButton { + class RscButton_MissionTesting: RscButton { idc = -1; - text = "Check Server's Profile Settings"; + text = "Enable Mission Checklist"; //--- ToDo: Localize; x = QUOTE(0.01 * safezoneW); y = QUOTE(0.22 * safezoneH); w = QUOTE(0.52 * safezoneW); h = QUOTE(0.05 * safezoneH); - action = QUOTE([] call FUNC(uihook_checkSettings)); + action = QUOTE([] call FUNC(uihook_enableMissionTesting)); }; }; }; From 365cf8026b155e6794b3fef8ff908f116c606535 Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 14:43:15 -0600 Subject: [PATCH 03/13] Handle new changes to hashKey name changes --- addons/adminMenu/functions/fnc_uihook_tabChange.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/adminMenu/functions/fnc_uihook_tabChange.sqf b/addons/adminMenu/functions/fnc_uihook_tabChange.sqf index 3f4fec3b..d7716dba 100644 --- a/addons/adminMenu/functions/fnc_uihook_tabChange.sqf +++ b/addons/adminMenu/functions/fnc_uihook_tabChange.sqf @@ -282,9 +282,9 @@ case UI_TABS_INDEX_MARKERS: { [ _display displayCtrl IDC_LISTBOX_MARKERS_PLAYERS, { - private _markerArr = EGVAR(markers,markerHash) getOrDefault [str _this, []]; + private _markerArr = EGVAR(markers,markerHash) getOrDefault [str side _this + str _this, []]; if (_markerArr isEqualTo []) then { - _markerArr = EGVAR(markers,markerHash) getOrDefault [groupId group _this, [objNull, ""]]; + _markerArr = EGVAR(markers,markerHash) getOrDefault [str side _this + groupId group _this, [objNull, ""]]; }; private _markerText = ["", _markerArr#1] select (_markerArr#0 == _this); private _side = if (count _markerArr >= 7) then { From 54804f0d9ce794bf8d422ea0ce598e69eb49a887 Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 14:43:35 -0600 Subject: [PATCH 04/13] split off marker defines for inclusion in adminMenu --- addons/markers/defaultMarkerDefines.hpp | 125 ++++++++++++++++++++++++ addons/markers/script_component.hpp | 125 +----------------------- 2 files changed, 126 insertions(+), 124 deletions(-) create mode 100644 addons/markers/defaultMarkerDefines.hpp diff --git a/addons/markers/defaultMarkerDefines.hpp b/addons/markers/defaultMarkerDefines.hpp new file mode 100644 index 00000000..ee629d5e --- /dev/null +++ b/addons/markers/defaultMarkerDefines.hpp @@ -0,0 +1,125 @@ +#define RED_ARRAY [0.9,0,0,1] +#define YELLOW_ARRAY [0.9,0.9,0,1] +#define GREEN_ARRAY [0,0.8,0,1] +#define BLUE_ARRAY [0,0,1,1] +#define WHITE_ARRAY [1,1,1,1] +#define ORANGE_ARRAY [1,0.647,0,1] +#define BLACK_ARRAY [0,0,0,1] +#define PINK_ARRAY [1,0.753,0.796,1] + +#define COLOR_TO_MARKER_HASH [\ + [\ + QUOTE(RED_ARRAY),\ + QUOTE(YELLOW_ARRAY),\ + QUOTE(GREEN_ARRAY),\ + QUOTE(BLUE_ARRAY),\ + QUOTE(WHITE_ARRAY),\ + QUOTE(ORANGE_ARRAY),\ + QUOTE(BLACK_ARRAY),\ + QUOTE(PINK_ARRAY)\ + ], [\ + "Red",\ + "Yellow",\ + "Green",\ + "Blue",\ + "White",\ + "Yellow",\ + "Black",\ + "White"\ + ]\ +] + +#define COLOR_INDEX_ARRAY [\ + RED_ARRAY,\ + YELLOW_ARRAY,\ + GREEN_ARRAY,\ + BLUE_ARRAY,\ + WHITE_ARRAY,\ + ORANGE_ARRAY,\ + BLACK_ARRAY,\ + PINK_ARRAY\ +] + +#define DEFAULT_MARKER_TEXT "" +#define DEFAULT_MARKER_ICON QPATHTOF(data\infantry.paa) +#define DEFAULT_MARKER_ICON_INDEX 1 +#define DEFAULT_MARKER_COLOR_TEXT "white" +#define DEFAULT_MARKER_COLOR WHITE_ARRAY +#define DEFAULT_MARKER_COLOR_INDEX 4 +#define DEFAULT_MARKER_SIZE 24 + +#define UNIT_MARKER_ICON "\A3\ui_f\data\map\markers\military\start_CA.paa" +#define UNIT_MARKER_SIZE 12 + +#define UNIT_MARKERS 'PATHTOF(data\unknown.paa)',\ +'PATHTOF(data\infantry.paa)',\ +'PATHTOF(data\motorized_infantry.paa)',\ +'PATHTOF(data\mechanized_infantry.paa)',\ +'PATHTOF(data\hq.paa)',\ +'PATHTOF(data\mmg.paa)',\ +'PATHTOF(data\mat.paa)',\ +'PATHTOF(data\msam.paa)',\ +'PATHTOF(data\mortar.paa)',\ +'PATHTOF(data\engineer.paa)',\ +'PATHTOF(data\maintenance.paa)',\ +'PATHTOF(data\recon.paa)',\ +'PATHTOF(data\support.paa)',\ +'PATHTOF(data\medical.paa)',\ +'PATHTOF(data\artillery.paa)',\ +'PATHTOF(data\armor.paa)',\ +'PATHTOF(data\helicopter.paa)',\ +'PATHTOF(data\attack_helicopter.paa)',\ +'PATHTOF(data\fixed_wing.paa)',\ +'PATHTOF(data\attack_fixed_wing.paa)' + +#define UNIT_MARKERS_STRINGS QPATHTOF(data\unknown.paa),\ +QPATHTOF(data\infantry.paa),\ +QPATHTOF(data\motorized_infantry.paa),\ +QPATHTOF(data\mechanized_infantry.paa),\ +QPATHTOF(data\hq.paa),\ +QPATHTOF(data\mmg.paa),\ +QPATHTOF(data\mat.paa),\ +QPATHTOF(data\msam.paa),\ +QPATHTOF(data\mortar.paa),\ +QPATHTOF(data\engineer.paa),\ +QPATHTOF(data\maintenance.paa),\ +QPATHTOF(data\recon.paa),\ +QPATHTOF(data\support.paa),\ +QPATHTOF(data\medical.paa),\ +QPATHTOF(data\artillery.paa),\ +QPATHTOF(data\armor.paa),\ +QPATHTOF(data\helicopter.paa),\ +QPATHTOF(data\attack_helicopter.paa),\ +QPATHTOF(data\fixed_wing.paa),\ +QPATHTOF(data\attack_fixed_wing.paa) + +// e.g. "'\z\potato\addons\markers\data\unknown.paa'" +#define UNIT_MARKERS_STRINGS_STRINGS QUOTE('PATHTOF(data\unknown.paa)'),\ +QUOTE('PATHTOF(data\infantry.paa)'),\ +QUOTE('PATHTOF(data\motorized_infantry.paa)'),\ +QUOTE('PATHTOF(data\mechanized_infantry.paa)'),\ +QUOTE('PATHTOF(data\hq.paa)'),\ +QUOTE('PATHTOF(data\mmg.paa)'),\ +QUOTE('PATHTOF(data\mat.paa)'),\ +QUOTE('PATHTOF(data\msam.paa)'),\ +QUOTE('PATHTOF(data\mortar.paa)'),\ +QUOTE('PATHTOF(data\engineer.paa)'),\ +QUOTE('PATHTOF(data\maintenance.paa)'),\ +QUOTE('PATHTOF(data\recon.paa)'),\ +QUOTE('PATHTOF(data\support.paa)'),\ +QUOTE('PATHTOF(data\medical.paa)'),\ +QUOTE('PATHTOF(data\artillery.paa)'),\ +QUOTE('PATHTOF(data\armor.paa)'),\ +QUOTE('PATHTOF(data\helicopter.paa)'),\ +QUOTE('PATHTOF(data\attack_helicopter.paa)'),\ +QUOTE('PATHTOF(data\fixed_wing.paa)'),\ +QUOTE('PATHTOF(data\attack_fixed_wing.paa)') + +#define UNIT_MARKER_SIZES 16,24,32 +#define UNIT_MARKER_SIZES_STRINGS "Small","Medium","Large" + +#define UNIT_MARKER_COLORS "white","red","blue","green","orange","yellow","pink","black" +#define UNIT_MARKER_COLORS_STRINGS "White","Red","Blue","Green","Orange","Yellow","Pink","Black" + +#define POTATO_MARKER_JIP_PREFIX "marker:" +#define POTATO_MARKER_JIP_PREFIX_LENGTH 7 diff --git a/addons/markers/script_component.hpp b/addons/markers/script_component.hpp index b16faf24..7a89b7d2 100644 --- a/addons/markers/script_component.hpp +++ b/addons/markers/script_component.hpp @@ -20,131 +20,8 @@ #define MAP_IDC 51 #define GPS_IDC 101 -#define RED_ARRAY [0.9,0,0,1] -#define YELLOW_ARRAY [0.9,0.9,0,1] -#define GREEN_ARRAY [0,0.8,0,1] -#define BLUE_ARRAY [0,0,1,1] -#define WHITE_ARRAY [1,1,1,1] -#define ORANGE_ARRAY [1,0.647,0,1] -#define BLACK_ARRAY [0,0,0,1] -#define PINK_ARRAY [1,0.753,0.796,1] +#include "defaultMarkerDefines.hpp" -#define COLOR_TO_MARKER_HASH [\ - [\ - QUOTE(RED_ARRAY),\ - QUOTE(YELLOW_ARRAY),\ - QUOTE(GREEN_ARRAY),\ - QUOTE(BLUE_ARRAY),\ - QUOTE(WHITE_ARRAY),\ - QUOTE(ORANGE_ARRAY),\ - QUOTE(BLACK_ARRAY),\ - QUOTE(PINK_ARRAY)\ - ], [\ - "Red",\ - "Yellow",\ - "Green",\ - "Blue",\ - "White",\ - "Yellow",\ - "Black",\ - "White"\ - ]\ -] - -#define COLOR_INDEX_ARRAY [\ - RED_ARRAY,\ - YELLOW_ARRAY,\ - GREEN_ARRAY,\ - BLUE_ARRAY,\ - WHITE_ARRAY,\ - ORANGE_ARRAY,\ - BLACK_ARRAY,\ - PINK_ARRAY\ -] - -#define DEFAULT_MARKER_TEXT "" -#define DEFAULT_MARKER_ICON QPATHTOF(data\infantry.paa) -#define DEFAULT_MARKER_ICON_INDEX 1 -#define DEFAULT_MARKER_COLOR_TEXT "white" -#define DEFAULT_MARKER_COLOR WHITE_ARRAY -#define DEFAULT_MARKER_COLOR_INDEX 4 -#define DEFAULT_MARKER_SIZE 24 - -#define UNIT_MARKER_ICON "\A3\ui_f\data\map\markers\military\start_CA.paa" -#define UNIT_MARKER_SIZE 12 - -#define UNIT_MARKERS 'PATHTOF(data\unknown.paa)',\ -'PATHTOF(data\infantry.paa)',\ -'PATHTOF(data\motorized_infantry.paa)',\ -'PATHTOF(data\mechanized_infantry.paa)',\ -'PATHTOF(data\hq.paa)',\ -'PATHTOF(data\mmg.paa)',\ -'PATHTOF(data\mat.paa)',\ -'PATHTOF(data\msam.paa)',\ -'PATHTOF(data\mortar.paa)',\ -'PATHTOF(data\engineer.paa)',\ -'PATHTOF(data\maintenance.paa)',\ -'PATHTOF(data\recon.paa)',\ -'PATHTOF(data\support.paa)',\ -'PATHTOF(data\medical.paa)',\ -'PATHTOF(data\artillery.paa)',\ -'PATHTOF(data\armor.paa)',\ -'PATHTOF(data\helicopter.paa)',\ -'PATHTOF(data\attack_helicopter.paa)',\ -'PATHTOF(data\fixed_wing.paa)',\ -'PATHTOF(data\attack_fixed_wing.paa)' - -#define UNIT_MARKERS_STRINGS QPATHTOF(data\unknown.paa),\ -QPATHTOF(data\infantry.paa),\ -QPATHTOF(data\motorized_infantry.paa),\ -QPATHTOF(data\mechanized_infantry.paa),\ -QPATHTOF(data\hq.paa),\ -QPATHTOF(data\mmg.paa),\ -QPATHTOF(data\mat.paa),\ -QPATHTOF(data\msam.paa),\ -QPATHTOF(data\mortar.paa),\ -QPATHTOF(data\engineer.paa),\ -QPATHTOF(data\maintenance.paa),\ -QPATHTOF(data\recon.paa),\ -QPATHTOF(data\support.paa),\ -QPATHTOF(data\medical.paa),\ -QPATHTOF(data\artillery.paa),\ -QPATHTOF(data\armor.paa),\ -QPATHTOF(data\helicopter.paa),\ -QPATHTOF(data\attack_helicopter.paa),\ -QPATHTOF(data\fixed_wing.paa),\ -QPATHTOF(data\attack_fixed_wing.paa) - -// e.g. "'\z\potato\addons\markers\data\unknown.paa'" -#define UNIT_MARKERS_STRINGS_STRINGS QUOTE('PATHTOF(data\unknown.paa)'),\ -QUOTE('PATHTOF(data\infantry.paa)'),\ -QUOTE('PATHTOF(data\motorized_infantry.paa)'),\ -QUOTE('PATHTOF(data\mechanized_infantry.paa)'),\ -QUOTE('PATHTOF(data\hq.paa)'),\ -QUOTE('PATHTOF(data\mmg.paa)'),\ -QUOTE('PATHTOF(data\mat.paa)'),\ -QUOTE('PATHTOF(data\msam.paa)'),\ -QUOTE('PATHTOF(data\mortar.paa)'),\ -QUOTE('PATHTOF(data\engineer.paa)'),\ -QUOTE('PATHTOF(data\maintenance.paa)'),\ -QUOTE('PATHTOF(data\recon.paa)'),\ -QUOTE('PATHTOF(data\support.paa)'),\ -QUOTE('PATHTOF(data\medical.paa)'),\ -QUOTE('PATHTOF(data\artillery.paa)'),\ -QUOTE('PATHTOF(data\armor.paa)'),\ -QUOTE('PATHTOF(data\helicopter.paa)'),\ -QUOTE('PATHTOF(data\attack_helicopter.paa)'),\ -QUOTE('PATHTOF(data\fixed_wing.paa)'),\ -QUOTE('PATHTOF(data\attack_fixed_wing.paa)') - -#define UNIT_MARKER_SIZES 16,24,32 -#define UNIT_MARKER_SIZES_STRINGS "Small","Medium","Large" - -#define UNIT_MARKER_COLORS "white","red","blue","green","orange","yellow","pink","black" -#define UNIT_MARKER_COLORS_STRINGS "White","Red","Blue","Green","Orange","Yellow","Pink","Black" - -#define POTATO_MARKER_JIP_PREFIX "marker:" -#define POTATO_MARKER_JIP_PREFIX_LENGTH 7 #define MARKER_DRAW_HASH_REFRESH_TIME 30 #include "\z\potato\addons\core\script_macros.hpp" From 6895b464d86c10da0a4994e3358ffad19a4e5243 Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 14:44:13 -0600 Subject: [PATCH 05/13] Fix methods to use current keys and also persistent markers --- .../functions/fnc_uihook_attachMarkerGroup.sqf | 17 +++++++++++------ .../functions/fnc_uihook_attachMarkerUnit.sqf | 17 ++++++++++------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf b/addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf index aa618732..b65702be 100644 --- a/addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf +++ b/addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf @@ -1,4 +1,5 @@ #include "script_component.hpp" +#include "\z\potato\addons\markers\defaultMarkerDefines.hpp" /* * Author: Lambda.Tiger * Attach marker to a group based on currrent selections in the admin menu; @@ -38,12 +39,16 @@ if (_markerArray isEqualTo []) exitWith { TRACE_1("Bad marker selected",_hashKey); }; if (group (_markerArray#0) != group _selectedUnit) then { - private _newHashKey = groupId group _selectedUnit; - [ - _newHashKey, - getPosATL _selectedUnit, _selectedUnit, side _selectedUnit, - _markerArray#1, _markerArray#3, _markerArray#2, _markerArray#4 - ] remoteExecCall [QEFUNC(markers,addMarker)]; + private _newHashKey = str side _selectedUnit + groupId group _selectedUnit; + private _newMarkerArray = [_newHashKey, getPosATL _selectedUnit, + _selectedUnit, side _selectedUnit, _markerArray#1, _markerArray#3, + _markerArray#2, _markerArray#4]; + private _endIndex = 8; + if (_size == DEFAULT_MARKER_SIZE) then {_endIndex = 7}; + if (_icon == DEFAULT_MARKER_ICON_INDEX && _endIndex == 7) then {_endIndex = 6}; + _newMarkerArray = _newMarkerArray select [0, _endIndex]; + EGVAR(markers,markerCache) setVariable [POTATO_MARKER_JIP_PREFIX + _newHashKey, _newMarkerArray, true]; + _newMarkerArray remoteExecCall [QEFUNC(markers,addMarker)]; [_hashKey] remoteExecCall [QEFUNC(markers,deleteMarker)]; } else { [_hashKey, _selectedUnit] remoteExecCall [QEFUNC(markers,transferMarker)]; diff --git a/addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf b/addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf index 8ff4355d..0fff8856 100644 --- a/addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf +++ b/addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf @@ -1,4 +1,5 @@ #include "script_component.hpp" +#include "\z\potato\addons\markers\defaultMarkerDefines.hpp" /* * Author: Lambda.Tiger * Attach marker to a unit based on currrent selections in the admin menu; @@ -38,17 +39,19 @@ if (_markerArray isEqualTo []) exitWith { TRACE_1("Bad marker selected",_hashKey); }; -private _newHashKey = str _selectedUnit; +private _newHashKey = str side _selectedUnit + str _selectedUnit; private _itr = 0; while {(_newHashKey == _hashKey || (_newHashKey in EGVAR(markers,markerHash))) && _itr < 25 } do { - _newHashKey = (str _selectedUnit) + str _itr; + _newHashKey = str side _selectedUnit + str _selectedUnit + str _itr; _itr = _itr + 1; }; -[ - _newHashKey, - getPosATL _selectedUnit, _selectedUnit, side _selectedUnit, - _markerArray#1, _markerArray#3, _markerArray#2, _markerArray#4 -] remoteExecCall [QEFUNC(markers,addMarker)]; +private _newMarkerArray = [_newHashKey, getPosATL _selectedUnit, _selectedUnit, side _selectedUnit, _markerArray#1, _markerArray#3, _markerArray#2, _markerArray#4]; +private _endIndex = 8; +if (_size == DEFAULT_MARKER_SIZE) then {_endIndex = 7}; +if (_icon == DEFAULT_MARKER_ICON_INDEX && _endIndex == 7) then {_endIndex = 6}; +_newMarkerArray = _newMarkerArray select [0, _endIndex]; +EGVAR(markers,markerCache) setVariable [POTATO_MARKER_JIP_PREFIX + _newHashKey, _newMarkerArray, true]; +_newMarkerArray remoteExecCall [QEFUNC(markers,addMarker)]; [_hashKey] remoteExecCall [QEFUNC(markers,deleteMarker)]; ["potato_adminMsg", [ From 30e8e3b8669dd775fe7e2a40f26d562e8869b8c8 Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 14:45:51 -0600 Subject: [PATCH 06/13] chose name --- addons/adminMenu/XEH_PREP.hpp | 3 +- .../fnc_uihook_handleMarkerDialogUI.sqf | 108 ++++++++++++++++++ .../functions/fnc_uihook_openMarkerEditUI.sqf | 17 --- 3 files changed, 109 insertions(+), 19 deletions(-) create mode 100644 addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf delete mode 100644 addons/adminMenu/functions/fnc_uihook_openMarkerEditUI.sqf diff --git a/addons/adminMenu/XEH_PREP.hpp b/addons/adminMenu/XEH_PREP.hpp index c495eeee..0d574fa4 100644 --- a/addons/adminMenu/XEH_PREP.hpp +++ b/addons/adminMenu/XEH_PREP.hpp @@ -11,7 +11,6 @@ PREP(uihook_attachMarkerGroup); PREP(uihook_attachMarkerUnit); PREP(uihook_checkboxes); PREP(uihook_checkMods); -PREP(uihook_closeMarkerEditUI); PREP(uihook_checkSettings); PREP(uihook_detachMarker); PREP(uihook_deleteMarker); @@ -19,8 +18,8 @@ PREP(uihook_endMission); PREP(uihook_missionHint); PREP(uihook_openEndMission); PREP(uihook_giveAdminGun); +PREP(uihook_handleMarkerDialogUI); PREP(uihook_tabChange); -PREP(uihook_openMarkerEditUI); PREP(uihook_safeStart); PREP(uihook_supplySpawn); PREP(uihook_resetGearButton); diff --git a/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf b/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf new file mode 100644 index 00000000..3fb9cb65 --- /dev/null +++ b/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf @@ -0,0 +1,108 @@ +#include "script_component.hpp" + +#ifdef GLUE + #undef GLUE +#endif +#define GLUE(var1,var2) var1##var2 +#ifdef PATHTOF + #undef PATHTOF +#endif +#define PATHTOF(var) GLUE(\z\potato\addons\markers\,var) +#ifdef QPATHTOF + #undef QPATHTOF +#endif +#define QPATHTOF(var) QUOTE(PATHTOF(var)) +#include "\z\potato\addons\markers\defaultMarkerDefines.hpp" +/* + * Author: Lambda.Tiger + * Attach marker to a unit based on currrent selections in the admin menu; + * + * Arguments: + * None + * + * Return Value: + * None + * + * Examples: + * [false] call potato_adminMenu_uihook_openMarkersEditUI; + * + * Public: No + */ +params [ + ["_display", displayNull, [displayNull]], + ["_exitCode", -1, [0, configNull]] +]; +systemChat format ["func params: %1 %2", _display, _exitCode]; +if (_exitCode isEqualType configNull) then {_exitCode = -1}; +switch (_exitCode) do { + case -1: { // opening + private _markerControl = UI_TAB_MARKERS_MARKERS; + private _selectedMarkerIndex = lbCurSel _markerControl; + if (GVAR(editMarker) && _selectedMarkerIndex >= 0) then { // we need an active marker + private _hashKey = _markerControl lbData _selectedMarkerIndex; + private _markerArray = EGVAR(markers,markerHash) getOrDefault [_hashKey, []]; + if (_markerArray isEqualTo []) exitWith {10 closeDisplay _display}; + _markerArray params ["", "_text", "_icon", "_color", "_size"]; + + // Setup the display for the current marker + (_display displayCtrl POTATO_MARKER_TEXT_IDC) ctrlSetText _text; + private _colorIdx = COLOR_INDEX_ARRAY find _color; + if (_colorIdx >= 0 && _colorIdx < 8) then { + (_display displayCtrl POTATO_MARKER_COLOR_IDC) lbSetCurSel _colorIdx; + }; + switch (_size) do { + case 16: {(_display displayCtrl POTATO_MARKER_SIZE_IDC) lbSetCurSel 0}; + case 32: {(_display displayCtrl POTATO_MARKER_SIZE_IDC) lbSetCurSel 2}; + default {(_display displayCtrl POTATO_MARKER_SIZE_IDC) lbSetCurSel 1}; + }; + private _iconIdx = [UNIT_MARKERS_STRINGS] find _icon; + if (_iconIdx >= 0 && _iconIdx < 20) then { + (_display displayCtrl POTATO_MARKER_ICON_IDC) lbSetCurSel _iconIdx; + }; + (_display displayCtrl POTATO_MARKER_UNIT_IDC) ctrlShow false; + (_display displayCtrl POTATO_MARKER_OK_IDC) ctrlSetStructuredText text "Update
Date: Thu, 27 Feb 2025 14:47:02 -0600 Subject: [PATCH 07/13] Added marker handle updates --- addons/adminMenu/Interrupt_adminMenu.hpp | 278 +++++++++++++++++++++-- addons/adminMenu/script_component.hpp | 9 +- 2 files changed, 272 insertions(+), 15 deletions(-) diff --git a/addons/adminMenu/Interrupt_adminMenu.hpp b/addons/adminMenu/Interrupt_adminMenu.hpp index 7fb94e3b..8c780b35 100644 --- a/addons/adminMenu/Interrupt_adminMenu.hpp +++ b/addons/adminMenu/Interrupt_adminMenu.hpp @@ -10,6 +10,9 @@ class RscStructuredText; class RscButtonMenu; class RscEdit; class RscShortcutButton; +class RscButtonMenuCancel; +class RscButtonMenuOK; +class RscCheckbox; // Add Button to escape menu (borowed from AGM) @@ -612,13 +615,13 @@ class GVAR(adminMenuDialog) { text = "Create Marker"; tooltip = "Create a group or unit marker on the\nselected unit's group or unit"; y = QUOTE(0.26 * safezoneH); - action = QUOTE(createDialog QQGVAR(markerDialog)); + action = QUOTE(GVAR(editMarker) = false; findDisplay 6969 createDisplay QQGVAR(markerDialog)); }; class editSelectedMarker: attachMarkerToClient { text = "Edit Marker"; tooltip = "Edit the selected marker."; y = QUOTE(0.32 * safezoneH); - action = QUOTE(createDialog QQGVAR(markerDialog)); + action = QUOTE(GVAR(editMarker) = true; findDisplay 6969 createDisplay QQGVAR(markerDialog)); }; class fixMarkerKey: attachMarkerToClient { text = "Reload Unit Local Markers"; @@ -643,35 +646,282 @@ class GVAR(adminMenuDialog) { }; }; -class GVAR(markerDialog) { +#include "\z\potato\addons\markers\defaultMarkerDefines.hpp" +#ifdef GLUE + #undef GLUE +#endif +#define GLUE(var1,var2) var1##var2 +#define PATHTOFMARK(var) GLUE(\z\potato\addons\markers\,var) +#define QPATHTOFMARK(var) QUOTE(PATHTOFMARK(var)) + +class GVAR(markerDialog) { idd = POTATO_MARKER_MENU_IDD; movingEnable = 1; enableSimulation = 1; enableDisplay = 1; - onLoad = QUOTE(call FUNC(uihook_openMarkerEditUI)); - onUnload = QUOTE(call FUNC(uihook_openMarkerEditUI)); + onLoad = QUOTE(call FUNC(uihook_handleMarkerDialogUI)); + onUnload = QUOTE(call FUNC(uihook_handleMarkerDialogUI)); fadein = 0; fadeout = 0; class controlsBackground { - class RscPicturexxxxx: RscPicture { + class RscPictureBackground: RscPicture { idc = -1; text = "#(argb,8,8,3)color(0,0,0,0.5)"; - x = QUOTE(0.3 * safezoneW + safezoneX); + x = QUOTE(0.45 * safezoneW + safezoneX); y = QUOTE(0.3 * safezoneH + safezoneY); - w = QUOTE(0.5 * safezoneW); - h = QUOTE(0.5 * safezoneH); + w = QUOTE(0.2 * safezoneW); + h = QUOTE(0.35 * safezoneH); }; - class RscFramexxxx: RscFrame { + class RscFrameBackground: RscFrame { idc = -1; text = ""; - x = QUOTE(0.3 * safezoneW + safezoneX); + x = QUOTE(0.45 * safezoneW + safezoneX); + y = QUOTE(0.3 * safezoneH + safezoneY); + w = QUOTE(0.2 * safezoneW); + h = QUOTE(0.35 * safezoneH); + }; + class RscTitleText: RscText { + idc = -1; + style = 2; // centered + text = "Marker Dialog"; + x = QUOTE(0.45 * safezoneW + safezoneX); y = QUOTE(0.3 * safezoneH + safezoneY); - w = QUOTE(0.5 * safezoneW); - h = QUOTE(0.5 * safezoneH); + w = QUOTE(0.2 * safezoneW); + h = QUOTE(0.04 * safezoneH); + sizeEx = QUOTE(0.05 * safezoneH); }; }; class controls { - class RscListbox_1500: RscListBox { + class markerText_RscText: RscText { + style = 1; // Right aligned + tooltip = "Marker text usually 2-4 characters"; + text = "Marker Text"; + x = QUOTE(0.47 * safezoneW + safezoneX); + y = QUOTE(0.35 * safezoneH + safezoneY); + w = QUOTE(0.05 * safezoneW); + h = QUOTE(0.04 * safezoneH); + }; + class markerText_Rsc: RscEdit { + idc = POTATO_MARKER_TEXT_IDC; + tooltip = "Marker text usually 2-4 characters"; + x = QUOTE(0.525 * safezoneW + safezoneX); + y = QUOTE(0.354 * safezoneH + safezoneY); + w = QUOTE(0.1 * safezoneW); + h = QUOTE(0.03 * safezoneH); + canModify = 1; + text = ""; + maxChars = 10; + }; + class markerSize_RscText: markerText_RscText { + text = "Marker Size"; + y = QUOTE(0.39 * safezoneH + safezoneY); + tooltip = "Marker size, normally medium for groups and small for units"; + }; + class markerSize_RscCombo: RscCombo { + idc = POTATO_MARKER_SIZE_IDC; + x = QUOTE(0.525 * safezoneW + safezoneX); + y = QUOTE(0.395 * safezoneH + safezoneY); + w = QUOTE(0.1 * safezoneW); + h = QUOTE(0.03 * safezoneH); + tooltip = "Marker size, normally medium for groups and small for units"; + class Items { + class Small { + text = "Small"; + value = 16; + }; + class Medium { + text = "Medium"; + value = 24; + default = 1; + }; + class Large { + text = "Large"; + value = 32; + }; + }; + }; + class markerColor_RscText: markerText_RscText { + text = "Marker Color"; + y = QUOTE(0.43 * safezoneH + safezoneY); + }; + class markerColor_RscCombo: markerSize_RscCombo { + idc = POTATO_MARKER_COLOR_IDC; + y = QUOTE(0.435 * safezoneH + safezoneY); + tooltip = "Marker color"; + class Items { + class Red { + text = "Red"; + default = 1; + }; + class Yellow { + text = "Yellow"; + }; + class Green { + text = "Green"; + }; + class Blue { + text = "Blue"; + }; + class White { + text = "White"; + }; + class Orange { + text = "Orange"; + }; + class Black { + text = "Black"; + }; + class Pink { + text = "Pink"; + }; + }; + }; + class markerIcon_RscText: markerText_RscText { + text = "Marker Icon"; + y = QUOTE(0.47 * safezoneH + safezoneY); + tooltip = "Marker icon type"; + }; + class markerIcon_RscCombo: markerSize_RscCombo { + idc = POTATO_MARKER_ICON_IDC; + y = QUOTE(0.475 * safezoneH + safezoneY); + tooltip = "Marker icon type"; + class Items { + class Unknown { + text = "Unknown"; + pictureRight = QPATHTOFMARK(data\unknown.paa); + }; + class Infantry { + text = "Infantry"; + pictureRight = QPATHTOFMARK(data\infantry.paa); + default = 1; + }; + class motorized_infantry { + text = "Motorized Infantry"; + pictureRight = QPATHTOFMARK(data\motorized_infantry.paa); + }; + class mechanized_infantry { + text = "Mechanized Infantry"; + pictureRight = QPATHTOFMARK(data\mechanized_infantry.paa); + }; + class hq { + text = "HQ"; + pictureRight = QPATHTOFMARK(data\hq.paa); + }; + class mmg { + text = "MMG"; + pictureRight = QPATHTOFMARK(data\mmg.paa); + }; + class mat { + text = "MAT"; + pictureRight = QPATHTOFMARK(data\mat.paa); + }; + class msam { + text = "MSAM"; + pictureRight = QPATHTOFMARK(data\msam.paa); + }; + class mortar { + text = "Mortar"; + pictureRight = QPATHTOFMARK(data\mortar.paa); + }; + class engineer { + text = "Engineer"; + pictureRight = QPATHTOFMARK(data\engineer.paa); + }; + class maintenance { + text = "Maintenance"; + pictureRight = QPATHTOFMARK(data\maintenance.paa); + }; + class recon { + text = "Recon"; + pictureRight = QPATHTOFMARK(data\recon.paa); + }; + class support { + text = "Support"; + pictureRight = QPATHTOFMARK(data\support.paa); + }; + class medical { + text = "Medical"; + pictureRight = QPATHTOFMARK(data\medical.paa); + }; + class artillery { + text = "Atillery"; + pictureRight = QPATHTOFMARK(data\artillery.paa); + }; + class armor { + text = "Armor"; + pictureRight = QPATHTOFMARK(data\armor.paa); + }; + class helicopter { + text = "Helicopter"; + pictureRight = QPATHTOFMARK(data\helicopter.paa); + }; + class attack_helicopter { + text = "Attack Helicopter"; + pictureRight = QPATHTOFMARK(data\attack_helicopter.paa); + }; + class fixed_wing { + text = "Fixed Wing"; + pictureRight = QPATHTOFMARK(data\fixed_wing.paa); + }; + class attack_fixed_wing { + text = "Attack Fixed Wing"; + pictureRight = QPATHTOFMARK(data\attack_fixed_wing.paa); + }; + }; + }; + class markerUnit_RscText: markerText_RscText { + text = "Attach to Unit"; + tooltip = "Should the marker be attached to the unit or unit's group"; + y = QUOTE(0.51 * safezoneH + safezoneY); + }; + class markerUnit_RscCheckBox: RscCheckbox { + idc = POTATO_MARKER_UNIT_IDC; + tooltip = "Should the marker be attached to the unit or unit's group"; + x = QUOTE(0.525 * safezoneW + safezoneX); + y = QUOTE(0.515 * safezoneH + safezoneY); + w = QUOTE(0.02 * safezoneW); + h = QUOTE(0.03 * safezoneH); + }; + class RscButtonMenuOK_exit: RscButtonMenuOK { + idc = POTATO_MARKER_OK_IDC; + x = QUOTE(0.585 * safezoneW + safezoneX); + y = QUOTE(0.56 * safezoneH + safezoneY); + w = QUOTE(0.06 * safezoneW); + h = QUOTE(0.08 * safezoneH); + text = "Create"; + class Attributes { + font = "PuristaLight"; + color = "#E5E5E5"; + align = "center"; + shadow = "false"; + }; + class TextPos { + bottom = 0; + left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; + right = 0.005; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + forceMiddle = 1; + }; + }; + class RscButtonMenuCancel_exit: RscButtonMenuCancel { + x = QUOTE(0.455 * safezoneW + safezoneX); + y = QUOTE(0.56 * safezoneH + safezoneY); + w = QUOTE(0.06 * safezoneW); + h = QUOTE(0.08 * safezoneH); + text = "Cancel"; + class Attributes { + font = "PuristaLight"; + color = "#E5E5E5"; + align = "center"; + shadow = "false"; + }; + class TextPos { + bottom = 0; + left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; + right = 0.005; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + forceMiddle = 1; + }; }; }; }; diff --git a/addons/adminMenu/script_component.hpp b/addons/adminMenu/script_component.hpp index f5eaa939..1866fde2 100644 --- a/addons/adminMenu/script_component.hpp +++ b/addons/adminMenu/script_component.hpp @@ -2,7 +2,7 @@ #include "\z\potato\addons\core\script_mod.hpp" // #define DEBUG_MODE_FULL -// #define DISABLE_COMPILE_CACHE +#define DISABLE_COMPILE_CACHE // #define ENABLE_PERFORMANCE_COUNTERS #ifdef DEBUG_ENABLED_ADMINMENU @@ -50,4 +50,11 @@ #define UI_TABS_INDEX_MARKERS 9 +// Markers sub menu #define POTATO_MARKER_MENU_IDD 250224 +#define POTATO_MARKER_TEXT_IDC 2300 +#define POTATO_MARKER_SIZE_IDC 2301 +#define POTATO_MARKER_COLOR_IDC 2302 +#define POTATO_MARKER_ICON_IDC 2303 +#define POTATO_MARKER_UNIT_IDC 2304 +#define POTATO_MARKER_OK_IDC 2305 From 1fb0297d002d18765c0c2a554aaf62192056ea66 Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 15:42:18 -0600 Subject: [PATCH 08/13] removed unused function --- .../functions/fnc_uihook_closeMarkerEditUI.sqf | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 addons/adminMenu/functions/fnc_uihook_closeMarkerEditUI.sqf diff --git a/addons/adminMenu/functions/fnc_uihook_closeMarkerEditUI.sqf b/addons/adminMenu/functions/fnc_uihook_closeMarkerEditUI.sqf deleted file mode 100644 index 1202e9a2..00000000 --- a/addons/adminMenu/functions/fnc_uihook_closeMarkerEditUI.sqf +++ /dev/null @@ -1,16 +0,0 @@ -#include "script_component.hpp" -/* - * Author: Lambda.Tiger - * Attach marker to a unit based on currrent selections in the admin menu; - * - * Arguments: - * None - * - * Return Value: - * None - * - * Examples: - * [false] call potato_adminMenu_uihook_openMarkersEditUI; - * - * Public: No - */ \ No newline at end of file From a698f1ac51a1b9517968ee0db80305cd863205f7 Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 15:42:53 -0600 Subject: [PATCH 09/13] cleaned up double defined variables --- addons/adminMenu/script_component.hpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/adminMenu/script_component.hpp b/addons/adminMenu/script_component.hpp index 1866fde2..75a27d74 100644 --- a/addons/adminMenu/script_component.hpp +++ b/addons/adminMenu/script_component.hpp @@ -1,7 +1,7 @@ #define COMPONENT adminMenu #include "\z\potato\addons\core\script_mod.hpp" -// #define DEBUG_MODE_FULL +#define DEBUG_MODE_FULL #define DISABLE_COMPILE_CACHE // #define ENABLE_PERFORMANCE_COUNTERS @@ -43,8 +43,6 @@ #define UI_TAB_MARKERS_PLAYERS ((uiNamespace getVariable QGVAR(adminMenuDialog)) displayCtrl IDC_LISTBOX_MARKERS_PLAYERS) #define UI_TAB_MARKERS_MARKERS ((uiNamespace getVariable QGVAR(adminMenuDialog)) displayCtrl IDC_LISTBOX_MARKERS_MARKERS) -#define POTATO_MARKER_JIP_PREFIX "potato_marks:" - #define UI_TABS_NAMES ["Zeus", "Supplies", "End Mission", "Teleport", "Safe Start", "Tests", "Send Hint", "Player Fixes", "Give Items", "Markers"] #define UI_TABS_CONTROLS [UI_TAB_ZEUS, UI_TAB_SUPPLIES, UI_TAB_END, UI_TAB_TELEPORT, UI_TAB_SAFESTART, UI_TAB_CHECKMODS, UI_TAB_MISSIONHINT, UI_TAB_FIX_UNIT, UI_TAB_GIVE_ITEMS, UI_TAB_MARKERS] @@ -57,4 +55,4 @@ #define POTATO_MARKER_COLOR_IDC 2302 #define POTATO_MARKER_ICON_IDC 2303 #define POTATO_MARKER_UNIT_IDC 2304 -#define POTATO_MARKER_OK_IDC 2305 +#define POTATO_MARKER_OK_IDC 1 From af381479204af0d9b9e4e3f82f712cd68531249a Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 15:43:09 -0600 Subject: [PATCH 10/13] Polished interface --- addons/adminMenu/Interrupt_adminMenu.hpp | 1 - .../fnc_uihook_handleMarkerDialogUI.sqf | 73 ++++++++++++++----- 2 files changed, 54 insertions(+), 20 deletions(-) diff --git a/addons/adminMenu/Interrupt_adminMenu.hpp b/addons/adminMenu/Interrupt_adminMenu.hpp index 8c780b35..c0803da8 100644 --- a/addons/adminMenu/Interrupt_adminMenu.hpp +++ b/addons/adminMenu/Interrupt_adminMenu.hpp @@ -656,7 +656,6 @@ class GVAR(adminMenuDialog) { class GVAR(markerDialog) { idd = POTATO_MARKER_MENU_IDD; - movingEnable = 1; enableSimulation = 1; enableDisplay = 1; onLoad = QUOTE(call FUNC(uihook_handleMarkerDialogUI)); diff --git a/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf b/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf index 3fb9cb65..1c0ba8ae 100644 --- a/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf +++ b/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf @@ -13,9 +13,12 @@ #endif #define QPATHTOF(var) QUOTE(PATHTOF(var)) #include "\z\potato\addons\markers\defaultMarkerDefines.hpp" +#define POTATO_MARKER_ERROR_MARKSLCT 10 +#define POTATO_MARKER_ERROR_CACHE 20 +#define POTATO_MARKER_ERROR_UNITSLCT 30 /* * Author: Lambda.Tiger - * Attach marker to a unit based on currrent selections in the admin menu; + * Handle opening and closing of the marker dialog * * Arguments: * None @@ -24,7 +27,7 @@ * None * * Examples: - * [false] call potato_adminMenu_uihook_openMarkersEditUI; + * [false] call potato_adminMenu_uihook_handleMarkersDialogUI; * * Public: No */ @@ -32,16 +35,19 @@ params [ ["_display", displayNull, [displayNull]], ["_exitCode", -1, [0, configNull]] ]; -systemChat format ["func params: %1 %2", _display, _exitCode]; + TRACE_2("params",_display,_exitCode); + if (_exitCode isEqualType configNull) then {_exitCode = -1}; switch (_exitCode) do { case -1: { // opening private _markerControl = UI_TAB_MARKERS_MARKERS; private _selectedMarkerIndex = lbCurSel _markerControl; - if (GVAR(editMarker) && _selectedMarkerIndex >= 0) then { // we need an active marker + TRACE_2("Editing marker:",GVAR(editMarker),_selectedMarkerIndex); + if (GVAR(editMarker)) then { // we need an active marker + if (selectedMarkerIndex < 0) exitWith {_display closeDisplay POTATO_MARKER_ERROR_MARKSLCT}; private _hashKey = _markerControl lbData _selectedMarkerIndex; private _markerArray = EGVAR(markers,markerHash) getOrDefault [_hashKey, []]; - if (_markerArray isEqualTo []) exitWith {10 closeDisplay _display}; + if (_markerArray isEqualTo []) exitWith {_display closeDisplay POTATO_MARKER_ERROR_CACHE}; _markerArray params ["", "_text", "_icon", "_color", "_size"]; // Setup the display for the current marker @@ -60,28 +66,39 @@ switch (_exitCode) do { (_display displayCtrl POTATO_MARKER_ICON_IDC) lbSetCurSel _iconIdx; }; (_display displayCtrl POTATO_MARKER_UNIT_IDC) ctrlShow false; - (_display displayCtrl POTATO_MARKER_OK_IDC) ctrlSetStructuredText text "Update
Date: Thu, 27 Feb 2025 16:59:06 -0600 Subject: [PATCH 11/13] comment out debug variables --- addons/adminMenu/script_component.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/adminMenu/script_component.hpp b/addons/adminMenu/script_component.hpp index 75a27d74..5d4765c5 100644 --- a/addons/adminMenu/script_component.hpp +++ b/addons/adminMenu/script_component.hpp @@ -1,8 +1,8 @@ #define COMPONENT adminMenu #include "\z\potato\addons\core\script_mod.hpp" -#define DEBUG_MODE_FULL -#define DISABLE_COMPILE_CACHE +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE // #define ENABLE_PERFORMANCE_COUNTERS #ifdef DEBUG_ENABLED_ADMINMENU From 9c129f479227be6453a708184a5375abb0ace9ef Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 17:15:38 -0600 Subject: [PATCH 12/13] fixed variable error --- addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf b/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf index 1c0ba8ae..e436c2b8 100644 --- a/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf +++ b/addons/adminMenu/functions/fnc_uihook_handleMarkerDialogUI.sqf @@ -44,7 +44,8 @@ switch (_exitCode) do { private _selectedMarkerIndex = lbCurSel _markerControl; TRACE_2("Editing marker:",GVAR(editMarker),_selectedMarkerIndex); if (GVAR(editMarker)) then { // we need an active marker - if (selectedMarkerIndex < 0) exitWith {_display closeDisplay POTATO_MARKER_ERROR_MARKSLCT}; + if (_selectedMarkerIndex < 0) exitWith {_display closeDisplay POTATO_MARKER_ERROR_MARKSLCT}; + // Find hashkey and make sure it exists private _hashKey = _markerControl lbData _selectedMarkerIndex; private _markerArray = EGVAR(markers,markerHash) getOrDefault [_hashKey, []]; if (_markerArray isEqualTo []) exitWith {_display closeDisplay POTATO_MARKER_ERROR_CACHE}; From c2b5de05c391812b8b9af5843cf6a2349f7123b5 Mon Sep 17 00:00:00 2001 From: lambdatiger Date: Thu, 27 Feb 2025 19:34:53 -0600 Subject: [PATCH 13/13] removed bad code - not relevant in context --- addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf | 4 ---- addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf | 4 ---- 2 files changed, 8 deletions(-) diff --git a/addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf b/addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf index b65702be..d5973534 100644 --- a/addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf +++ b/addons/adminMenu/functions/fnc_uihook_attachMarkerGroup.sqf @@ -43,10 +43,6 @@ if (group (_markerArray#0) != group _selectedUnit) then { private _newMarkerArray = [_newHashKey, getPosATL _selectedUnit, _selectedUnit, side _selectedUnit, _markerArray#1, _markerArray#3, _markerArray#2, _markerArray#4]; - private _endIndex = 8; - if (_size == DEFAULT_MARKER_SIZE) then {_endIndex = 7}; - if (_icon == DEFAULT_MARKER_ICON_INDEX && _endIndex == 7) then {_endIndex = 6}; - _newMarkerArray = _newMarkerArray select [0, _endIndex]; EGVAR(markers,markerCache) setVariable [POTATO_MARKER_JIP_PREFIX + _newHashKey, _newMarkerArray, true]; _newMarkerArray remoteExecCall [QEFUNC(markers,addMarker)]; [_hashKey] remoteExecCall [QEFUNC(markers,deleteMarker)]; diff --git a/addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf b/addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf index 0fff8856..51132b01 100644 --- a/addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf +++ b/addons/adminMenu/functions/fnc_uihook_attachMarkerUnit.sqf @@ -46,10 +46,6 @@ while {(_newHashKey == _hashKey || (_newHashKey in EGVAR(markers,markerHash))) & _itr = _itr + 1; }; private _newMarkerArray = [_newHashKey, getPosATL _selectedUnit, _selectedUnit, side _selectedUnit, _markerArray#1, _markerArray#3, _markerArray#2, _markerArray#4]; -private _endIndex = 8; -if (_size == DEFAULT_MARKER_SIZE) then {_endIndex = 7}; -if (_icon == DEFAULT_MARKER_ICON_INDEX && _endIndex == 7) then {_endIndex = 6}; -_newMarkerArray = _newMarkerArray select [0, _endIndex]; EGVAR(markers,markerCache) setVariable [POTATO_MARKER_JIP_PREFIX + _newHashKey, _newMarkerArray, true]; _newMarkerArray remoteExecCall [QEFUNC(markers,addMarker)]; [_hashKey] remoteExecCall [QEFUNC(markers,deleteMarker)];