From a545efe02c4157b4c0286337d294ee8615529df1 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 18 Jan 2015 17:17:06 +0100 Subject: [PATCH] work on port markers --- addons/common/functions/fnc_execNextFrame.sqf | 4 +- addons/markers/InsertMarker.hpp | 266 +++++++++--------- addons/markers/XEH_postInit.sqf | 15 +- addons/markers/XEH_preInit.sqf | 65 ++++- .../markers/functions/fn_sendMarkersJIP.sqf | 15 - addons/markers/functions/fn_setMarker.sqf | 15 - addons/markers/functions/fn_setMarkerJIP.sqf | 26 -- .../markers/functions/fn_setMarkerNetwork.sqf | 36 --- .../functions/fnc_initInsertMarker.sqf | 201 +++++++++++++ ...dColor.sqf => fnc_onLBSelChangedColor.sqf} | 11 +- ...dShape.sqf => fnc_onLBSelChangedShape.sqf} | 5 +- ...le.sqf => fnc_onSliderPosChangedAngle.sqf} | 9 +- addons/markers/functions/fnc_placeMarker.sqf | 44 +++ .../markers/functions/fnc_sendMarkersJIP.sqf | 13 + addons/markers/functions/fnc_setMarkerJIP.sqf | 27 ++ .../functions/fnc_setMarkerNetwork.sqf | 37 +++ addons/markers/functions/initInsertMarker.sqf | 265 ----------------- addons/markers/functions/placeMarker.sqf | 51 ---- addons/markers/functions/script_component.hpp | 1 + 19 files changed, 548 insertions(+), 558 deletions(-) delete mode 100644 addons/markers/functions/fn_sendMarkersJIP.sqf delete mode 100644 addons/markers/functions/fn_setMarker.sqf delete mode 100644 addons/markers/functions/fn_setMarkerJIP.sqf delete mode 100644 addons/markers/functions/fn_setMarkerNetwork.sqf create mode 100644 addons/markers/functions/fnc_initInsertMarker.sqf rename addons/markers/functions/{fn_onLBSelChangedColor.sqf => fnc_onLBSelChangedColor.sqf} (57%) rename addons/markers/functions/{fn_onLBSelChangedShape.sqf => fnc_onLBSelChangedShape.sqf} (66%) rename addons/markers/functions/{fn_onSliderPosChangedAngle.sqf => fnc_onSliderPosChangedAngle.sqf} (51%) create mode 100644 addons/markers/functions/fnc_placeMarker.sqf create mode 100644 addons/markers/functions/fnc_sendMarkersJIP.sqf create mode 100644 addons/markers/functions/fnc_setMarkerJIP.sqf create mode 100644 addons/markers/functions/fnc_setMarkerNetwork.sqf delete mode 100644 addons/markers/functions/initInsertMarker.sqf delete mode 100644 addons/markers/functions/placeMarker.sqf create mode 100644 addons/markers/functions/script_component.hpp diff --git a/addons/common/functions/fnc_execNextFrame.sqf b/addons/common/functions/fnc_execNextFrame.sqf index 406b753b6c..47710fad9c 100644 --- a/addons/common/functions/fnc_execNextFrame.sqf +++ b/addons/common/functions/fnc_execNextFrame.sqf @@ -12,13 +12,13 @@ */ #include "script_component.hpp" -EXPLODE_4_PVT(_this,_func,_params,_delay,_interval); +EXPLODE_3_PVT(_this,_func,_params,_delay,_interval); [ { EXPLODE_2_PVT(_this,_params,_pfhId); EXPLODE_2_PVT(_params,_delayedExecParams,_startFrame); - EXPLODE_3_PVT(_delayedExecParams,_func,_funcParams); + EXPLODE_2_PVT(_delayedExecParams,_func,_funcParams); // Exit if we are still on the same frame if (diag_frameno == _startFrame) exitWith {}; diff --git a/addons/markers/InsertMarker.hpp b/addons/markers/InsertMarker.hpp index 3fcf4d8344..7306d3e037 100644 --- a/addons/markers/InsertMarker.hpp +++ b/addons/markers/InsertMarker.hpp @@ -11,137 +11,137 @@ class RscSlider; class RscXSliderH; class RscDisplayInsertMarker { - onLoad = "_this call compile preprocessFileLineNumbers 'AGM_Markers\scripts\initInsertMarker.sqf'"; - onUnload = "_this call compile preprocessFileLineNumbers 'AGM_Markers\scripts\placeMarker.sqf'"; - idd = 54; - movingEnable = 1; - class controlsBackground { - class RscText_1000: RscText { - idc = 1000; - /*x = "0 * GUI_GRID_INSERTMARKER_W + GUI_GRID_INSERTMARKER_X"; - y = "0 * GUI_GRID_INSERTMARKER_H + GUI_GRID_INSERTMARKER_Y"; - w = "8 * GUI_GRID_INSERTMARKER_W"; - h = "2.5 * GUI_GRID_INSERTMARKER_H"; - colorBackground[] = {0,0,0,0.5};*/ - }; - class Description: RscStructuredText { - colorBackground[] = {0,0,0,0.7}; - idc = 1100; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "9.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - }; - class controls { - //delete ButtonOK; - class ButtonMenuOK: RscButtonMenuOK { - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "15.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "8.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - // size = "0.85 * ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - // sizeEx = "0.85 * ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - text = ""; - }; - class ButtonMenuCancel: RscButtonMenuCancel { - x = "23 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "15.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "1.1 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - - text = "X"; - colorBackground[] = {0.75,0,0,0.5}; - colorBackgroundFocused[] = {0.75,0,0,0.5}; - colorBackground2[] = {1,0,0,0.5}; - }; - /*class ButtonMenuInfo: RscButtonMenu { - idc = 2400; - text = "$STR_A3_RscDisplayInsertMarker_ButtonMenuInfo"; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "13.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - };*/ - delete ButtonMenuInfo; - class Title: RscText { - moving = 1; - colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])","(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"}; - idc = 1001; - text = "$STR_A3_RscDisplayInsertMarker_Title"; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "8.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - delete Description; - /*class Info: RscStructuredText { - colorBackground[] = {0,0,0,0.7}; - idc = 1101; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "11.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - };*/ - delete Info; - class Picture: RscPicture { - idc = 102; - x = 0.259984; - y = 0.4; - w = 0.05; - h = 0.0666667; - }; - class Text: RscEdit { - idc = 101; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "10.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - /*class SizeX: RscEdit { - idc = 1200; - text = "10"; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - class SizeY: RscEdit { - idc = 1201; - text = "10"; - x = "19 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - };*/ - class MarkerShape: RscCombo { - idc = 1210; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "11.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - class MarkerColor: RscCombo { - idc = 1211; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - class MarkerAngle: RscXSliderH { - idc = 1220; - text = "10"; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "13.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - class MarkerAngleText: RscText { - idc = 1221; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "14.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - }; + onLoad = QUOTE(_this call FUNC(initInsertMarker);); + onUnload = QUOTE(_this call FUNC(placeMarker);); + idd = 54; + movingEnable = 1; + class controlsBackground { + class RscText_1000: RscText { + idc = 1000; + /*x = "0 * GUI_GRID_INSERTMARKER_W + GUI_GRID_INSERTMARKER_X"; + y = "0 * GUI_GRID_INSERTMARKER_H + GUI_GRID_INSERTMARKER_Y"; + w = "8 * GUI_GRID_INSERTMARKER_W"; + h = "2.5 * GUI_GRID_INSERTMARKER_H"; + colorBackground[] = {0,0,0,0.5};*/ + }; + class Description: RscStructuredText { + colorBackground[] = {0,0,0,0.7}; + idc = 1100; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "9.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + }; + class controls { + //delete ButtonOK; + class ButtonMenuOK: RscButtonMenuOK { + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "15.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "8.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + // size = "0.85 * ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + // sizeEx = "0.85 * ( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + }; + class ButtonMenuCancel: RscButtonMenuCancel { + x = "23 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "15.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "1.1 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + + text = "X"; + colorBackground[] = {0.75,0,0,0.5}; + colorBackgroundFocused[] = {0.75,0,0,0.5}; + colorBackground2[] = {1,0,0,0.5}; + }; + /*class ButtonMenuInfo: RscButtonMenu { + idc = 2400; + text = "$STR_A3_RscDisplayInsertMarker_ButtonMenuInfo"; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "13.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + };*/ + delete ButtonMenuInfo; + class Title: RscText { + moving = 1; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])","(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"}; + idc = 1001; + text = "$STR_A3_RscDisplayInsertMarker_Title"; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "8.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + delete Description; + /*class Info: RscStructuredText { + colorBackground[] = {0,0,0,0.7}; + idc = 1101; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "11.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + };*/ + delete Info; + class Picture: RscPicture { + idc = 102; + x = 0.259984; + y = 0.4; + w = 0.05; + h = 0.0666667; + }; + class Text: RscEdit { + idc = 101; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "10.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + /*class SizeX: RscEdit { + idc = 1200; + text = "10"; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + class SizeY: RscEdit { + idc = 1201; + text = "10"; + x = "19 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + };*/ + class MarkerShape: RscCombo { + idc = 1210; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "11.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + class MarkerColor: RscCombo { + idc = 1211; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + class MarkerAngle: RscXSliderH { + idc = 1220; + text = "10"; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "13.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + class MarkerAngleText: RscText { + idc = 1221; + x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; + y = "14.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; + w = "10 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + }; }; diff --git a/addons/markers/XEH_postInit.sqf b/addons/markers/XEH_postInit.sqf index e5dc72e804..31d5ffc7a5 100644 --- a/addons/markers/XEH_postInit.sqf +++ b/addons/markers/XEH_postInit.sqf @@ -1,7 +1,16 @@ // by commy2 +#include "script_component.hpp" + +// recieve remote marker data +[QGVAR(setMarkerNetwork), FUNC(setMarkerNetwork)] call EFUNC(common,addEventHandler); + +// recieve marker data for JIP +[QGVAR(setMarkerJIP), FUNC(setMarkerJIP)] call EFUNC(common,addEventHandler); // request marker data for JIP -if (isMultiplayer && {!isServer}) then { - _logic = createGroup sideLogic createUnit ["Logic", [0,0,0], [], 0, "NONE"]; - [_logic, "AGM_Markers_fnc_sendMarkersJIP", 1] call AGM_Core_fnc_execRemoteFnc; +if (isMultiplayer && {!isServer} && {hasInterface}) then { + private "_logic"; + _logic = createGroup sideLogic createUnit ["Logic", [0,0,0], [], 0, "NONE"]; + + [QGVAR(sendMarkersJIP), _logic] call EFUNC(common,serverEvent); }; diff --git a/addons/markers/XEH_preInit.sqf b/addons/markers/XEH_preInit.sqf index b2304b22c4..6ac258ed2a 100644 --- a/addons/markers/XEH_preInit.sqf +++ b/addons/markers/XEH_preInit.sqf @@ -6,6 +6,69 @@ PREP(onLBSelChangedShape); PREP(onSliderPosChangedAngle); PREP(placeMarker); PREP(sendMarkersJIP); -PREP(setMarker); PREP(setMarkerJIP); PREP(setMarkerNetwork); + +// init marker types +if (isNil QGVAR(MarkersCache)) then { + _config = configfile >> "CfgMarkers"; + _index = 0; + + GVAR(MarkersCache) = []; + + for "_a" from 0 to (count _config - 1) do { + _marker = _config select _a; + + _scope = getNumber (_marker >> "scope"); + _name = getText (_marker >> "name"); + _icon = getText (_marker >> "icon"); + + if (_scope == 2) then { + _shape lbAdd _name; + _shape lbSetValue [_index, _a]; + _shape lbSetPicture [_index, _icon]; + + GVAR(MarkersCache) pushBack [_name, _a, _icon]; + + _index = _index + 1; + }; + }; +}; + +// init marker colors +if (isNil QGVAR(MarkerColorsCache)) then { + _config = configfile >> "CfgMarkerColors"; + _index = 0; + + GVAR(MarkerColorsCache) = []; + + for "_a" from 0 to (count _config - 1) do { + _marker = _config select _a; + + _scope = getNumber (_marker >> "scope"); + _name = getText (_marker >> "name"); + + if (_scope == 2) then { + _color lbAdd _name; + _color lbSetValue [_index, _a]; + + _rgba = getArray (_marker >> "color"); + + { + if (typeName _x != "SCALAR") then { + _rgba set [_forEachIndex, call compile _x]; + }; + } forEach _rgba; + + _icon = format ["#(argb,8,8,3)color(%1,%2,%3,%4)", _rgba select 0, _rgba select 1, _rgba select 2, _rgba select 3]; + + _color lbSetPicture [_index, _icon]; + + GVAR(MarkerColorsCache) pushBack [_name, _a, _icon]; + + _index = _index + 1; + }; + }; +}; + +[QGVAR(sendMarkersJIP), FUNC(sendMarkersJIP)] call EFUNC(common,addEventHandler); diff --git a/addons/markers/functions/fn_sendMarkersJIP.sqf b/addons/markers/functions/fn_sendMarkersJIP.sqf deleted file mode 100644 index dd95a68d50..0000000000 --- a/addons/markers/functions/fn_sendMarkersJIP.sqf +++ /dev/null @@ -1,15 +0,0 @@ -// by commy2 - -private "_logic"; - -_logic = _this; - -[ - [ - missionNamespace getVariable ["AGM_allMapMarkers", []], - missionNamespace getVariable ["AGM_allMapMarkersProperties", []], - _logic - ], - "AGM_Markers_fnc_setMarkerJIP", - _logic -] call AGM_Core_fnc_execRemoteFnc; diff --git a/addons/markers/functions/fn_setMarker.sqf b/addons/markers/functions/fn_setMarker.sqf deleted file mode 100644 index 63df5bfe11..0000000000 --- a/addons/markers/functions/fn_setMarker.sqf +++ /dev/null @@ -1,15 +0,0 @@ -// by commy2 - -private ["_marker", "_data", "_config"]; - -_marker = _this select 0; -_data = _this select 1; - -_config = (configfile >> "CfgMarkers") select (_data select 0); -[[_marker, configName _config], "{if ((_this select 0) in allMapMarkers) then {(_this select 0) setMarkerTypeLocal (_this select 1)};}", 2] call AGM_Core_fnc_execRemoteFnc; - -_config = (configfile >> "CfgMarkerColors") select (_data select 1); -[[_marker, configName _config], "{if ((_this select 0) in allMapMarkers) then {(_this select 0) setMarkerColorLocal (_this select 1)};}", 2] call AGM_Core_fnc_execRemoteFnc; - -[[_marker, _data select 2], "{if ((_this select 0) in allMapMarkers) then {(_this select 0) setMarkerPosLocal (_this select 1)};}", 2] call AGM_Core_fnc_execRemoteFnc; -[[_marker, _data select 3], "{if ((_this select 0) in allMapMarkers) then {(_this select 0) setMarkerDirLocal (_this select 1)};}", 2] call AGM_Core_fnc_execRemoteFnc; diff --git a/addons/markers/functions/fn_setMarkerJIP.sqf b/addons/markers/functions/fn_setMarkerJIP.sqf deleted file mode 100644 index 9ede4d492e..0000000000 --- a/addons/markers/functions/fn_setMarkerJIP.sqf +++ /dev/null @@ -1,26 +0,0 @@ -// by commy2 - -private ["_allMapMarkers", "_allMapMarkersProperties", "_index", "_data", "_config"]; - -_allMapMarkers = _this select 0; -_allMapMarkersProperties = _this select 1; -_logic = _this select 2; - -{ - _index = _allMapMarkers find _x; - - if (_index != -1) then { - _data = _allMapMarkersProperties select _index; - - _config = (configfile >> "CfgMarkers") select (_data select 0); - _x setMarkerTypeLocal configName _config; - - _config = (configfile >> "CfgMarkerColors") select (_data select 1); - _x setMarkerColorLocal configName _config; - - _x setMarkerPosLocal (_data select 2); - _x setMarkerDirLocal (_data select 3); - }; -} forEach allMapMarkers; - -deleteVehicle _logic; diff --git a/addons/markers/functions/fn_setMarkerNetwork.sqf b/addons/markers/functions/fn_setMarkerNetwork.sqf deleted file mode 100644 index e655c7171f..0000000000 --- a/addons/markers/functions/fn_setMarkerNetwork.sqf +++ /dev/null @@ -1,36 +0,0 @@ -// by commy2 - -private ["_marker", "_data", "_config"]; - -_marker = _this select 0; -_data = _this select 1; - -_config = (configfile >> "CfgMarkers") select (_data select 0); -_marker setMarkerTypeLocal configName _config; - -_config = (configfile >> "CfgMarkerColors") select (_data select 1); -_marker setMarkerColorLocal configName _config; - -_marker setMarkerPosLocal (_data select 2); -_marker setMarkerDirLocal (_data select 3); - -// save properties on server machine for JIP, marker editing ready -if (isMultiplayer && {isServer}) then { - private ["_allMapMarkers", "_allMapMarkersProperties", "_index"]; - - _allMapMarkers = missionNamespace getVariable ["AGM_allMapMarkers", []]; - _allMapMarkersProperties = missionNamespace getVariable ["AGM_allMapMarkersProperties", []]; - - _index = _allMapMarkers find _marker; - - if (_index == -1) then { - _allMapMarkers pushBack _marker; - _allMapMarkersProperties pushBack _data; - } else { - _allMapMarkers set [_index, _marker]; - _allMapMarkersProperties set [_index, _data]; - }; - - AGM_allMapMarkers = _allMapMarkers; - AGM_allMapMarkersProperties = _allMapMarkersProperties; -}; diff --git a/addons/markers/functions/fnc_initInsertMarker.sqf b/addons/markers/functions/fnc_initInsertMarker.sqf new file mode 100644 index 0000000000..efc974cef4 --- /dev/null +++ b/addons/markers/functions/fnc_initInsertMarker.sqf @@ -0,0 +1,201 @@ +// stuff taken from bohemia, edited by commy2 +#include "script_component.hpp" + +#define BORDER 0.005 + +[{ + with uinamespace do { + + disableserialization; + _display = _this select 0; + + //Prevent Captive Players from placing markers + /*if (ACE_player getVariable ["ACE_isCaptive", false]) exitWith { + _display closeDisplay 2; //emulate "Cancel" button + };*/ + + // prevent vanilla key input + _display displayAddEventHandler ["KeyDown", {(_this select 1) in [200, 208]}]; + + _text = _display displayctrl 101; + _picture = _display displayctrl 102; + _buttonOK = _display displayctrl 1; + _buttonCancel = _display displayctrl 2; + _description = _display displayctrl 1100; + _title = _display displayctrl 1001; + _sizeX = _display displayctrl 1200; + _sizeY = _display displayctrl 1201; + _shape = _display displayctrl 1210; + _color = _display displayctrl 1211; + _angle = _display displayctrl 1220; + _angleText = _display displayctrl 1221; + + ctrlSetFocus _text; + + //Change ok button's text based on current channel + if (isNull _buttonOK) exitWith {true}; + + _textColor = [1,1,1,1]; + switch (call EFUNC(common,currentChannel)) do { + case ("global"): { + _channel = localize "str_channel_global"; + _textColor = [(216/255),(216/255),(216/255),1]; + }; + case ("side"): { + _channel = localize "str_channel_side"; + _textColor = [(70/255),(211/255),(252/255),1]; + }; + case ("group"): { + _channel = localize "str_channel_group"; + _textColor = [(181/255),(248/255),(98/255),1]; + }; + case ("vehicle"): { + _channel = localize "str_channel_vehicle"; + _textColor = [(255/255),(208/255),(0/255),1]; + }; + case ("direct"): { + _channel = localize "str_channel_direct"; + _textColor = [(255/255),(255/255),(255/255),1]; + }; + case ("command"): { + _channel = localize "str_channel_command"; + _textColor = [(255/255),(255/255),(70/255),1]; + }; + }; + + //If localization not found, then don't touch anything (default is RscButtonMenuOK's localized text) + if (_channel != "") then { + _buttonOK ctrlSetTextColor _textColor; + _buttonOK ctrlSetText format [localize "STR_ACE_Markers_PlaceIn", _channel]; + }; + + //--- Background + _pos = ctrlposition _text; + _posX = (_pos select 0) + 0.01; + _posY = _pos select 1; + _posW = _pos select 2; + _posH = _pos select 3; + _posY = _posY min ((safeZoneH + safeZoneY) - (6 * _posH + 8 * BORDER)); //prevent buttons being placed below bottom edge of screen + _pos set [0,_posX]; + _pos set [1,_posY]; + _text ctrlsetposition _pos; + _text ctrlcommit 0; + + //--- Title + _pos set [1,_posY - 2*_posH - BORDER]; + _pos set [3,_posH]; + _title ctrlsetposition _pos; + _title ctrlcommit 0; + + //--- Description + _pos set [1,_posY - 1*_posH]; + _pos set [3,6*_posH + 6 * BORDER]; + _description ctrlsetposition _pos; + _description ctrlsetstructuredtext parsetext format ["%1","Description:"]; //--- ToDo: Localze + _description ctrlcommit 0; + + _activeColor = (["IGUI","WARNING_RGB"] call bis_fnc_displaycolorget) call bis_fnc_colorRGBtoHTML; + + //--- Shape + _pos set [1,_posY + 1 * _posH + 2 * BORDER]; + _pos set [2,_posW]; + _pos set [3,_posH]; + _shape ctrlsetposition _pos; + _shape ctrlcommit 0; + + //--- Color + _pos set [1,_posY + 2 * _posH + 3 * BORDER]; + _pos set [2,_posW]; + _color ctrlsetposition _pos; + _color ctrlcommit 0; + + //--- Angle + _pos set [1,_posY + 3 * _posH + 4 * BORDER]; + _pos set [2,_posW]; + _angle ctrlsetposition _pos; + _angle ctrlcommit 0; + + //--- Angle Text + _pos set [1,_posY + 4 * _posH + 5 * BORDER]; + _pos set [2,_posW]; + _angleText ctrlsetposition _pos; + _angleText ctrlcommit 0; + + //--- ButtonOK + _pos set [1,_posY + 5 * _posH + 7 * BORDER]; + _pos set [2,_posW * (8.9/10) - BORDER]; + _buttonOk ctrlsetposition _pos; + _buttonOk ctrlcommit 0; + + //--- ButtonCancel + _pos set [0,_posX + _posW * (8.9 / 10)]; + _pos set [2,_posW * (1.1 / 10)]; + _buttonCancel ctrlsetposition _pos; + _buttonCancel ctrlcommit 0; + + //--- PositionX + /*_pos set [1,_posY + 2 * _posH + 3 * BORDER]; + _sizeX ctrlsetposition _pos; + _sizeX ctrlcommit 0;*/ + + //--- PositionY + /*_pos set [1,_posY + 2 * _posH + 3 * BORDER]; + _sizeY ctrlsetposition _pos; + _sizeY ctrlcommit 0;*/ + + + // init marker shape lb + { + _shape lbAdd (_x select 0); + _shape lbSetValue [_forEachIndex, _x select 1]; + _shape lbSetPicture [_forEachIndex, _x select 2]; + } forEach GVAR(MarkersCache); + + _shape ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedShape)}]; + + _curSelShape = GETMVAR(curSelMarkerShape,0); + _shape lbSetCurSel _curSelShape; + _data = _shape lbValue _curSelShape; + _config = (configfile >> "CfgMarkers") select _data; + _icon = getText (_config >> "icon"); + _picture ctrlSetText _icon; + + + // init marker color lb + { + _color lbAdd (_x select 0); + _color lbSetValue [_forEachIndex, _x select 1]; + _color lbSetPicture [_forEachIndex, _x select 2]; + } forEach GVAR(MarkerColorsCache); + + _color ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedColor)}]; + + _curSelColor = GETMVAR(curSelMarkerColor,0); + _color lbSetCurSel _curSelColor; + _data = _color lbValue _curSelColor; + _config = (configfile >> "CfgMarkerColors") select _data; + _rgba = getArray (_config >> "color"); + { + if (typeName _x != "SCALAR") then { + _rgba set [_forEachIndex, call compile _x]; + }; + } forEach _rgba; + _picture ctrlSetTextColor _rgba; + + + // init marker angle slider + _angle sliderSetRange [-180, 180]; + _angle ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedAngle)}]; + + _curSelAngle = GETMVAR(curSelMarkerAngle,0); + _angle sliderSetPosition _curSelAngle; + + _curSelAngle = round _curSelAngle; + if (_curSelAngle < 0) then { + _curSelAngle = _curSelAngle + 360; + }; + + _angleText ctrlSetText format [localize "STR_ACE_Markers_MarkerDirection", _curSelAngle]; + + }; +}, _this] call EFUNC(common,execNextFrame); diff --git a/addons/markers/functions/fn_onLBSelChangedColor.sqf b/addons/markers/functions/fnc_onLBSelChangedColor.sqf similarity index 57% rename from addons/markers/functions/fn_onLBSelChangedColor.sqf rename to addons/markers/functions/fnc_onLBSelChangedColor.sqf index 28c788e260..0aa541f5a5 100644 --- a/addons/markers/functions/fn_onLBSelChangedColor.sqf +++ b/addons/markers/functions/fnc_onLBSelChangedColor.sqf @@ -1,22 +1,23 @@ // by commy2 +#include "script_component.hpp" private ["_ctrl", "_data", "_config", "_color"]; _ctrl = _this select 0; _data = _ctrl lbValue (_this select 1); -uiNamespace setVariable ["AGM_Markers_curSelMarkerColor", _this select 1]; +GVAR(curSelMarkerColor) = _this select 1; _config = (configfile >> "CfgMarkerColors") select _data; _color = getArray (_config >> "color"); { - if (typeName _x != "SCALAR") then { - _color set [_forEachIndex, call compile _x]; - }; + if (typeName _x != "SCALAR") then { + _color set [_forEachIndex, call compile _x]; + }; } forEach _color; ((ctrlParent _ctrl) displayCtrl 102) ctrlSetTextColor _color; -uiNamespace setVariable ["AGM_Markers_currentMarkerColor", _data]; +GVAR(currentMarkerColor) = _data; diff --git a/addons/markers/functions/fn_onLBSelChangedShape.sqf b/addons/markers/functions/fnc_onLBSelChangedShape.sqf similarity index 66% rename from addons/markers/functions/fn_onLBSelChangedShape.sqf rename to addons/markers/functions/fnc_onLBSelChangedShape.sqf index c47cff385b..f77e1f8ff8 100644 --- a/addons/markers/functions/fn_onLBSelChangedShape.sqf +++ b/addons/markers/functions/fnc_onLBSelChangedShape.sqf @@ -1,11 +1,12 @@ // by commy2 +#include "script_component.hpp" private ["_ctrl", "_data", "_config", "_icon"]; _ctrl = _this select 0; _data = _ctrl lbValue (_this select 1); -uiNamespace setVariable ["AGM_Markers_curSelMarkerShape", _this select 1]; +GVAR(curSelMarkerShape) = _this select 1; _config = (configfile >> "CfgMarkers") select _data; @@ -13,4 +14,4 @@ _icon = getText (_config >> "icon"); ((ctrlParent _ctrl) displayCtrl 102) ctrlSetText _icon; -uiNamespace setVariable ["AGM_Markers_currentMarkerShape", _data]; +GVAR(currentMarkerShape) = _data; diff --git a/addons/markers/functions/fn_onSliderPosChangedAngle.sqf b/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf similarity index 51% rename from addons/markers/functions/fn_onSliderPosChangedAngle.sqf rename to addons/markers/functions/fnc_onSliderPosChangedAngle.sqf index 4dabc45b35..354fb909e1 100644 --- a/addons/markers/functions/fn_onSliderPosChangedAngle.sqf +++ b/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf @@ -1,17 +1,18 @@ // by commy2 +#include "script_component.hpp" private ["_ctrl", "_data", "_direction"]; _ctrl = _this select 0; _data = _this select 1; -uiNamespace setVariable ["AGM_Markers_curSelMarkerAngle", _data]; +GVAR(curSelMarkerAngle) = _data; _direction = round _data; if (_direction < 0) then { - _direction = _direction + 360; + _direction = _direction + 360; }; -((ctrlParent _ctrl) displayCtrl 1221) ctrlSetText format [localize "STR_AGM_Markers_MarkerDirection", _direction]; +((ctrlParent _ctrl) displayCtrl 1221) ctrlSetText format [localize "STR_ACE_Markers_MarkerDirection", _direction]; -uiNamespace setVariable ["AGM_Markers_currentMarkerAngle", _data]; +GVAR(currentMarkerAngle) = _data; diff --git a/addons/markers/functions/fnc_placeMarker.sqf b/addons/markers/functions/fnc_placeMarker.sqf new file mode 100644 index 0000000000..904b5d91cb --- /dev/null +++ b/addons/markers/functions/fnc_placeMarker.sqf @@ -0,0 +1,44 @@ +// by commy2 +#include "script_component.hpp" + +if (_this select 1 == 1) then { + disableserialization; + _display = _this select 0; + + _pos = ctrlPosition (_display displayCtrl 102); + _pos = [ + (_pos select 0) + (_pos select 2) / 2, + (_pos select 1) + (_pos select 3) / 2 + ]; + + switch (true) do { + case (!isNull findDisplay 12): { + _pos = (findDisplay 12 displayCtrl 51) ctrlMapScreenToWorld _pos; + }; + case (!isNull findDisplay 37): { + _pos = (findDisplay 37 displayCtrl 51) ctrlMapScreenToWorld _pos; + }; + case (!isNull findDisplay 52): { + _pos = (findDisplay 52 displayCtrl 51) ctrlMapScreenToWorld _pos; + }; + case (!isNull findDisplay 53): { + _pos = (findDisplay 53 displayCtrl 51) ctrlMapScreenToWorld _pos; + }; + }; + + // set and send marker data the next frame. the actual marker isn't created yet + [ + { + + ["setMarkerNetwork", [ + GETMVAR(currentMarkerShape,0), + GETMVAR(currentMarkerColor,0), + _this, + GETMVAR(currentMarkerAngle,0) + ]] call EFUNC(common,globalEvent); + + }, + _pos + ] call EFUNC(common,execNextFrame); + +}; diff --git a/addons/markers/functions/fnc_sendMarkersJIP.sqf b/addons/markers/functions/fnc_sendMarkersJIP.sqf new file mode 100644 index 0000000000..10c534ab65 --- /dev/null +++ b/addons/markers/functions/fnc_sendMarkersJIP.sqf @@ -0,0 +1,13 @@ +// by commy2 +#include "script_component.hpp" + +private "_logic"; + +_logic = _this; + +[QGVAR(setMarkerJIP), _logic, [ + GETMVAR(allMapMarkers,[]), + GETMVAR(allMapMarkersProperties,[]), + _logic + ] +] call EFUNC(common,targetEvent); diff --git a/addons/markers/functions/fnc_setMarkerJIP.sqf b/addons/markers/functions/fnc_setMarkerJIP.sqf new file mode 100644 index 0000000000..8466e35776 --- /dev/null +++ b/addons/markers/functions/fnc_setMarkerJIP.sqf @@ -0,0 +1,27 @@ +// by commy2 +#include "script_component.hpp" + +private ["_allMapMarkers", "_allMapMarkersProperties", "_index", "_data", "_config"]; + +_allMapMarkers = _this select 0; +_allMapMarkersProperties = _this select 1; +_logic = _this select 2; + +{ + _index = _allMapMarkers find _x; + + if (_index != -1) then { + _data = _allMapMarkersProperties select _index; + + _config = (configfile >> "CfgMarkers") select (_data select 0); + _x setMarkerTypeLocal configName _config; + + _config = (configfile >> "CfgMarkerColors") select (_data select 1); + _x setMarkerColorLocal configName _config; + + _x setMarkerPosLocal (_data select 2); + _x setMarkerDirLocal (_data select 3); + }; +} forEach allMapMarkers; + +deleteVehicle _logic; diff --git a/addons/markers/functions/fnc_setMarkerNetwork.sqf b/addons/markers/functions/fnc_setMarkerNetwork.sqf new file mode 100644 index 0000000000..2356574ae3 --- /dev/null +++ b/addons/markers/functions/fnc_setMarkerNetwork.sqf @@ -0,0 +1,37 @@ +// by commy2 +#include "script_component.hpp" + +private ["_marker", "_data", "_config"]; + +_marker = _this select 0; +_data = _this select 1; + +_config = (configfile >> "CfgMarkers") select (_data select 0); +_marker setMarkerTypeLocal configName _config; + +_config = (configfile >> "CfgMarkerColors") select (_data select 1); +_marker setMarkerColorLocal configName _config; + +_marker setMarkerPosLocal (_data select 2); +_marker setMarkerDirLocal (_data select 3); + +// save properties on server machine for JIP, marker editing ready +if (isMultiplayer && {isServer}) then { + private ["_allMapMarkers", "_allMapMarkersProperties", "_index"]; + + _allMapMarkers = GETMVAR(allMapMarkers,[]); + _allMapMarkersProperties = GETMVAR(allMapMarkersProperties,[]); + + _index = _allMapMarkers find _marker; + + if (_index == -1) then { + _allMapMarkers pushBack _marker; + _allMapMarkersProperties pushBack _data; + } else { + _allMapMarkers set [_index, _marker]; + _allMapMarkersProperties set [_index, _data]; + }; + + GVAR(allMapMarkers) = _allMapMarkers; + GVAR(allMapMarkersProperties) = _allMapMarkersProperties; +}; diff --git a/addons/markers/functions/initInsertMarker.sqf b/addons/markers/functions/initInsertMarker.sqf deleted file mode 100644 index 37a5544bca..0000000000 --- a/addons/markers/functions/initInsertMarker.sqf +++ /dev/null @@ -1,265 +0,0 @@ -// stuff taken from bohemia, edited by commy2 - -#define BORDER 0.005 - -with uinamespace do { - _this spawn { - disableserialization; - _display = _this select 0; - - //Prevent Captive Players from placing markers - if (AGM_player getVariable ["AGM_isCaptive", false]) exitWith { - _display closeDisplay 2; //emulate "Cancel" button - }; - - // display vanilla key input - _display displayAddEventHandler ["KeyDown", {(_this select 1) in [200, 208]}]; - - _text = _display displayctrl 101; - _picture = _display displayctrl 102; - _buttonOK = _display displayctrl 1; - _buttonCancel = _display displayctrl 2; - _description = _display displayctrl 1100; - _title = _display displayctrl 1001; - _sizeX = _display displayctrl 1200; - _sizeY = _display displayctrl 1201; - _shape = _display displayctrl 1210; - _color = _display displayctrl 1211; - _angle = _display displayctrl 1220; - _angleText = _display displayctrl 1221; - - ctrlSetFocus _text; - - //Change ok button's text based on current channel - [_buttonOK] spawn { - disableserialization; - private ["_buttonOK", "_channel", "_textColor"]; - _buttonOK = _this select 0; - - waitUntil { - if (isNull _buttonOK) exitWith {true}; - _textColor = [1,1,1,1]; - switch (call AGM_Core_fnc_currentChannel) do { - case ("global"): { - _channel = localize "str_channel_global"; - _textColor = [(216/255),(216/255),(216/255),1]; - }; - case ("side"): { - _channel = localize "str_channel_side"; - _textColor = [(70/255),(211/255),(252/255),1]; - }; - case ("group"): { - _channel = localize "str_channel_group"; - _textColor = [(181/255),(248/255),(98/255),1]; - }; - case ("vehicle"): { - _channel = localize "str_channel_vehicle"; - _textColor = [(255/255),(208/255),(0/255),1]; - }; - case ("direct"): { - _channel = localize "str_channel_direct"; - _textColor = [(255/255),(255/255),(255/255),1]; - }; - case ("command"): { - _channel = localize "str_channel_command"; - _textColor = [(255/255),(255/255),(70/255),1]; - }; - }; - //If localization not found, then don't touch anything (default is RscButtonMenuOK's localized text) - if (_channel != "") then { - _buttonOK ctrlSetTextColor _textColor; - _buttonOK ctrlSetText format [localize "STR_AGM_Markers_PlaceIn", _channel]; - }; - false - }; - }; - - //--- Background - _pos = ctrlposition _text; - _posX = (_pos select 0) + 0.01; - _posY = _pos select 1; - _posW = _pos select 2; - _posH = _pos select 3; - _posY = _posY min ((safeZoneH + safeZoneY) - (6 * _posH + 8 * BORDER)); //prevent buttons being placed below bottom edge of screen - _pos set [0,_posX]; - _pos set [1,_posY]; - _text ctrlsetposition _pos; - _text ctrlcommit 0; - - //--- Title - _pos set [1,_posY - 2*_posH - BORDER]; - _pos set [3,_posH]; - _title ctrlsetposition _pos; - _title ctrlcommit 0; - - //--- Description - _pos set [1,_posY - 1*_posH]; - _pos set [3,6*_posH + 6 * BORDER]; - _description ctrlsetposition _pos; - _description ctrlsetstructuredtext parsetext format ["%1","Description:"]; //--- ToDo: Localze - _description ctrlcommit 0; - - _activeColor = (["IGUI","WARNING_RGB"] call bis_fnc_displaycolorget) call bis_fnc_colorRGBtoHTML; - - //--- Shape - _pos set [1,_posY + 1 * _posH + 2 * BORDER]; - _pos set [2,_posW]; - _pos set [3,_posH]; - _shape ctrlsetposition _pos; - _shape ctrlcommit 0; - - //--- Color - _pos set [1,_posY + 2 * _posH + 3 * BORDER]; - _pos set [2,_posW]; - _color ctrlsetposition _pos; - _color ctrlcommit 0; - - //--- Angle - _pos set [1,_posY + 3 * _posH + 4 * BORDER]; - _pos set [2,_posW]; - _angle ctrlsetposition _pos; - _angle ctrlcommit 0; - - //--- Angle Text - _pos set [1,_posY + 4 * _posH + 5 * BORDER]; - _pos set [2,_posW]; - _angleText ctrlsetposition _pos; - _angleText ctrlcommit 0; - - //--- ButtonOK - _pos set [1,_posY + 5 * _posH + 7 * BORDER]; - _pos set [2,_posW * (8.9/10) - BORDER]; - _buttonOk ctrlsetposition _pos; - _buttonOk ctrlcommit 0; - - //--- ButtonCancel - _pos set [0,_posX + _posW * (8.9 / 10)]; - _pos set [2,_posW * (1.1 / 10)]; - _buttonCancel ctrlsetposition _pos; - _buttonCancel ctrlcommit 0; - - //--- PositionX - /*_pos set [1,_posY + 2 * _posH + 3 * BORDER]; - _sizeX ctrlsetposition _pos; - _sizeX ctrlcommit 0;*/ - - //--- PositionY - /*_pos set [1,_posY + 2 * _posH + 3 * BORDER]; - _sizeY ctrlsetposition _pos; - _sizeY ctrlcommit 0;*/ - - - // init marker shape lb - _config = configfile >> "CfgMarkers"; - _index = 0; - - if (isNil "AGM_Markers_MarkersCache") then { - AGM_Markers_MarkersCache = []; - - for "_a" from 0 to (count _config - 1) do { - _marker = _config select _a; - - _scope = getNumber (_marker >> "scope"); - _name = getText (_marker >> "name"); - _icon = getText (_marker >> "icon"); - - if (_scope == 2) then { - _shape lbAdd _name; - _shape lbSetValue [_index, _a]; - _shape lbSetPicture [_index, _icon]; - - AGM_Markers_MarkersCache pushBack [_name, _a, _icon]; - - _index = _index + 1; - }; - }; - } else { - { - _shape lbAdd (_x select 0); - _shape lbSetValue [_forEachIndex, _x select 1]; - _shape lbSetPicture [_forEachIndex, _x select 2]; - } forEach AGM_Markers_MarkersCache; - }; - - _shape ctrlAddEventHandler ["LBSelChanged", {_this call AGM_Markers_fnc_onLBSelChangedShape}]; - - _curSelShape = uiNamespace getVariable ["AGM_Markers_curSelMarkerShape", 0]; - _shape lbSetCurSel _curSelShape; - _data = _shape lbValue _curSelShape; - _config = (configfile >> "CfgMarkers") select _data; - _icon = getText (_config >> "icon"); - _picture ctrlSetText _icon; - - - // init marker color lb - _config = configfile >> "CfgMarkerColors"; - _index = 0; - - if (isNil "AGM_Markers_MarkerColorsCache") then { - AGM_Markers_MarkerColorsCache = []; - - for "_a" from 0 to (count _config - 1) do { - _marker = _config select _a; - - _scope = getNumber (_marker >> "scope"); - _name = getText (_marker >> "name"); - - if (_scope == 2) then { - _color lbAdd _name; - _color lbSetValue [_index, _a]; - - _rgba = getArray (_marker >> "color"); - - { - if (typeName _x != "SCALAR") then { - _rgba set [_forEachIndex, call compile _x]; - }; - } forEach _rgba; - - _icon = format ["#(argb,8,8,3)color(%1,%2,%3,%4)", _rgba select 0, _rgba select 1, _rgba select 2, _rgba select 3]; - - _color lbSetPicture [_index, _icon]; - - AGM_Markers_MarkerColorsCache pushBack [_name, _a, _icon]; - - _index = _index + 1; - }; - }; - } else { - { - _color lbAdd (_x select 0); - _color lbSetValue [_forEachIndex, _x select 1]; - _color lbSetPicture [_forEachIndex, _x select 2]; - } forEach AGM_Markers_MarkerColorsCache; - }; - - _color ctrlAddEventHandler ["LBSelChanged", {_this call AGM_Markers_fnc_onLBSelChangedColor}]; - - _curSelColor = uiNamespace getVariable ["AGM_Markers_curSelMarkerColor", 0]; - _color lbSetCurSel _curSelColor; - _data = _color lbValue _curSelColor; - _config = (configfile >> "CfgMarkerColors") select _data; - _rgba = getArray (_config >> "color"); - { - if (typeName _x != "SCALAR") then { - _rgba set [_forEachIndex, call compile _x]; - }; - } forEach _rgba; - _picture ctrlSetTextColor _rgba; - - - // init marker angle slider - _angle sliderSetRange [-180, 180]; - _angle ctrlAddEventHandler ["SliderPosChanged", {_this call AGM_Markers_fnc_onSliderPosChangedAngle}]; - - _curSelAngle = uiNamespace getVariable ["AGM_Markers_curSelMarkerAngle", 0]; - _angle sliderSetPosition _curSelAngle; - - _curSelAngle = round _curSelAngle; - if (_curSelAngle < 0) then { - _curSelAngle = _curSelAngle + 360; - }; - - _angleText ctrlSetText format [localize "STR_AGM_Markers_MarkerDirection", _curSelAngle]; - }; -}; diff --git a/addons/markers/functions/placeMarker.sqf b/addons/markers/functions/placeMarker.sqf deleted file mode 100644 index 248190435a..0000000000 --- a/addons/markers/functions/placeMarker.sqf +++ /dev/null @@ -1,51 +0,0 @@ -// by commy2 - -if (_this select 1 == 1) then { - disableserialization; - _display = _this select 0; - - _pos = ctrlPosition (_display displayCtrl 102); - _pos = [ - (_pos select 0) + (_pos select 2) / 2, - (_pos select 1) + (_pos select 3) / 2 - ]; - - switch (true) do { - case (!isNull findDisplay 12) : { - _pos = (findDisplay 12 displayCtrl 51) ctrlMapScreenToWorld _pos; - }; - case (!isNull findDisplay 37) : { - _pos = (findDisplay 37 displayCtrl 51) ctrlMapScreenToWorld _pos; - }; - case (!isNull findDisplay 52) : { - _pos = (findDisplay 52 displayCtrl 51) ctrlMapScreenToWorld _pos; - }; - case (!isNull findDisplay 53) : { - _pos = (findDisplay 53 displayCtrl 51) ctrlMapScreenToWorld _pos; - }; - }; - - _pos spawn { - /*[ - allMapMarkers select (count allMapMarkers - 1), - [ - uiNamespace getVariable ['AGM_Markers_currentMarkerShape', 0], - uiNamespace getVariable ['AGM_Markers_currentMarkerColor', 0], - _this, - uiNamespace getVariable ['AGM_Markers_currentMarkerAngle', 0] - ] - ] call AGM_Markers_fnc_setMarker;*/ - - [ - [ - allMapMarkers select (count allMapMarkers - 1), - [ - uiNamespace getVariable ['AGM_Markers_currentMarkerShape', 0], - uiNamespace getVariable ['AGM_Markers_currentMarkerColor', 0], - _this, - uiNamespace getVariable ['AGM_Markers_currentMarkerAngle', 0] - ] - ], "AGM_Markers_fnc_setMarkerNetwork", 2 - ] call AGM_Core_fnc_execRemoteFnc; - }; -}; diff --git a/addons/markers/functions/script_component.hpp b/addons/markers/functions/script_component.hpp new file mode 100644 index 0000000000..26adba2431 --- /dev/null +++ b/addons/markers/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\markers\script_component.hpp"