From 1de569656df18f8d67fd8be32df27f164b9a8e70 Mon Sep 17 00:00:00 2001 From: Grzegorz Date: Wed, 17 Jun 2015 14:58:35 +0200 Subject: [PATCH 01/78] Fix checking vitals anim It uses animations that don't match at all what you are doing anyway so I think it's better to just disable anim for that actions which are: * Checking pulse * Checking BP * Checking response --- addons/medical/ACE_Medical_Treatments.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 8eacf39006..3fafca6df3 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -242,6 +242,8 @@ class ACE_Medical_Actions { callbackProgress = ""; animationPatient = ""; animationCaller = ""; // TODO + animationCallerProne = ""; + animationCallerSelfProne = ""; itemConsumed = 0; litter[] = {}; }; From d0d585d0f55edf29e9bc7e63145fe5ef4554f741 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 1 Aug 2015 20:47:40 +0200 Subject: [PATCH 02/78] Fix that Parachute can get in Arsenal or in Crate --- addons/parachute/CfgVehicles.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/parachute/CfgVehicles.hpp b/addons/parachute/CfgVehicles.hpp index 3de7bf66b6..aefadf2e63 100644 --- a/addons/parachute/CfgVehicles.hpp +++ b/addons/parachute/CfgVehicles.hpp @@ -6,7 +6,6 @@ class CfgVehicles { }; class TransportBackpacks { MACRO_ADDBACKPACK(ACE_NonSteerableParachute,4); - MACRO_ADDBACKPACK(ACE_ReserveParachute,4); }; }; @@ -93,7 +92,7 @@ class CfgVehicles { class ACE_ReserveParachute: ACE_NonSteerableParachute { author = ECSTRING(common,ACETeam); displayName = CSTRING(ReserveParachute); - scope = 2; + scope = 1; mass = 70; ParachuteClass = "NonSteerable_Parachute_F"; ace_reserveParachute = ""; From c5a371e9b6e055fd1a64b8943c8e64342c6ac104 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 1 Aug 2015 15:07:09 -0500 Subject: [PATCH 03/78] #1965 - Mouse cooldown for click to interact option --- addons/attach/functions/fnc_attach.sqf | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 6738b3e8c8..f7083c9b8c 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -71,7 +71,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment private["_angle", "_dir", "_screenPos", "_realDistance", "_up", "_virtualPos", "_virtualPosASL", "_lineInterection"]; PARAMS_2(_args,_pfID); - EXPLODE_6_PVT(_args,_unit,_attachToVehicle,_itemClassname,_itemVehClass,_onAtachText,_actionID); + EXPLODE_7_PVT(_args,_unit,_attachToVehicle,_itemClassname,_itemVehClass,_onAtachText,_actionID,_startDiagTime); _virtualPosASL = (eyePos _unit) vectorAdd (positionCameraToWorld [0,0,0.6]) vectorDiff (positionCameraToWorld [0,0,0]); if (cameraView == "EXTERNAL") then { @@ -80,8 +80,10 @@ if (_unit == _attachToVehicle) then { //Self Attachment _virtualPos = _virtualPosASL call EFUNC(common,ASLToPosition); _lineInterection = lineIntersects [eyePos ACE_player, _virtualPosASL, ACE_player]; - //Don't allow placing in a bad position: - if (_lineInterection && {GVAR(placeAction) == PLACE_APPROVE}) then {GVAR(placeAction) = PLACE_WAITING;}; + //Don't allow placing in a bad position or placing right away (click to interact option) + if ((GVAR(placeAction) == PLACE_APPROVE) && {_lineInterection || {ACE_diagTime < (_startDiagTime + 0.333)}}) then { + GVAR(placeAction) = PLACE_WAITING; + }; if ((GVAR(placeAction) != PLACE_WAITING) || {_unit != ACE_player} || @@ -118,5 +120,5 @@ if (_unit == _attachToVehicle) then { //Self Attachment ((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetModelDirAndUp [[1,0,0], _up]; }; }; - }, 0, [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAtachText, _actionID]] call CBA_fnc_addPerFrameHandler; + }, 0, [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAtachText, _actionID, ACE_diagTime]] call CBA_fnc_addPerFrameHandler; }; From 5bcc867bac1c2f87d217168fd35c493e8bbd131a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 1 Aug 2015 18:26:38 -0500 Subject: [PATCH 04/78] #1785 - Handle option for all "deploy" actions --- addons/attach/functions/fnc_attach.sqf | 18 ++++++++------- .../concertina_wire/functions/fnc_deploy.sqf | 17 +++++++------- addons/sandbag/functions/fnc_deploy.sqf | 23 +++++++++++-------- .../functions/fnc_positionTL.sqf | 23 +++++++++++-------- addons/tripod/functions/fnc_adjust.sqf | 13 +++++++---- 5 files changed, 53 insertions(+), 41 deletions(-) diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index f7083c9b8c..463a89bc48 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -51,8 +51,12 @@ if (_unit == _attachToVehicle) then { //Self Attachment [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus); - [{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame); - _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)]; + [{ //wait a frame to handle "Do When releasing action menu key" + PARAMS_1(_unit); + if (GVAR(placeAction) != PLACE_WAITING) exitWith {}; + [localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint); + _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)]; + }, [_unit]] call EFUNC(common,execNextFrame); _actionID = _unit addAction [format ["%1", localize LSTRING(CancelAction)], {GVAR(placeAction) = PLACE_CANCEL}]; @@ -71,7 +75,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment private["_angle", "_dir", "_screenPos", "_realDistance", "_up", "_virtualPos", "_virtualPosASL", "_lineInterection"]; PARAMS_2(_args,_pfID); - EXPLODE_7_PVT(_args,_unit,_attachToVehicle,_itemClassname,_itemVehClass,_onAtachText,_actionID,_startDiagTime); + EXPLODE_6_PVT(_args,_unit,_attachToVehicle,_itemClassname,_itemVehClass,_onAtachText,_actionID); _virtualPosASL = (eyePos _unit) vectorAdd (positionCameraToWorld [0,0,0.6]) vectorDiff (positionCameraToWorld [0,0,0]); if (cameraView == "EXTERNAL") then { @@ -80,10 +84,8 @@ if (_unit == _attachToVehicle) then { //Self Attachment _virtualPos = _virtualPosASL call EFUNC(common,ASLToPosition); _lineInterection = lineIntersects [eyePos ACE_player, _virtualPosASL, ACE_player]; - //Don't allow placing in a bad position or placing right away (click to interact option) - if ((GVAR(placeAction) == PLACE_APPROVE) && {_lineInterection || {ACE_diagTime < (_startDiagTime + 0.333)}}) then { - GVAR(placeAction) = PLACE_WAITING; - }; + //Don't allow placing in a bad position: + if (_lineInterection && {GVAR(placeAction) == PLACE_APPROVE}) then {GVAR(placeAction) = PLACE_WAITING;}; if ((GVAR(placeAction) != PLACE_WAITING) || {_unit != ACE_player} || @@ -120,5 +122,5 @@ if (_unit == _attachToVehicle) then { //Self Attachment ((uiNamespace getVariable [QGVAR(virtualAmmoDisplay), displayNull]) displayCtrl 800851) ctrlSetModelDirAndUp [[1,0,0], _up]; }; }; - }, 0, [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAtachText, _actionID, ACE_diagTime]] call CBA_fnc_addPerFrameHandler; + }, 0, [_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAtachText, _actionID]] call CBA_fnc_addPerFrameHandler; }; diff --git a/addons/concertina_wire/functions/fnc_deploy.sqf b/addons/concertina_wire/functions/fnc_deploy.sqf index c30e767266..9623225df8 100644 --- a/addons/concertina_wire/functions/fnc_deploy.sqf +++ b/addons/concertina_wire/functions/fnc_deploy.sqf @@ -37,7 +37,7 @@ deleteVehicle _wirecoil; _unit setVariable [QGVAR(wireDeployed), false]; GVAR(deployPFH) = [{ - EXPLODE_4_PVT(_this select 0,_wireNoGeo,_wireNoGeoPos,_unit,_action); + EXPLODE_3_PVT(_this select 0,_wireNoGeo,_wireNoGeoPos,_unit); private ["_range", "_posStart", "_posEnd", "_dirVect", "_dir", "_anim", "_wire"]; _posStart = (_wireNoGeo modelToWorldVisual (_wireNoGeo selectionPosition "start")) call EFUNC(common,positionToASL); @@ -73,12 +73,13 @@ GVAR(deployPFH) = [{ { _wireNoGeo animate [_x, _anim]; } foreach WIRE_FAST; -}, 0, [_wireNoGeo, _wireNoGeoPos, _unit, _action]] call CBA_fnc_addPerFrameHandler; +}, 0, [_wireNoGeo, _wireNoGeoPos, _unit]] call CBA_fnc_addPerFrameHandler; [localize "STR_ACE_ROLLWIRE", "", ""] call EFUNC(interaction,showMouseHint); - -GVAR(placer) setVariable [QGVAR(Deploy), - [GVAR(placer), "DefaultAction", - {GVAR(deployPFH) != -1}, - {GVAR(placer) setVariable [QGVAR(wireDeployed), true]} -] call EFUNC(common,AddActionEventHandler)]; +[{ //wait a frame to handle "Do When releasing action menu key" option + GVAR(placer) setVariable [QGVAR(Deploy), + [GVAR(placer), "DefaultAction", + {GVAR(deployPFH) != -1}, + {GVAR(placer) setVariable [QGVAR(wireDeployed), true]} + ] call EFUNC(common,AddActionEventHandler)]; +}, _this] call EFUNC(common,execNextFrame); diff --git a/addons/sandbag/functions/fnc_deploy.sqf b/addons/sandbag/functions/fnc_deploy.sqf index 1e1121409b..98fd4b1bd0 100644 --- a/addons/sandbag/functions/fnc_deploy.sqf +++ b/addons/sandbag/functions/fnc_deploy.sqf @@ -34,14 +34,17 @@ GVAR(deployPFH) = [{ [localize LSTRING(ConfirmDeployment), localize LSTRING(CancelDeployment), localize LSTRING(ScrollAction)] call EFUNC(interaction,showMouseHint); -GVAR(placer) setVariable [QGVAR(Deploy), - [GVAR(placer), "DefaultAction", - {GVAR(deployPFH) != -1 && !isNull (GVAR(sandBag))}, - {call FUNC(deployConfirm);} -] call EFUNC(common,AddActionEventHandler)]; +[{ //wait a frame to handle "Do When releasing action menu key" option + GVAR(placer) setVariable [QGVAR(Deploy), + [GVAR(placer), "DefaultAction", + {GVAR(deployPFH) != -1 && !isNull (GVAR(sandBag))}, + {call FUNC(deployConfirm);} + ] call EFUNC(common,AddActionEventHandler)]; -GVAR(placer) setVariable [QGVAR(Cancel), - [GVAR(placer), "zoomtemp", - {GVAR(deployPFH) != -1 && !isNull (GVAR(sandBag))}, - {call FUNC(deployCancel);} -] call EFUNC(common,AddActionEventHandler)]; + GVAR(placer) setVariable [QGVAR(Cancel), + [GVAR(placer), "zoomtemp", + {GVAR(deployPFH) != -1 && !isNull (GVAR(sandBag))}, + {call FUNC(deployCancel);} + ] call EFUNC(common,AddActionEventHandler)]; + +}, _this] call EFUNC(common,execNextFrame); diff --git a/addons/tacticalladder/functions/fnc_positionTL.sqf b/addons/tacticalladder/functions/fnc_positionTL.sqf index 103792c851..b8ef914879 100644 --- a/addons/tacticalladder/functions/fnc_positionTL.sqf +++ b/addons/tacticalladder/functions/fnc_positionTL.sqf @@ -39,14 +39,17 @@ GVAR(currentAngle) = 0; [localize LSTRING(Deploy), localize LSTRING(Drop), localize LSTRING(Adjust)] call EFUNC(interaction,showMouseHint); -ACE_player setVariable [QGVAR(Deploy), - [ACE_player, "DefaultAction", - {!isNull GVAR(ladder)}, - {GVAR(ladder) call FUNC(confirmTLdeploy);} -] call EFUNC(common,AddActionEventHandler)]; +[{ //wait a frame to handle "Do When releasing action menu key" option + ACE_player setVariable [QGVAR(Deploy), + [ACE_player, "DefaultAction", + {!isNull GVAR(ladder)}, + {GVAR(ladder) call FUNC(confirmTLdeploy);} + ] call EFUNC(common,AddActionEventHandler)]; -ACE_player setVariable [QGVAR(Cancel), - [ACE_player, "zoomtemp", - {!isNull GVAR(ladder)}, - {GVAR(ladder) call FUNC(cancelTLdeploy);} -] call EFUNC(common,AddActionEventHandler)]; + ACE_player setVariable [QGVAR(Cancel), + [ACE_player, "zoomtemp", + {!isNull GVAR(ladder)}, + {GVAR(ladder) call FUNC(cancelTLdeploy);} + ] call EFUNC(common,AddActionEventHandler)]; + +}, _this] call EFUNC(common,execNextFrame); diff --git a/addons/tripod/functions/fnc_adjust.sqf b/addons/tripod/functions/fnc_adjust.sqf index ce50d38cf0..bdfb2184e3 100644 --- a/addons/tripod/functions/fnc_adjust.sqf +++ b/addons/tripod/functions/fnc_adjust.sqf @@ -36,8 +36,11 @@ GVAR(adjustPFH) = [{ [localize "STR_ACE_Tripod_Done", "", localize "STR_ACE_Tripod_ScrollAction"] call EFUNC(interaction,showMouseHint); -ACE_player setVariable [QGVAR(Adjust), - [ACE_player, "DefaultAction", - {GVAR(adjustPFH) != -1 && GVAR(adjusting)}, - {GVAR(adjusting) = false;} -] call EFUNC(common,AddActionEventHandler)]; +[{ //wait a frame to handle "Do When releasing action menu key" option + if (!GVAR(adjusting)) exitWith {ERROR("Not Adjusting");}; + ACE_player setVariable [QGVAR(Adjust), + [ACE_player, "DefaultAction", + {GVAR(adjustPFH) != -1 && GVAR(adjusting)}, + {GVAR(adjusting) = false;} + ] call EFUNC(common,AddActionEventHandler)]; +}, _this] call EFUNC(common,execNextFrame); From f3e8a8ae42a546e74ccfb2fe7d95f437a898af52 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Sun, 2 Aug 2015 03:29:53 +0200 Subject: [PATCH 05/78] Updated wind indicator to use head direction instead of player direction. Fixes #1892. --- addons/weather/functions/fnc_displayWindInfo.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/weather/functions/fnc_displayWindInfo.sqf b/addons/weather/functions/fnc_displayWindInfo.sqf index e81463f41a..44a5b0696c 100644 --- a/addons/weather/functions/fnc_displayWindInfo.sqf +++ b/addons/weather/functions/fnc_displayWindInfo.sqf @@ -47,7 +47,7 @@ GVAR(WindInfo) = true; }; if (_windSpeed > 0.2) then { - _playerDir = getDir ACE_player; + _playerDir = (ACE_player call CBA_fnc_headDir) select 0; _windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); _windIndex = round(((_playerDir - _windDir + 360) % 360) / 30); _windIndex = _windIndex % 12; From bd79a7b8f541f02cd6486116cb328e41bfe5c2e7 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Sun, 2 Aug 2015 03:30:19 +0200 Subject: [PATCH 06/78] Updated AUTHOR file --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 70bd7af086..62329d7c1d 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -107,3 +107,4 @@ VyMajoris(W-Cephei) Winter zGuba Drill +MikeMatrix From eb5ac22b8df986ae75d9dfaeae95e4ac76a84883 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 2 Aug 2015 01:05:28 -0500 Subject: [PATCH 07/78] Cleanup --- addons/attach/functions/fnc_attach.sqf | 8 ++----- .../fnc_getChildrenAttachActions.sqf | 4 ++-- addons/concertina_wire/CfgVehicles.hpp | 3 ++- .../concertina_wire/functions/fnc_deploy.sqf | 13 +++++------ addons/sandbag/CfgVehicles.hpp | 3 ++- addons/sandbag/functions/fnc_deploy.sqf | 23 ++++++++----------- addons/tacticalladder/CfgVehicles.hpp | 3 ++- .../functions/fnc_positionTL.sqf | 23 ++++++++----------- addons/tripod/CfgVehicles.hpp | 5 ++-- addons/tripod/functions/fnc_adjust.sqf | 13 ++++------- 10 files changed, 44 insertions(+), 54 deletions(-) diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 463a89bc48..6738b3e8c8 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -51,12 +51,8 @@ if (_unit == _attachToVehicle) then { //Self Attachment [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus); - [{ //wait a frame to handle "Do When releasing action menu key" - PARAMS_1(_unit); - if (GVAR(placeAction) != PLACE_WAITING) exitWith {}; - [localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint); - _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)]; - }, [_unit]] call EFUNC(common,execNextFrame); + [{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame); + _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)]; _actionID = _unit addAction [format ["%1", localize LSTRING(CancelAction)], {GVAR(placeAction) = PLACE_CANCEL}]; diff --git a/addons/attach/functions/fnc_getChildrenAttachActions.sqf b/addons/attach/functions/fnc_getChildrenAttachActions.sqf index fb432146be..e64f405740 100644 --- a/addons/attach/functions/fnc_getChildrenAttachActions.sqf +++ b/addons/attach/functions/fnc_getChildrenAttachActions.sqf @@ -30,7 +30,7 @@ _actions = []; if (getText (_item >> "ACE_Attachable") != "") then { _displayName = getText(_item >> "displayName"); _picture = getText(_item >> "picture"); - _action = [_x, _displayName, _picture, {_this call FUNC(attach)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction); + _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction); _actions pushBack [_action, [], _target]; }; }; @@ -43,7 +43,7 @@ _actions = []; if (getText (_item >> "ACE_Attachable") != "") then { _displayName = getText(_item >> "displayName"); _picture = getText(_item >> "picture"); - _action = [_x, _displayName, _picture, {_this call FUNC(attach)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction); + _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction); _actions pushBack [_action, [], _target]; }; }; diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index 2592bf5b77..cf1be40487 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -123,7 +123,8 @@ class CfgVehicles { displayName = "$STR_ACE_ROLLWIRE"; distance = 4; condition = "true"; - statement = QUOTE([ARR_2(_target,_player)] call FUNC(deploy)); + //wait a frame to handle "Do When releasing action menu key" option: + statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [ARR_2(_target,_player)])] call EFUNC(common,execNextFrame)); showDisabled = 0; exceptions[] = {}; priority = 5; diff --git a/addons/concertina_wire/functions/fnc_deploy.sqf b/addons/concertina_wire/functions/fnc_deploy.sqf index 9623225df8..5548cad649 100644 --- a/addons/concertina_wire/functions/fnc_deploy.sqf +++ b/addons/concertina_wire/functions/fnc_deploy.sqf @@ -76,10 +76,9 @@ GVAR(deployPFH) = [{ }, 0, [_wireNoGeo, _wireNoGeoPos, _unit]] call CBA_fnc_addPerFrameHandler; [localize "STR_ACE_ROLLWIRE", "", ""] call EFUNC(interaction,showMouseHint); -[{ //wait a frame to handle "Do When releasing action menu key" option - GVAR(placer) setVariable [QGVAR(Deploy), - [GVAR(placer), "DefaultAction", - {GVAR(deployPFH) != -1}, - {GVAR(placer) setVariable [QGVAR(wireDeployed), true]} - ] call EFUNC(common,AddActionEventHandler)]; -}, _this] call EFUNC(common,execNextFrame); + +GVAR(placer) setVariable [QGVAR(Deploy), + [GVAR(placer), "DefaultAction", + {GVAR(deployPFH) != -1}, + {GVAR(placer) setVariable [QGVAR(wireDeployed), true]} +] call EFUNC(common,AddActionEventHandler)]; diff --git a/addons/sandbag/CfgVehicles.hpp b/addons/sandbag/CfgVehicles.hpp index 76a986bfbd..5a9b530062 100644 --- a/addons/sandbag/CfgVehicles.hpp +++ b/addons/sandbag/CfgVehicles.hpp @@ -5,7 +5,8 @@ class CfgVehicles { class ACE_Sandbags { displayName = CSTRING(DeploySandbag); condition = QUOTE(call FUNC(canDeploy)); - statement = QUOTE(call FUNC(deploy)); + //wait a frame to handle "Do When releasing action menu key" option: + statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [])] call EFUNC(common,execNextFrame)); exceptions[] = {"isNotSwimming"}; showDisabled = 1; priority = 4; diff --git a/addons/sandbag/functions/fnc_deploy.sqf b/addons/sandbag/functions/fnc_deploy.sqf index 98fd4b1bd0..1e1121409b 100644 --- a/addons/sandbag/functions/fnc_deploy.sqf +++ b/addons/sandbag/functions/fnc_deploy.sqf @@ -34,17 +34,14 @@ GVAR(deployPFH) = [{ [localize LSTRING(ConfirmDeployment), localize LSTRING(CancelDeployment), localize LSTRING(ScrollAction)] call EFUNC(interaction,showMouseHint); -[{ //wait a frame to handle "Do When releasing action menu key" option - GVAR(placer) setVariable [QGVAR(Deploy), - [GVAR(placer), "DefaultAction", - {GVAR(deployPFH) != -1 && !isNull (GVAR(sandBag))}, - {call FUNC(deployConfirm);} - ] call EFUNC(common,AddActionEventHandler)]; +GVAR(placer) setVariable [QGVAR(Deploy), + [GVAR(placer), "DefaultAction", + {GVAR(deployPFH) != -1 && !isNull (GVAR(sandBag))}, + {call FUNC(deployConfirm);} +] call EFUNC(common,AddActionEventHandler)]; - GVAR(placer) setVariable [QGVAR(Cancel), - [GVAR(placer), "zoomtemp", - {GVAR(deployPFH) != -1 && !isNull (GVAR(sandBag))}, - {call FUNC(deployCancel);} - ] call EFUNC(common,AddActionEventHandler)]; - -}, _this] call EFUNC(common,execNextFrame); +GVAR(placer) setVariable [QGVAR(Cancel), + [GVAR(placer), "zoomtemp", + {GVAR(deployPFH) != -1 && !isNull (GVAR(sandBag))}, + {call FUNC(deployCancel);} +] call EFUNC(common,AddActionEventHandler)]; diff --git a/addons/tacticalladder/CfgVehicles.hpp b/addons/tacticalladder/CfgVehicles.hpp index bd66176e34..a1eda1a955 100644 --- a/addons/tacticalladder/CfgVehicles.hpp +++ b/addons/tacticalladder/CfgVehicles.hpp @@ -82,7 +82,8 @@ class CfgVehicles { displayName = CSTRING(Position); distance = 4; condition = "true"; - statement = QUOTE([ARR_2(_target,_player)] call FUNC(positionTL)); + //wait a frame to handle "Do When releasing action menu key" option: + statement = QUOTE([ARR_2({_this call FUNC(positionTL)}, [ARR_2(_target,_player)])] call EFUNC(common,execNextFrame)); showDisabled = 0; exceptions[] = {}; priority = 5; diff --git a/addons/tacticalladder/functions/fnc_positionTL.sqf b/addons/tacticalladder/functions/fnc_positionTL.sqf index b8ef914879..103792c851 100644 --- a/addons/tacticalladder/functions/fnc_positionTL.sqf +++ b/addons/tacticalladder/functions/fnc_positionTL.sqf @@ -39,17 +39,14 @@ GVAR(currentAngle) = 0; [localize LSTRING(Deploy), localize LSTRING(Drop), localize LSTRING(Adjust)] call EFUNC(interaction,showMouseHint); -[{ //wait a frame to handle "Do When releasing action menu key" option - ACE_player setVariable [QGVAR(Deploy), - [ACE_player, "DefaultAction", - {!isNull GVAR(ladder)}, - {GVAR(ladder) call FUNC(confirmTLdeploy);} - ] call EFUNC(common,AddActionEventHandler)]; +ACE_player setVariable [QGVAR(Deploy), + [ACE_player, "DefaultAction", + {!isNull GVAR(ladder)}, + {GVAR(ladder) call FUNC(confirmTLdeploy);} +] call EFUNC(common,AddActionEventHandler)]; - ACE_player setVariable [QGVAR(Cancel), - [ACE_player, "zoomtemp", - {!isNull GVAR(ladder)}, - {GVAR(ladder) call FUNC(cancelTLdeploy);} - ] call EFUNC(common,AddActionEventHandler)]; - -}, _this] call EFUNC(common,execNextFrame); +ACE_player setVariable [QGVAR(Cancel), + [ACE_player, "zoomtemp", + {!isNull GVAR(ladder)}, + {GVAR(ladder) call FUNC(cancelTLdeploy);} +] call EFUNC(common,AddActionEventHandler)]; diff --git a/addons/tripod/CfgVehicles.hpp b/addons/tripod/CfgVehicles.hpp index a489e18704..2a689ba349 100644 --- a/addons/tripod/CfgVehicles.hpp +++ b/addons/tripod/CfgVehicles.hpp @@ -17,7 +17,7 @@ class CfgVehicles { class Item_Base_F; class ACE_Item_Tripod: Item_Base_F { - author[] = {"Rocko", "Scubaman3D"}; + author[] = {"Rocko", "Scubaman3D"}; scope = 2; scopeCurator = 2; displayName = CSTRING(DisplayName); @@ -76,7 +76,8 @@ class CfgVehicles { displayName = CSTRING(Adjust); distance = 5; condition = "true"; - statement = QUOTE(_target call FUNC(adjust)); + //wait a frame to handle "Do When releasing action menu key" option: + statement = QUOTE([ARR_2({_this call FUNC(adjust)}, [_target])] call EFUNC(common,execNextFrame)); showDisabled = 0; exceptions[] = {}; priority = 5; diff --git a/addons/tripod/functions/fnc_adjust.sqf b/addons/tripod/functions/fnc_adjust.sqf index bdfb2184e3..ce50d38cf0 100644 --- a/addons/tripod/functions/fnc_adjust.sqf +++ b/addons/tripod/functions/fnc_adjust.sqf @@ -36,11 +36,8 @@ GVAR(adjustPFH) = [{ [localize "STR_ACE_Tripod_Done", "", localize "STR_ACE_Tripod_ScrollAction"] call EFUNC(interaction,showMouseHint); -[{ //wait a frame to handle "Do When releasing action menu key" option - if (!GVAR(adjusting)) exitWith {ERROR("Not Adjusting");}; - ACE_player setVariable [QGVAR(Adjust), - [ACE_player, "DefaultAction", - {GVAR(adjustPFH) != -1 && GVAR(adjusting)}, - {GVAR(adjusting) = false;} - ] call EFUNC(common,AddActionEventHandler)]; -}, _this] call EFUNC(common,execNextFrame); +ACE_player setVariable [QGVAR(Adjust), + [ACE_player, "DefaultAction", + {GVAR(adjustPFH) != -1 && GVAR(adjusting)}, + {GVAR(adjusting) = false;} +] call EFUNC(common,AddActionEventHandler)]; From 4dfef8025bce0a12821c01fa2d7c146742525149 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 2 Aug 2015 16:56:27 +0200 Subject: [PATCH 08/78] Medical menu port from CSE --- addons/medical_menu/$PBOPREFIX$ | 1 + addons/medical_menu/CfgEventHandlers.hpp | 11 + addons/medical_menu/README.md | 10 + addons/medical_menu/XEH_postInit.sqf | 2 + addons/medical_menu/XEH_preInit.sqf | 14 + addons/medical_menu/config.cpp | 24 + .../medical_menu/data/ACE_medical_module.paa | Bin 0 -> 5625 bytes addons/medical_menu/data/background_img.paa | Bin 0 -> 55078 bytes addons/medical_menu/data/body_arm_left.paa | Bin 0 -> 25755 bytes addons/medical_menu/data/body_arm_right.paa | Bin 0 -> 25747 bytes addons/medical_menu/data/body_arms.paa | Bin 0 -> 26657 bytes addons/medical_menu/data/body_background.paa | Bin 0 -> 56863 bytes addons/medical_menu/data/body_head.paa | Bin 0 -> 24927 bytes addons/medical_menu/data/body_img-arms.paa | Bin 0 -> 29430 bytes addons/medical_menu/data/body_img-head.paa | Bin 0 -> 24746 bytes addons/medical_menu/data/body_img-legs.paa | Bin 0 -> 28658 bytes addons/medical_menu/data/body_img-torso.paa | Bin 0 -> 25596 bytes addons/medical_menu/data/body_leg_left.paa | Bin 0 -> 26259 bytes addons/medical_menu/data/body_leg_right.paa | Bin 0 -> 26293 bytes addons/medical_menu/data/body_legs.paa | Bin 0 -> 27312 bytes addons/medical_menu/data/body_torso.paa | Bin 0 -> 25527 bytes addons/medical_menu/data/border_arm_left.paa | Bin 0 -> 26291 bytes addons/medical_menu/data/border_arm_right.paa | Bin 0 -> 26239 bytes addons/medical_menu/data/border_head.paa | Bin 0 -> 25181 bytes addons/medical_menu/data/border_leg_left.paa | Bin 0 -> 26970 bytes addons/medical_menu/data/border_leg_right.paa | Bin 0 -> 27005 bytes addons/medical_menu/data/border_torso.paa | Bin 0 -> 26036 bytes .../data/buttonDisabled_gradient.paa | Bin 0 -> 1816 bytes .../data/buttonNormal_gradient.paa | Bin 0 -> 1989 bytes .../data/buttonNormal_gradient2.paa | Bin 0 -> 2035 bytes .../data/buttonNormal_gradient3.paa | Bin 0 -> 2044 bytes .../data/buttonNormal_gradient_top.paa | Bin 0 -> 1995 bytes .../data/icons/advanced_treatment_small.paa | Bin 0 -> 5625 bytes .../data/icons/airway_management_small.paa | Bin 0 -> 5625 bytes .../data/icons/bandage_fracture_small.paa | Bin 0 -> 5625 bytes .../data/icons/examine_patient_small.paa | Bin 0 -> 5625 bytes .../data/icons/icon_advanced_treatment.paa | Bin 0 -> 25638 bytes .../data/icons/icon_airway_management.paa | Bin 0 -> 25200 bytes .../data/icons/icon_bandage_fracture.paa | Bin 0 -> 27197 bytes .../medical_menu/data/icons/icon_bleeding.paa | Bin 0 -> 51687 bytes addons/medical_menu/data/icons/icon_carry.paa | Bin 0 -> 26983 bytes .../data/icons/icon_examine_patient.paa | Bin 0 -> 31561 bytes .../data/icons/icon_medication.paa | Bin 0 -> 24820 bytes .../data/icons/icon_toggle_self.paa | Bin 0 -> 24844 bytes .../data/icons/icon_tourniquet.paa | Bin 0 -> 25389 bytes .../data/icons/icon_tourniquet_small.paa | Bin 0 -> 5625 bytes .../data/icons/icon_triage_card.paa | Bin 0 -> 31163 bytes .../data/icons/medication_small.paa | Bin 0 -> 5625 bytes .../data/icons/toggle_self_small.paa | Bin 0 -> 5625 bytes .../data/icons/triage_card_small.paa | Bin 0 -> 5625 bytes addons/medical_menu/data/ui_background.paa | Bin 0 -> 7511 bytes .../functions/fnc_getTreatmentOptions.sqf | 1 + .../functions/fnc_handleUI_DisplayOptions.sqf | 85 +++ .../fnc_handleUI_dropDownTriageCard.sqf | 28 + .../medical_menu/functions/fnc_onMenuOpen.sqf | 76 +++ .../medical_menu/functions/fnc_openMenu.sqf | 33 + .../functions/fnc_updateIcons.sqf | 27 + .../functions/fnc_updateUIInfo.sqf | 215 +++++++ .../functions/script_component.hpp | 1 + addons/medical_menu/script_component.hpp | 12 + addons/medical_menu/stringtable.xml | 361 +++++++++++ addons/medical_menu/ui/menu.hpp | 570 ++++++++++++++++++ 62 files changed, 1471 insertions(+) create mode 100644 addons/medical_menu/$PBOPREFIX$ create mode 100644 addons/medical_menu/CfgEventHandlers.hpp create mode 100644 addons/medical_menu/README.md create mode 100644 addons/medical_menu/XEH_postInit.sqf create mode 100644 addons/medical_menu/XEH_preInit.sqf create mode 100644 addons/medical_menu/config.cpp create mode 100644 addons/medical_menu/data/ACE_medical_module.paa create mode 100644 addons/medical_menu/data/background_img.paa create mode 100644 addons/medical_menu/data/body_arm_left.paa create mode 100644 addons/medical_menu/data/body_arm_right.paa create mode 100644 addons/medical_menu/data/body_arms.paa create mode 100644 addons/medical_menu/data/body_background.paa create mode 100644 addons/medical_menu/data/body_head.paa create mode 100644 addons/medical_menu/data/body_img-arms.paa create mode 100644 addons/medical_menu/data/body_img-head.paa create mode 100644 addons/medical_menu/data/body_img-legs.paa create mode 100644 addons/medical_menu/data/body_img-torso.paa create mode 100644 addons/medical_menu/data/body_leg_left.paa create mode 100644 addons/medical_menu/data/body_leg_right.paa create mode 100644 addons/medical_menu/data/body_legs.paa create mode 100644 addons/medical_menu/data/body_torso.paa create mode 100644 addons/medical_menu/data/border_arm_left.paa create mode 100644 addons/medical_menu/data/border_arm_right.paa create mode 100644 addons/medical_menu/data/border_head.paa create mode 100644 addons/medical_menu/data/border_leg_left.paa create mode 100644 addons/medical_menu/data/border_leg_right.paa create mode 100644 addons/medical_menu/data/border_torso.paa create mode 100644 addons/medical_menu/data/buttonDisabled_gradient.paa create mode 100644 addons/medical_menu/data/buttonNormal_gradient.paa create mode 100644 addons/medical_menu/data/buttonNormal_gradient2.paa create mode 100644 addons/medical_menu/data/buttonNormal_gradient3.paa create mode 100644 addons/medical_menu/data/buttonNormal_gradient_top.paa create mode 100644 addons/medical_menu/data/icons/advanced_treatment_small.paa create mode 100644 addons/medical_menu/data/icons/airway_management_small.paa create mode 100644 addons/medical_menu/data/icons/bandage_fracture_small.paa create mode 100644 addons/medical_menu/data/icons/examine_patient_small.paa create mode 100644 addons/medical_menu/data/icons/icon_advanced_treatment.paa create mode 100644 addons/medical_menu/data/icons/icon_airway_management.paa create mode 100644 addons/medical_menu/data/icons/icon_bandage_fracture.paa create mode 100644 addons/medical_menu/data/icons/icon_bleeding.paa create mode 100644 addons/medical_menu/data/icons/icon_carry.paa create mode 100644 addons/medical_menu/data/icons/icon_examine_patient.paa create mode 100644 addons/medical_menu/data/icons/icon_medication.paa create mode 100644 addons/medical_menu/data/icons/icon_toggle_self.paa create mode 100644 addons/medical_menu/data/icons/icon_tourniquet.paa create mode 100644 addons/medical_menu/data/icons/icon_tourniquet_small.paa create mode 100644 addons/medical_menu/data/icons/icon_triage_card.paa create mode 100644 addons/medical_menu/data/icons/medication_small.paa create mode 100644 addons/medical_menu/data/icons/toggle_self_small.paa create mode 100644 addons/medical_menu/data/icons/triage_card_small.paa create mode 100644 addons/medical_menu/data/ui_background.paa create mode 100644 addons/medical_menu/functions/fnc_getTreatmentOptions.sqf create mode 100644 addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf create mode 100644 addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf create mode 100644 addons/medical_menu/functions/fnc_onMenuOpen.sqf create mode 100644 addons/medical_menu/functions/fnc_openMenu.sqf create mode 100644 addons/medical_menu/functions/fnc_updateIcons.sqf create mode 100644 addons/medical_menu/functions/fnc_updateUIInfo.sqf create mode 100644 addons/medical_menu/functions/script_component.hpp create mode 100644 addons/medical_menu/script_component.hpp create mode 100644 addons/medical_menu/stringtable.xml create mode 100644 addons/medical_menu/ui/menu.hpp diff --git a/addons/medical_menu/$PBOPREFIX$ b/addons/medical_menu/$PBOPREFIX$ new file mode 100644 index 0000000000..6ca7434932 --- /dev/null +++ b/addons/medical_menu/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\medical_menu \ No newline at end of file diff --git a/addons/medical_menu/CfgEventHandlers.hpp b/addons/medical_menu/CfgEventHandlers.hpp new file mode 100644 index 0000000000..7392999c9a --- /dev/null +++ b/addons/medical_menu/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_postInit)); + }; +}; diff --git a/addons/medical_menu/README.md b/addons/medical_menu/README.md new file mode 100644 index 0000000000..0755083712 --- /dev/null +++ b/addons/medical_menu/README.md @@ -0,0 +1,10 @@ +ace_medical_menu +=============== + +Provides the CSE medical menu for the advanced medical system. + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [Glowbal](https://github.com/Glowbal) diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf new file mode 100644 index 0000000000..6eccf9d1dd --- /dev/null +++ b/addons/medical_menu/XEH_postInit.sqf @@ -0,0 +1,2 @@ +#include "script_component.hpp" + diff --git a/addons/medical_menu/XEH_preInit.sqf b/addons/medical_menu/XEH_preInit.sqf new file mode 100644 index 0000000000..3c07b4f88c --- /dev/null +++ b/addons/medical_menu/XEH_preInit.sqf @@ -0,0 +1,14 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(onMenuOpen); +PREP(openMenu); + +PREP(updateIcons); +PREP(updateUIInfo); +PREP(handleUI_DisplayOptions); +PREP(handleUI_dropDownTriageCard); +PREP(getTreatmentOptions); + +ADDON = true; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp new file mode 100644 index 0000000000..36920be4f2 --- /dev/null +++ b/addons/medical_menu/config.cpp @@ -0,0 +1,24 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_medical"}; + version = VERSION; + author[] = {$STR_ACE_Common_ACETeam, "Glowbal"}; + authorUrl = "http://ace3mod.com"; + }; +}; +class CfgAddons { + class PreloadAddons { + class ADDON { + list[] = {QUOTE(ADDON)}; + }; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "ui\define.hpp" +#include "ui\menu.hpp" diff --git a/addons/medical_menu/data/ACE_medical_module.paa b/addons/medical_menu/data/ACE_medical_module.paa new file mode 100644 index 0000000000000000000000000000000000000000..9cb6c4782deae77909fe9d0f1dc4fdd11dfec8ed GIT binary patch literal 5625 zcmeHLe{5Sv9lzK5u@+L|rhA$?t4i8hsuWhHw#-ri;mcT?L|NMx_TIJ*2}n0Uh{Z-i zsz4~SvsLq|O*o4fQ_wmKrmB;sK?>nbz#n!gR8fYMDFc+$RcN{_sZydkcndM{%kA^M zdrmSZOB%t-{@BUCK7M!KpLd`8-sz&gzRvn`{rz=5#@OuaY>UJX)*T`&&Hm&3#I#OS^n^F3#n;tL08aq$??t7ZluWRh^NG~}n8wE3Pntta0NYBxDQ!ece zcDG9ZP1Ca1@0+`xLCEO2R%Zi?)<1ce12^TSqvKACe6H(;9e5ey3ek5wdD`KTSWYU# z2Pp`SIES*8#ajs3Ca1strw#I3b{>z+k$gkfwBd;YsjsFFQdHX`@^3!BN!rV}X$4tB zXRxs|NKY->wkck0V~3pYHu4F)j>buQ>3bO*k8}lW|8aqnz49MI4S|K{;L;_N~ zrW?Z(A}>Ue%#rp4N4mESCfzrsesk^XsUqRD2AqfAlJ*&f-ZVOslEOXtY$Eo~r>ae9 zKlw|(tkeWK@A(h+b!DX@I2yMEGdS=05BJTLWXtjFwvP3U&psmMARbMlVk+zzOwZxZ zrtI0aLFtcWttzj1ayl}8Au98YbZdcv$fsgC8Bd7g<@qHYE42^X|MK|}C=~idud*L@ zY0Z-T5p+xm`aJ+ z8}~miQlhxPClyVvwGCnlQ8X+B;3MyULnv|$OPK8S{LiOFq54MizrPFXX9m*;jb_P# z9yp(N&l57SfTaH(ziS%tJDP{70$3J%{6`iksf*^j9IyzJJdgiK}>qpZAzlas9#jK15$3XB6_P58?{$$(# zcm7xQbo$6&Y>!5uFqSM9Q_@~4nje@9yXTW_9)Iyw`M)9&ihQ9|e;9^+cod=v3+sW6 z>p3l*t0#Td4b&SSHvh8;_Q`*~@hh2c)F-T&>=pTH`lLKpBof=QrTWXVz|d=J!GW>p zznzBzBn^B@^~RI{MU>>%_H?%mh23x|9^1?2hv&bXFIbOieXtIRVaYO>_J37Bfo|;b z{O;~?TCR zoJ9PUe&h6=#V`R_!y){@B0yR7#(#6oXRD76j z?;3`oh3GTNTBcq23t7GpuM7Qz7yOa^#rbnye-3%#+fR7@G1IOX@7k0toflAGm)r9( zURwleSPf%z!=PFXz9=6aq=yoJNg(D<%U$%uwsjUi8H&8M=P|F$@cH5=6K#Wu?_({} zrsem`{@thgRR0CmEy*jFUygU>otDr1J^4i%PqcRQvMcIS-Z2aFoW*b1$r>J)mijDB zWAW{u=8d^(>hCu=f9Q&Mr8w;!lbB}g%6D%YO1~hFiHm8wWKS6WebxEyPN~n(b@Pfl z)$eT^RQHzKx1A<(GKzS`Fu-{i9`mJ8$}EFnm<-@`oHX0xuq}k*yqpu=x5Yl_xt@P#}jQAlj>Rm zG;2P6702#SbiQn?>igW+^Lt{l?1Oq$hAg3Nb&Ugcbd5u;M*0WlQ+R>qxAdL);qT9= zV2j{U*;rlbuV`;8+b&!gtNB=foW6k7u&2oluX*fmnAzj?)p zj1MQ%(tk{syDwo|{I#MLRQ2=QM5+Id$=;~z91BQ)u(EX7T z%`(tz`>3cK^JtJ(Wc%Af_!r^5L&=H~P0~HYYV!Sb6{xWXi*lLEWq@Kz-Qo~ zo#YlaBepej_SELDyx1kf0DP4Cmsng0UI)=Pi3)-7EFsaLNm;{kGr!yz`}n@uG4RA_!CU9H)Rngu*8D?Hj1we4nHV z8gCUt^Sco)kL-pwe)FG-uSLAwhyg#Bc)S16d2AKi=XVoaPT3pS2Dxiz;v0Tid$-J{ zj)}%Hw`Qv9-t8c@CI?$)9{J^tZ)|)@n&H=UmZ{uo-BBkm#h8zqJ}@dq-Tp$&xfAzp NsDiuFe)55__W*bWJKg{Q literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/background_img.paa b/addons/medical_menu/data/background_img.paa new file mode 100644 index 0000000000000000000000000000000000000000..de59065e3b5952a3695ab9ef774fd6c315b70b92 GIT binary patch literal 55078 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/body_arm_left.paa b/addons/medical_menu/data/body_arm_left.paa new file mode 100644 index 0000000000000000000000000000000000000000..245cc4ba316cb50521e9c9141492aa8bd28f81af GIT binary patch literal 25755 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 F{|P=z3L5|b literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/body_arm_right.paa b/addons/medical_menu/data/body_arm_right.paa new file mode 100644 index 0000000000000000000000000000000000000000..2023d1e0b4c6c121d5fa73240ae378682aacf8bd GIT binary patch literal 25747 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%0De$9Wt;Jf}3*9-3v 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 roRyZQ^;(^agjyjzk8yKyqIp#`yd{Ke3=C literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/body_head.paa b/addons/medical_menu/data/body_head.paa new file mode 100644 index 0000000000000000000000000000000000000000..77ddd995bc771273482fa1a315756ca10268fa03 GIT binary patch literal 24927 zcmeHPZ%kX)6+idAXB%T#D8!Kq$^8?|4|mh3*01IrYKTFu+5gxrdiT` zVA1LTp{-b2X);z+i3VD_M4BpX5~Hp6VJ0C=n#R-*(XT4!eDxO!n|;k?PX#`X+Hiba%Atec{W`ZANEfGAyx}^1VL&h>a1JM_%$pnd(z_X z*rXFH%Fee6r`tVYR~y2QrxYwlU_S`-Du(*OrQ!VC!Yb1}s3`^$iQR4c{!iU_Ag6?= zj+K}fB=wDJMTDT`y{J0vX4+3)SBwpT%5`w`%YEf+JUmo6=W2$m6 zD%e0xf8@{oNkT#tcE|$$v8J?+Cykh1>>F@y&3!1t)Ro|(fk0Q5OI7P1R1LtsG5_V1+JC0!RkqVeF%}@Pcp$tcy&A z`j^u1%wqTR9_@liBB+znAaH#|i2Fj|v^r2-{?!F`;ZtZ;kd4u(WFXnZ)uYSa!i_!h z$&0v4HcTld16dm0cz6E0o10AkYpW4@utv0!_NEjG*5~Yx$re1LZBjUfrbAP;(IS$p zEnRn(*o?h>i(i5Dokr0mrjN7-p$~qR{>Ym;(OL-o(sKa@#zC&dH3ip@j!Q5x4vSA0 zP|aJG12_FeG?nrO1)-L_Yppn6ueKQuQJ;r|KZlVmaBS2caXl4`%TlyO5JIW|)Me4G zy?>4SQ-F+)ufD)=Nd^`6@e2zFKnGt;M}gyjODJ$09wi+5f>2M*ei6_e;Xl?LKc^W3 zS@pW%Osj?r{h(&t>jV{%Ff<}I%wMLpMB{|PxuJvi=5@QVW8#O2o>En@??ohd^$H=7 z0~&jU2I8Cl=D;gO)YLa(UMgqh*EGAqLb{V3@CFqq}8K z=hB(da=}hREg87GD>mASJ@nEtQQwfv3#GjO8qJ2y`)LZ-^PY=@FQ3Qef?W;d6iFbn z&W-nX>r1?@9V+M09cjy@bPYD=A|hD#9TQ3^^vcTQ;1k8O-wXH(XU}1ac2=k%=J`gS zcJ^)aa=DOtU7Hk1eA)fm=e>mv+c=~TQUnJ>q0Y8B)a40+D1sP2{C7`SmZ0U{h+3)z zUeHFu5lrg_KgFTeb!;@B^=c=)2aoL~7}`p1KBbrF(b7Nk zKYBf15xC6p*rxsiJ;hh!9dS(w z_seFI-JSoyxxw^H%J=DWxs1S8!KaoMQth$i*V%pvd2s)ql}%)J;r6BZRi@AF{UBaj z4G)QYlDwKdMTZYDPp_3|IpbVV-fPgi7)=Yx1|H9VS0HtC=x9<#TNsB7--ctr-HX0A2dR}VmZ z%|l&=>2J03^8IdYf93Y$_R|sI@n?J7e{w!^K65_vc*f&7kLN5G@OZ%E0gnef9`JZj zMS$~x^P%buJU?(ga6WK8R1x5O;C!fh1J4hf51bF24^;#>A2=VX-oWz%=L6>h=R*|% z&IitisyFcb!1=)W!1+)`fb)U#q3R7hKX5*9K5#x%5#W5_e5iWE_Q?-Xy$1km@AKsy z3)PpqXE0g`4W-AhADPE)MH2f<+sW!Zk?A2=U)JmB$w z$Ac;Y|0_PwF3~`{OtSHLw_(t`Ytc@XOrN&R&bZG{?_%=9uJ^F|b+o(Fue(oHx_Q)- zi^KVstG87TyB^msBk*O}kK_ISg}1E#6o{BrD%Cpb%qDuWr=MkRQP-7q=0DiJO|ojB mM*msVTBjeo8cph8V4C)l`rN&NBpOjEo+hZ*TTp#w+P?sl;L-H} literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/body_img-arms.paa b/addons/medical_menu/data/body_img-arms.paa new file mode 100644 index 0000000000000000000000000000000000000000..f469a59359a5b7968ce55e97ba6a3793fe212e7a GIT binary patch literal 29430 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/body_img-head.paa b/addons/medical_menu/data/body_img-head.paa new file mode 100644 index 0000000000000000000000000000000000000000..2f7d15e1cafca74e1437d2c2e03a736edc3dc025 GIT binary patch literal 24746 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 E03#*DCIA2c literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/body_img-torso.paa b/addons/medical_menu/data/body_img-torso.paa new file mode 100644 index 0000000000000000000000000000000000000000..cc5ecb9d609161b7515762b13718f41931dffdf7 GIT binary patch literal 25596 zcmeGl3vd)gwtKRZ9|^mQEQ&Eq=Yt7^h#p16Bgsxe5(p={!5s_*lCaCi4@t02qE+s? zfxDCP0}FVZSS04W@=EK}LOzbaO|sDwqTYd3CM-;F(HH^kw}7$SC`CSI0az%)RNmP7>*$^{H}_M zJ7qX;g7n8^ggiqL`rRD}Jvk4dwJwAk`VFhq>J#}PkeqPXJa&x1p~_|*RO{T;y;{o`VhR#7BGm`&yIN_kcN8Y+9*J0sh`<<_ zvcq?p29XDgQ%|Wgy3JqPAHtahr0ku{KxTG8#!8jq$Zv~t8V!BcB8|xNNTzaIN}F2u z@@TC%b8De(P1m<4Cj`=o3>6bENz5xo<^LGxA*QrX)s{{=xE|Yp_$M=b*q9tkGHrIiyLZH&6P* z`&+%u6gw>EnPieVgg#t*L**J%54AC(@sbz)-kh*>UJj6D)n3)TQC*zo?Xk%yj)u|A z2$PS(zQ}W!Xjqgg{o#Epy`cltf^;}2*NRI~<(jg}4KL;ZvFAhwiYNQDR#VIVH`7Dg zQd?=6Gp6kAVJUttwc@7iW|~;8DDR#dY^C4%DcP$@aidmlo)OyGMq`<~H0cl;5$q7r z(}TVAoL@Wexuv@lWqz50v7HVk05$Pw+Lr7))@Aol<-g)M1ZtzRT-g=wn}^GYbOKY! z?Y`63+QYlv!18qoL1d8rm3&A{SXEJfwxFS}jbcmp6f!c@F|1R1FIHKA+7U7xZ5o=} zB;;B?kx_no$NDX~f!=CrWZ53*Eyn1>VKSPAEWM?q{)ybM6!X!p04+vHwEV5Wl~v$+ zm+S!fpwlDQV92Wr4;>3ikVAOt?dze_I{(5erS1NgX(@aN3-8U zwV48Tuu6n|=#drQYbz`*vX<1EY;v%bhOx!6yY$Z^_r$7**oQ944Ex+U5&IiqYiW~j zwWYJ9Y4ACmJ1#60ou{LNBtUO>II-NOC?kSh4QJKG%}3&pIJ|1)ds9vf`j1)SOVUl2 z$D5>_V&T{Qi*SF6hE3`F>DjK|*L94PEzYqWaaB&msPL%A0ijj434bIngv}3u609`9QW>JcbCYHr3 zV=~UDb#vl(wR+bl2}2VztoMpJr_j;F0z0zz`5s(OA-WfJszo8QW^cr^YEzN?eCmqq z_S9JmSambo&GApCoW*JCeUqCTOt#Usn}ZdtV*^8rJ!T@=(Tv06moCoPqYIC5>L4HL%mKk(@U3rpJ?LLIjU{q=s%v4Ym1d zS@tP`4q`4uxD(yB_D0XrB;l`$lH5rB6Tuc=6io}2C!V4HvK%{7l&A7x9BT8@)}c8t z-kq%oyI-gch4G?XPfccfjZ^2>8K_~kGPvwMb1_Y16f!?=V$Y8Q(d!=2M#adDnMSOJ=!&iw0jz+!8@bqp2cQD;B zAdt9zF28=5tQinUmqOl?PJ%uMTrf`!`ksif^>{@GAOMxqvEBy!=*K8;(&_QqV&lFH z*OOPlEWcUXt(Tt*bJ7M7II?UUk4oT5l}GJwxA#SM_UZb^05OflboWE}iVb#cuTR^- z^1(t4nd|$?*7t?_DSBXMUqpXT1qwl@k!N-G!f(RUAGGv#oRQ!hgpQeBLF28rbp?^?6*FRG>0D<&N(Es)43hIv(xaJuC zKaut_>MiGK|DSm9FLoc17;h8Y&wBT*Ob@Yqp#Hh~U6uh-EDyWJ@n42KM77!t&;PnU z(PxUXqYJst<1itR^!CZx^Z4D0!gR}^aymk=p6NVJ;2PI|%zL=~b9>$JRb6R$m3yD0z4k_c*x@+kB2-S@_5K3Kp^pWz~ce41qK8X zw+C(y%oZ3BNZcN{Juq8fKp=5@;P$|5fdPSZG4>#{JphaiaehKIP*ev3zZXMBwDiTZ z!OKS_K;XdT&%?r%?hpCKhCNJEu&Tl~;coWXMN81YeRtUO}(omb(qGs}d*UG&>Nonyu?<1>1Uo{8o9UPt<}%d2tO-D(wf zG=i1My8i#qvh)|aV9TW~sroV{CqPs>S5g1Cs>>W{O4Rj^v8Y_P08F8BesozDgoK69 zZ%&OZ!*as9tE-NGgCPP(<^-I-s06q?xIJ)x;PHUR!=E=E5;lRrHkpqCfdhBLA9lkb zlB4Ej zyi{QLk9oRv8e7!r=cJ3~GAkS$ZTRXt+96f2S_>n3)SH4JQQ(Nz4x){gea z4O&GanFNj+cP$y-tdrHtYOsq<15{300$tPA*x3(zkq5nVC6@w--51)7SeaW`P8C2dx(&&V-WNM=iIi`%23W{mHJ3SaQH-{&WRml;A32< zYS$I18wMAfUP`(d;`mj?)O2-Dbo)UdegE1#__1nFE8F}a4#Kw=-J?81oWRZmA{T46 zk8-LzkAk!%9Cs3qyA0=4S`o`g>hSkXjqc@ZB*dv((~1wrf++8bCIbxb>6ev(#^CUn z1xc$VsUvMe-pqKv8boAW;qM56+X6!k;j|(#jkKFa+T7P1gH{_|#*#x&YKN$Wu7PCX$M6NyQq~Z)FtM)tts)L4?VBI%16-vG1$jq9jTn zY}NR!4b#d-VBl057X2GD?-ysFrYo zS%s6g;@E9u=>4Wa)Rf~HWh0xQSEth}|O1Q!E8omGS#y6E0>gF%mh#@k(~ zkt;1Izd>m)NOG)4?Y2P_tnTzZQFL5Bxbi^-Lq862t_Ju8I}g`T>!c`@sS#w5jYKZK z5V=spR`X0+2?St^d^8-c`taWD?IIO>)62mikh+cGusXE7+#F4ox-5q>isbzF;VSuX zI4VY9H0d6EzXYBS2EbQ?{kk*5LspQ5_=K>@dzq{harUL>an?;Q=k}}qtir2aRA77C zQtQf(9Bh~usir{pRQatbS?$+{rSkqCA6&WYxWf=ekq?n+`>nsWN8@2Z9-wye08DCv z$keNmnO~p*>>%hyhScuhDny)1m%Qmq4Do1QH6)4bS!_DayVTCCQWbIjCNw>Jm!XVj zm7T=7Q|pU0tKE7|h$fqF3*AL1N~(e!Uu;4KbY+I?YqcDA^VZBq4373Hm7y1VC-SD4 z<66jo>dz@e)atI^`?QFYQ8qX;^P(Agb&m6s!A1GGp7^HP)C5$@P`J);aq0OS*BiO; zs(a#VJ2+W>E*uvcfnNnH8|TH0!VTxp4Y`*?b!3kk$b`OLfBoKSmJ{F`wn(x#RyfX+ z%Cb>Tezs?!+b(^WGr_=?w3Cfk|L8XVm#`PQu?-ZHo93At z#qMY#Eq2o@t3A+W?~QA<5aj}Ulg&kVUTOl7guSTNUcV*{!U5iOoG<#^zse}k5Y!Iv za(MRw-#=Z;!9ivkXCRCUDpiFwuCrsrr`j{h(1k3uA!y_Ff>^ZhcskUIib-H{dUNE0 zeS0Fjt6*+u`MmXVU}cF7`8q6Mc#s5NN9;=K#CK>I;5=Z_WL`u60t3mW0ml5-wGi4> zSw%xYJL2(c{4PEWCe;$qY}GeHyvj&Cm!5CMMb;P$qYUMS+AST@w84qrh(lChr4+_N@j=I7k$d2Ta_ z+)%B#`61w2(Caom@j%E#w^5(aE_yP#B~~EP`hxZ>Np?9g=M+T;0)dv_?QiR zCVWYB>@khhr%rlaj+WO7hfOlqJ%;)o_XMEfqM+PxO2oMwGIw)G1-I$OD<_#`&grW> z3>@HJM*!bMB0DO*V=8Y8CdyYR>V}5IN#uLg_0{t&`X$!sOj=<-zgUL$mpC*4B!C+e zzxvMu6{rE0LJlcX`u{m?lgb8BBRW29);S*2!Qb|H$3WsLG4}kpkT$-1)#jf4!<>6e z5r`H20q+?HOaRj$R4FV)d{4JY8%Rg2^Uz{bN7}Y62(HfOC+G~{%PJLaXULa2+35D$ z1c=NWaI2ni8#N#s%_zzu7{)MGQRMIHHl8QPlP=6;%EoLV6dz#XSjcM-D0yl6u|L+N zy0f;8qNDm<{`eAfps#~`S zkCV3?ccs9B�PUh6ItgVs&hSbSINTt9^a`ZmtWSy#c`G=T~6}UwK zwd8lPEtqJk8+04DHO{Z*r^?v2IIsPiuS2y27i17}U|sm^e)wR{r&`d_Z6lGXUYdQ< zr6FY=f^i|GTC%<#a9)pBx^*9h(8$LvdX%D^*KJk2JZ)Dkeobu0gzDAEn~%raI1vW& zA#6@RCkeYh3kBsE9V;;uU}{+y-p5yCX7W#7{c8eg0Tsk9|AMfcL}q_>iz2+IpKJ5C zIYU!bQ`{5!i(GqL@YDP0oXt7K%hhp}_mfG-C-mO;(mB-@08`Z~YWwMtuFwKTL0N!( z6!w1Bwu3m^M!Q4tjbxfSp1;?86x-qq#yk6Ppr`-(gwpn8unn= zgJBOP4jA@e*h5JhjQC*KgJBPbJ(M_L*n?pYC2cU`gJBPbJs9>-;(%cfhCP(D!H5rr zJs9@zRj>#A+Y)zBRyP^?_-N>(1^2tW(lJt$H&0q-w8@#9hWyv3{44UCn~$_H`4X;n zFZDaDy$Sd5(#;dB&3uy4ULX2E9;4g;-fP!i{q_G^{yy>#j!)h);{SS;zX{J0(eqY} zKH`KnJa1L>Z|3}IFGK!}KWpu0y|oEfI624Y?bwq)ySKvH>y2K6o&pD$d_(v?py|;4 zqCeQaXDMG0g~1JeeV$+IjUQcj+R}CEf%idppxC7epBnOCpZWh<{k0DE#ddbYO3wqm zzyrt&O#c1w%%VHI=wj`){f%~k1M7u9g7b~&3Kl$AFZ3AtxxV!Ci^?-hYXHzv1BJ^_ z^G74h8S*ytopQjicf;P9FZe3y1DD@+n=C$tvo)?)eYIgp(ks8a-^}Ra$!m@~kI>(a zjbu;0?kJ<5z$ov=!d|Ss-sMk({A8tQPmE z$RA5E=L^*_dOHS}2ra0`+Us5aE9h(2)3HuQZ|fkIyZxZzk)gjCi$7z5=i)Y`+GbiF z_245zKbF|W;@5vs&*Wb_^nv4!dFD22uXp`lOP>`+Y2o(&xBN%NLW)=eon4PA+aGrN zExq`v^5 z-d4->RUpT#pqP!a8-FUYYV%KbeDP`Le>;A~Q_~0UzDEAfn{vxN)8x(%{`gD%awvbG jG-{Cz*8k?Aw6c}f=r1KLB6?KhXAO4qo6om@o_qfZv{K#Y literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/body_leg_right.paa b/addons/medical_menu/data/body_leg_right.paa new file mode 100644 index 0000000000000000000000000000000000000000..02ce66ba7065ddc175b1e5f52813fa01fbbb5a64 GIT binary patch literal 26293 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 Zhh?#7h_px5U#%8KyY;Sh-b}jOzX9(t>QDdx literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/border_arm_left.paa b/addons/medical_menu/data/border_arm_left.paa new file mode 100644 index 0000000000000000000000000000000000000000..eae1d751cfe41437619b815fde20dfd5a5bca3d3 GIT binary patch literal 26291 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 Qg5JZl{O}AY@7wl&05}peegFUf literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/border_arm_right.paa b/addons/medical_menu/data/border_arm_right.paa new file mode 100644 index 0000000000000000000000000000000000000000..0aea4ce20e4d83762f28b4518bfa1f275de90568 GIT binary patch literal 26239 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 NQea1hq2aS?{|A>}2VDRF literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/border_head.paa b/addons/medical_menu/data/border_head.paa new file mode 100644 index 0000000000000000000000000000000000000000..3b2e7aaf10ebd8a139a1841d6e3aad3edddc54a9 GIT binary patch literal 25181 zcmeHQYfMvV8h*dib10QdOGU(i(vP-yS_JXh(Rd0)-C|u3b~KKe73l>P(K;?Fy7WR} z9J9EiQ}7mVtQ%)yHt`2CGiNfHir~)fh?yVmWHXBrlO1DrvlsuEy=0S??sve`n*Fh> z$z*oG?<9r3e3$cm@B2K@`<|1W1DB|&sou1vW^*+Q0R8>_Flle8u9NHpIV8KLy4E4t zhTJQylr#%C?Uga}>6rFTY|{ybZ#c3iQNuMa@@2 z=9Ww~8W%5($mkL6`vI+=!;MLyJ z0B~h~r+b;WecTeoXpoP1<+++{nBN*l1>)`svZ7A-Rky9sbglDn>q>KBrpnY*kWzv$)#JD1yWU3brNEf=o~bpAm7sS3Ymj#e=(-F)p6c|BFp zs!D;7B)GX{frJY`)EoGQB?9JyNSib4M*e?zj+g@o9nH4+JLLmDrDGX2m%<5cS0j%kAcn<8plODtsHWN&ne?@%Vh_`Vn&+UCqi2XcUa=7m&5UCoj7O zhOycPDovU_gz}wRyroq|o0?q12`@s2}j87pNazCO@nZAcus#3y?|iUn{0-MEOy!=p!l2NHp$%RQ!zAp$Vi2G%2(f zPmxNeIK+|sPG&nlq@Gn9I^-Br|b4pys4e)&F~}i~`#XD_>dRXp@?E z2dc2T67;UnKi#BSV>SC6@7(Fl!s)Rhg=Sy&o;jj<;>{wrG5+RcVbl>-8*JNHODx2u zgeC0ln(wq*`bduHfCo?Y}6h~8Cl zJT=QQwvyC8F54Bb_|y?n0?4-7F51SgH;&0R#lw^brmH`4Dy^;i9eaNF-0NRy8fMbF zW<7WRrvRb-zngmDfS&$B=b1-xe3nY}etmb6@5ZT{pRC+I$9AG|?0R`pA1ME)H~-83 zBfi)cc{~q!7rD&Vq zovH`4b;s()p6O5HKfU8m<45Bsc|g{8iU*1ZiU-OEst4cA>ouy+RG+CnQ+=lTO!ZmL z1ym2H9#B1?dO-CcH(C?6;vQfQ$0f%1X!f$|~c0m=u;hZGuUexQ7ye3*`WuuJa%kYDKY z?a>$&N{?Opj52MQBFWahG>_fRhfj)1s@qEB{g=SmlV(-l7qTrwX{Op4rW3x=cHdoj ze+E!#E2_0CWqYRYUsaa9^V!GJ%0c&#yn`?KSn5pQKi%Jy2VNGu(|FT(OCF$jr)9FN z1r!gI4^$7R9#B0ndO|Fqf0CQZX7p4XO60Ba-dY p+)jsd>9!~f&Qt6&H)U8@-~A#tX;?A?@h1aF`u_?^k(zSOzX7Y8QBME> literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/border_leg_left.paa b/addons/medical_menu/data/border_leg_left.paa new file mode 100644 index 0000000000000000000000000000000000000000..7ff3b170fac5bcd37d0995859ac6a91fd26ba611 GIT binary patch literal 26970 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/border_torso.paa b/addons/medical_menu/data/border_torso.paa new file mode 100644 index 0000000000000000000000000000000000000000..2b700769390938c197fe6231be8bccdea77512df GIT binary patch literal 26036 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/buttonNormal_gradient.paa b/addons/medical_menu/data/buttonNormal_gradient.paa new file mode 100644 index 0000000000000000000000000000000000000000..2210f987411ee2a407ba63733091384a6fb00e35 GIT binary patch literal 1989 zcmdT_&ubGw6n^i`>}H#8eh^j&A%;x|A%qxmh@liI-2~c*5iQ10LMW01ky1oTD5XdV zW(tceWsx8rJv350dF)9HfMs1s%Rgz@S6EqX&-6k##14 zoqg<%uDQg!h@x`jT$ZvVP^8AfZX~)Q<)jrU`sF??U2l4Fcy+05DM}( z&Ok(-$1)Y5%6J9aPzb{(o~0I6I6Q#_JY$7J%7?~5p3Z4N9-Au?1Uv~(bAlQvL`y-= z0$k-GjAI%)ZmKdbOOTE#3!t^p2tYAI3z(6UXqD2miYgR!%s{aNum*mR(ZT?}hAgzX z9>(X8r8+FJ#v-l*HdDAjRmjsizCsge2b&?j;y~mm!$NpYlSIB_#BPq(b$70-QEPYZ zqfMZqEdso2mm@4sb}K>&Y^kWEX$s=dN;!L8CND~&1fmAhSaMR@f)Zg8?_pPAZ4i?n ziA63R;tE6{NEIpf7++$yPAz*16AWrtpc<{AO&ZCp0-)12EWswz@CCeQkHEi)%b2DP zi3ze%_Ct*P{GbAd-(x!dpTL_V9g5Po2U~W(*SAIQ(uM*XJ0(s_hs zm{V41B~CIAvph?V=RN;at|wLdKDg#=kusim_6LV*6<1V@RG-Xyi+pa$Io8~AOqNV7 zHJ(Fb5(;q)Qwk#ijEaJJTCCFEkDj9Dd8MW`44=%TGn!_<_Xww4f4SvO ZgP=MCJpJCmus=_!xITRSF&N#$KLJ6wth)dJ literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/buttonNormal_gradient2.paa b/addons/medical_menu/data/buttonNormal_gradient2.paa new file mode 100644 index 0000000000000000000000000000000000000000..cabe6c7feda6907aca65b3aad4ee27ce6c91f491 GIT binary patch literal 2035 zcmd5-L1^1%6n^jhzkVyR9C@A=jOV$w2__g}JTRflN{Qr=1lBRud07adnAnUG(rz>% zgfdE&sNfAzL@;6Ov_dk%PCM=}#&#P$-uHj+ zz3+eif9a#wW@e05b7s!q0AQNt(Xl^oyyy8x?&bL(PEWr-<@%qwzb)b3{`a*DMMw%@ zZ~aATI3P5AE9*VP5N!HxY(4@gOus;C1Q-zFF{XUnzZbQ{msUYmIC3teI$1+l9m)?Q z(Iu%NtxLa_ZqhBB7i(mZ1(KCx#U6ZuGG0mSyva&dG}qwLzN`USJm@6ElXX6W)POU% ziXZKBUd-4LLuE~+5kph8RPQIjWyvyn#v&MR_sSZSdqxH;{2hgDFmsXGl8xn@fQx8~ z1Du9}n8zz*f;`7sxCUk(9`ZVMvEAZ3P=T-MoBL+(`Pzb&#Q=ptu%>_$SN>u~*qQS> z7|j!_lJ+9?3t4Ou6qD)H$7Zi%(oz*|8G*A5S9lJ`P={ffW9<=Ep&}|QgZ5GeO3fNw z!r! z3hHEChB4??-SaPK1TC5cD-TmR>o&CugnQ$79k*q+2G%54w9Ku~aUBYfrIz#+=Dx@6 zMd~`2vBDM*Oj@AZ=#WN&wV+6F04s2hY4{!d#JfcA!B|FFYPSLq)(Lby#8xkIxnL%p>cs?>YPZ{ZAdM ze^-XPea`OhD=deU7ze8edr;&BR$~p)A1?aDy-JhVWoOrVF?C4$hymS%NKOSCv5X`g#qmSMv;8bQ(4{*>Mc=!4LLaG}> zY5*wA=xge*C=01qO*YWjngnwU^Hg<@=yJ(K_oWpbZnYrPhuv%;z?03Ert+k%u_Ybt z5hiq_V~6n@zIpY*>fxxbBb@6b?A60CRo$Q2l`O}zPOZ{o#Q;}GICfL}*biOLDv-K* Y`1H|}lIQ#qnM*x=^yiI#kNmIpe=FM30RR91 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/buttonNormal_gradient3.paa b/addons/medical_menu/data/buttonNormal_gradient3.paa new file mode 100644 index 0000000000000000000000000000000000000000..7da9fbcf8a7bea39e3108f236c4322101bac95a2 GIT binary patch literal 2044 zcmd5--)kF35dLO%Z*`VWKM>atgb-)d2qA=!gD}PoMkf_J(3Fx^5ymwk$fAT0LI}nL zQ-Z12pq3+CgIv-+g%XtzD3p>wDQ#)rO5d6XKjfci9|C=8QCD$Qx#U4$3dtUKyK}qq z%{Q|%yXRk7S@D~Vm6k67%+1XWp2@5Jn?reE+E9LHdHJoHk*}HeGi5%uNV^DcPDz}r!xe1Q@Zo-Xqzf;n-wBPmD;lI|+ zxyW_>6y@dXj<_M}>wM7)D3?}Ppt`zG%gCx#I?Hv~EzzV+)H8S@E8HP8jimt46~oBsRknz%f~hrxXnchY?2}+9hs(CLJ3iBiMYtKM~+C*bkI(rQRWL&Rt5Sv zDDe$)(D0~?26nKGBoqadq90H}ZBu6GE-Ji^E24dw_$D@rbb(u#=bQ8u$u50E8)>;^ zAgWvzNYl}*dWrMu?uh5pbGt5gzJ7WxWH=P+l-&I^%!+vqJ6Xnj0tJj0aJl4(XK5vp`(k?m!*E6wvfe1zSOinq6f6Q&Yf_HkQZxI=QZA@ zkX=>+O?Z4CS8z+X^aXwv-Uqlv*Nwp))(adGR5Hg&IpX>f$8&Px?u@-Kr=r~-g!jUJ zuOI4ndwVwadQ$WqQ7{P<6br4i66;Q!g$ZEL6oRNo)V{qk`E+yF`oB;{8*+MB6m@ z^^d_Drku_b#Fvkb(tdU^#A$Rf{5YPA(~O=RN^hhPwahUXRsEc@y2a@#`HQIkK1&&M z3Zx8Dy*nAJHo`J}tl=ge$mzfp?GgoXYlDI#vnDi?;hZ6i4o7N}6)ujJa;)Eb&O)5T UZ{PpBV#FX$-~Rd6;PCqX8=e`$(*OVf literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/buttonNormal_gradient_top.paa b/addons/medical_menu/data/buttonNormal_gradient_top.paa new file mode 100644 index 0000000000000000000000000000000000000000..904e1a62f7a1cf7e03644d5a965fbe3b177b23b4 GIT binary patch literal 1995 zcmd5--Afxm5TBXdyPWaz!Epr%A)G;u5JK=lg4iOtOHrYg);0}dMZ|<6B2pxXNRiO2 zkd{NPBBgzkVu}cbQV{x3O8Zv&C$#@W9|WIDdeMdi`Vh!Nb(g)}*}3`62Q#w|u1!u_ z`P^i|;s9WpX5*ZmwQe`*hBun@{fUV?S&x3~tu@*E^gLdI0cR4hd*3P4p3pvCoCcbk z;)BWs`47K`i)>qmUov#xGZ9l%j-1QVFo`})_C@_jbVC}EHl(kEYqXBDa+w4P*bxzC z)Zh^+IPC)_2HQ{+>cNyt64?twTn|yu(nETn_DSZ7B&?b>57zZsT!(ng($M5LRkq3O zd0Lblj7MY`MO!|?35dzFI88Pv1(wG$*irbwhpB{+=X+qnD`x+7>yo_dLG2s4FGrvS z%s_FJmMDpif}Ckwg9>ax z7-V!%!_P1b*)osf0SwbTtg@vQq-`iBae)eup>2GRyoMjK7~vZp#0aGsM6fffu5ex* zwCp^csp?eva601>sOSofS6{m^mLazkBNIzu6;m`0Lr_Y3RWFl2h++!F9At6I3#nTI z!UQg3Rbgci{xJ|MTs*-Ih`|6Y=cVU(jMaH6x#I{Xn?sxCXbWA^NoJ4-gN|SocA1WE z;Ttoa!Y;0R3M(W=$wiREaSHR6tyegn-4nOc_QLCmO1z rltL#c718P7dJj~0IJF5Q+?H5(fyLIZ6sYfa*P!_Ne*SJ;yvBb36MwL| literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/advanced_treatment_small.paa b/addons/medical_menu/data/icons/advanced_treatment_small.paa new file mode 100644 index 0000000000000000000000000000000000000000..8becb9d2df716fee0c20c2924aee66c6697a74da GIT binary patch literal 5625 zcmd^@3rtg27=RCmA|p_r^U+}u8%?UrY;5R)Tfs%36Ri>1oMsMWiOZCdZAlk(Sb=Sg zPN}%m#W>R?OYCqG9*&a9Ofe`pro|0GUPB!yb0}?*VPBWCb8h?JmR79IbSB%)ZMk3n z|NO6W&VTP^JWfeTTK8(o>q#L9A)C$i1}pq!GFmP|Q_d?=?UCrcB_^=|S} zPC}??8ba#n2z8N9U`HZKM2J{$9n>LQ)4%^$=4HgcH)7Gy^x1k~sU+C59#5L3#mGcL z6GME`n%zSzkEKDA5II5L+yA3xbX{Sd zsyA`|qW-AQ?UU!;9m_w@s%1KOj%JYi%YUg|o)ubuea^$`|J(Tsu4R)=`L7sYeT9O3 zoIyQ|y?&bPRP(L?^dlRq;_T%zBk=6DitRg<@3#Zvp$FUZsgL)56`|m0a)P}_o&U@_ zF+=tv7w^-@4Y?!TWAEP;=de|PnFfew$*uU@zIr1A%>P}(bf`$nA_t9i*;#87w*7;C z6kz^RoLV4E-OKf((sB|=rn{e(pQM4gd0K@sieI_4AL5;Y<=Jtj;Dx|4+TX%vv;n6a zC-vIn?$<9?8jRS|M8#~rNjU7Q^I=Ch|5>#oMu%rTZ?iMV&FAbgGEf@K_51It3G?0Y zi8AQoFBXtrT`R-60>rT(5Kn`kGl=OJ_ztf95{wXC&roD{e<{KFiulEvusj;Q9}=|9Quc(VF08yC-n# zV|Aawxp_&1&bZj{IJwVwR?8hfud#}MMETL1kpJX8WqGrzXC(mZZ59o^rpJBl2bjNf zJ9+rAsKj7zMis`|Pu=^q@HST6&}DUk9B-gr$L{z3^7AL3d{Jxm?1xb;<=H*MvU{9= zuX_2|3o!o$-|zUbuI4nCpL4d{^Wn{*f889lKYjfBi_edI&Mm#8Nz8EfSN=7*%+akH z^ZC%ne}MU~y>V)P=hA&#fAP-Ohks5a`#XSm{N(EsKQsDy2ir&YOCNnN`=Z6P|2ta> z#7_Uh`hnkog_mqSI9bLA7H!orwV0O*9E){1-;!4%U{Q&cT=F<3{e~O|gdl&?9CMc3 zEXpDtdOdsBo&<6nR*e(;2_H52g)iN#c@0ip~WUAZvSxJ!BHY_;IC#CC_IA zkMAe^Nfh@Qr!A4odg5i=V}ieB?JZBUV8x%xsWo6fwu4N&!XW_mp2kG=-aBnY``x!` zZDM3EIYHms{)HAQQMl!Uti@>1f2powWoFy8UxB+En7qhpD6;ii+*NL72fJ9^o1fRF z%;WrPOG)zavU#BY27AL(#RAX7`D^E${QNNRbDh|(z>|Lh7B#Hich&xj0yx3O(8p#m z@Ol}&5^&p8-9nrzqd5P^wDQb8xs03tR7t9H^2sQg>7v_D4Tp=FD_}3?YGKHT>&{N) z#Y0xJ2D5Li&U{-(`ad4XKL`4#vh5glXehFBwZSX@?$P-R=^I_{IIaz~4l5iA?C~0~ z|G{lArZ)Ypw2JKs;13Us)<UK}WSet$>+FKha@r#^xiao*w3K0q`)%mUM!m_CcjB<4mxS9m{fTHI{kN#FrA>$J z`V-)WL3i{w>R&4XMwW#?%wN7Z2UuX(axbr`Is!O^bW~E$^K&o9yjyr^5By9sM(A(N CjwH{%b|bT0dXe! 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/examine_patient_small.paa b/addons/medical_menu/data/icons/examine_patient_small.paa new file mode 100644 index 0000000000000000000000000000000000000000..2e9fc9831d13377c675b764be96ab49b2709bdf2 GIT binary patch literal 5625 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 RnlSw`VT-%IBaU0te*(ghJ6!+( literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/icon_advanced_treatment.paa b/addons/medical_menu/data/icons/icon_advanced_treatment.paa new file mode 100644 index 0000000000000000000000000000000000000000..d6bf6effd95122b11baf8606f4e914778b6929ab GIT binary patch literal 25638 zcmeG^30PCd)^oG4$Z`W{!3CKhHJ~8W+63h$0kJG9Lh0)&Rz)kdN}^r-eKioU3-z_{ zf!0^G)ra=k#cJ!G_GuufuS#8@?kLt31#w}M{oc$!H}T#;`Yff|*0$V_B_}iI%$ak} zoH;Xd=892lY}8+(W1ox?0RR|=Nw>gHM{(M$y1j3%yva$MnqCgj&E?iKv$ z{qu+n2~q*)52A^uHT})R_~vM$mAnESX+k`$J)b$MuQlP1B#2)U5Wg@0R??(caAlsh z;>nu~rXEyCPW*->)JP{Y`U+gq$l&rIiiCc~Uc{h6dFl`~(f4~qHa)2s1RZq(u`}8- zsXW{Fl!eUPmr82ry;_=OvXFeInk4)XEi;knAa2sNB`{9sOAsJFZ-|i)_r2JfOP|m- z$c+L~{McNkEGGkARfWwhb{!YTO1Kw8wyYqajP?;#<@lCwN-u|Ll#9r{$}nxBVX90e zc=iXgxofy{!l$V{r*o+lb)W(wROiGZadStf8i5=|V?R=`-5z^zJjl$flq z^@ce*7x5$KTWaVlTDH$Cun2~isF^*v8K>p6gV=9}ToYlKwLr!I`c)u-;gmqE|3pt8 zHPL(E+q!YW;UzW9UMS7vzu1pZ%%3TLxdE>xiut0XDUJL)YQHa71x-dLMISCunE=a zQG-nB>k2i>bmCtgOGJo>X}lsp#U@PSZ?vD-?ILP))H9{fTjl6=-hC%?0>)F3qJg#B ze9Jy%;0sik*bNz`E|8}xWQBqYL@+JDm{~L_@;R)g%RbG3KDyV$u8lF;h9=EW7;6*= zicjllzo3HUj;`kf>E&sv{`#S_|p`hus~I90x)+4?4^f5o zJ})i&eD7|Vsn?88_Chz~=a}vs%-loQP=g6I%L>#`MZYULe?H4IZjGZn6Oig)RniA2 z$r+BKk|0R|;)(jw+95`FLUIJu4xvl}&j#?F91knv;eAh=p{tI>B=gMVfLnu<=|u`< zV)CGjp%Hit`0k_^>ruNJI%YcdzT~e;$~D6(T5M%ND69?D?amLUc8J5y8)inxHP;xT zQe0m*geHXY=}Aom#sRY!vOU$S*s{9N~3xG*PUDGwJ>!32;~q z+ygOh4kIe0=GR(G3OYjQeJY2~IGNW4fZBxrR)EZ8Y6G^U^=%ac@p-dVs)t^}# zzfwkfi9f!A@)4bjFyR#p`Ik4-8f3;40{o4DqcVklPX((|)>Va2WpIL7AT6KtPuwq0 zvGXPQi-QcB2I!EEtLSgSJ zn4n5ARs|b9MK14bR+evaQ()ox9GIt}&%$2xm&7+fkTs+rGVL*!t>Kv-U`MiF87ZkN z^2W4iQV@OV(~PpX7oc~6a44KWrHBVNqvlwB?a4shj^GTvI7Ii3$i1$3Bi&vKef0k0 zPi-U6R}zmb7s1H0^DwXFtnhNpq}=3B9SqdHOSt%Nc9VFG4swi57QS^zfm|HV$M`E# zuEAJZK&ToJJ&L|5l58|gooJXTGpP@^w@5~S7%`}j)e6X3Cq-u7etEERjCrX9f;NUc zgU3d}iz%L?dnFE+Wq^r#B3=N7>cB`Pm~@471>^V-%Gl4BVlwJ-s=wKqZ31 z%tGRZN8=Oc;Sg%HsCSm&JaEl|PLx1UNt;j`3^L1NE=jjUs~MT`0iifJ8&8Rn#}?Q#_rj})#CTZ_LnuL=~%}y%}x_IwBPq`mION26kg~8G7*zQEG zlf;|CRpS+Pk4-KKG$r`nLLy0!Q3XTIg8oObV-xx}x0p~X9Fno~VBClxHE?;=5TQ=; zzHt)<7uNQ=ko-;dB*~P836ibBlvvac#eEczumpl2Gl|XwtDRHYghP#ciHU6>54tEp zijo2<6L_{YiOQfZ1>?cwwPsUD`L=Mg%Yf4!uZHgpG{cDR{R>o#Lbb~2OYou8sFE3- zh0nHw?*dw(vr70}1sp~lP^v*A80WTUez?&^Ecq@*b4#wRf!>)!QKNrGOnabuUM3Ma zJxq@0#mE}N^okQ&Gjyb!)P+v1*gzTjoUr$?%^79O!p#XjtEI{mL!c@}Rw|vFxiws; z5qTKonwohU__j&p#jFshLumzNCi-19q{9B0ONUlU=R7HOItm?)&LZULF$ajl@W38R zo5bN&8<{eaKA@mT;$QOAi9zOYkq4!pI_$vN2j{ueM0mW^EHu zUm(U0HAAPuT3;kJg~cr#jBSw+2DU8rE!!SWy(JdYhSX38?JbrP9@`U&P+h)6P&5{j z=48(r|H4r1Ww=}^I_pFctARr#4yNE#gWD+8n20tibLlgm1S|hdsi^6K&EJvcV)&wQ z7X;_%8e&A*CgmvFWta*)UM<}`wgj#-9fYU1c>rU0=IZ{}q`IXeRY~qm9?iLG=AhgR z1Vbd^B2Qv0irW%FJ%^b|GLwUEdNl6K4_77~km_MY{PMuUQU4*}1|)oPPmVyH%P43s zQSdIgrrj_N55D22C4I7zMQ#m-v=8Mk$}*>8d(_ZaLg&on+#~**=|-8#&-cXS3XBzz1ArT~$wFbr+;NEj^+)UOUOeie~9J-kv{ zdl4?sO_u=h8CVTNRbb%tVBOMT$}vKTL*)0OG4<{1^NTObr~m>;h_F#AXa6Rwui}lk zGhhL>^soJ?q(HODW4yGWc1t)lMl}5DgzG2H&Q=sQ_8Jq+e3JvUMl}SH44H==SjIsI z|LW?*AX%YPc)iE&(}F3o3}+<{Y4ho<88~3|IulJC(tZZP)09LEszphFm_sP^$3fJ4 zqcSHCKIxU6Tm#>xg%J2L1<5VxLE|yafTqV(ri%6)|gJ6w&GflCwNT zQ?BJOr#3Rsr?9Z^b)Qc_5CkMcN*&*7a5M#GEW@6jK1U?g%2OpmL1=E9wD4?8jSq<0 zGhEq9y66#o6ng6&oX%AVbK6Ss9QK)+oVX=emqR#|Z4U8yJX1aVyHGlnGTsuC_43rAO?XyWj{Ay{msLpXt}XLfvv7>0$s=l9l>`X0*0WfN z&0D3JtC^xeqe3Fi9vv$+sp*n)aD}lCi?+PpL%t%Pfr}XO@Jc+-^`-rWslmP`y+o8% zLM&(~s)z3wk3s;k=e{8|R!KY~7s1I&pbk;>i?5Ny0AC1-@FE41(taDP3U?bPEhyUz zXHsDzLA_ztPzS9K01p=}fsHh&peYg9P1bthFiRyNp7qR5_l0qpNpHQK;^rgB+CuE8 zDanN!s38y}DnVF3B5$J)5Q02Wb&`7pAkX79g-GCaA)oOIQZX)tlV9G-I6-fk7%Ag23Rh${Wb*1pl(XK4Nn zoifD##RD*b=+odu`v@aX2xjIRRuMRu6U;efaC?Z2>imyO8n7)7)UjIG6>KDhG3La) z1B>BRBdJmXw-8DqaNc!58y!Ti62y*0xp^2X8B8e;GO|mH$1tt1c$D8ei0UOAxs9A% zZh$k5Y&dIqe##0@MF9_XotXtdq!kPQWtXKq&;$3#qsJb4#zO~((BmI^{9^}m=<$y| z{?Y0m^Kd8;>2Buy!^jH`dF*HQVeJKt#JdLU{~p*PkCBH#Ef$3u6dqz5QiVVR!yJO)B8Bs9{<;d z(MUo9@DIn&?_J*>2icw=C$2ve8rV;{GzWLpzn8bLH5>f6`o7CHyLHrOcl9G0hfifX z+RI`6VsG7MZ;pO<>D}x4e>DBmVE#t|<1Yqq^6h`|tQMb^RdR4w`j481n*C6tnyY`W zUxaJt@k%!1-EM=1_rG1yTY3%Esaaz9 zVfpKI5f9$2zP$fuzhfV++zQE9g{=s^6Es)J2IQe-WXqx`=yca1B?u}DE z0&ubk2hTl&kC)qje!Od>^=$lad05rWev4@72!CEz%z^*Yzkwe8TP&Ux68ph^ymbki zE$EQLKMCTt1SHh+`km6a_Y!ln#-anZX09byVj*8Xu&ON=mDKR--7ed+aB1`JcU%9@ zrvFz@=wHJ}U;KJ0Y9+$**D{>`x+~8<`%yzaYV_mqogVHyzfQf;Qi?kGTZbl`{IZNW z#ntyj&!s*Xld9n0?zVro_5bMlANUPIYBq$%4?F&bfH<7#XY;=UD{wGAPiq;VY;Ka5A6@@X8TIrY zlWl(sS~5MC@cw$>C4=UYVcO20EC1n@IMEE}WODd!4RURBjOLF1#O)S7lh-qRyfyA3 z8xKDJv*W?LwU7H<|0?V|^Rg3o`GWN*Kfp3htvz4A0p$Yhayj|imp`@+E2l%b=%bj~ zzBhABTzyxqVcG)2R35*C4Xs;k@z}^K2rbKYpQ=)D>XFEy5i{D z>t~pW&0%d-bLCPT4_0*WM`$5Fl^5T6|7)-%oU`o*ZMcm5eysoY@&HZf9G&EDi5Xdc zcmL}jC+?Eg3Dm;xdi*!Oo)w=p66yjDTyIG4A8!e-EcFwwx2!N(u&wx_D4c7)#WsG2 zouaquTQ2bXA+B+q=kt#-z4AC)`|1`hU!V(lfF?j*K4j(4BF{g0{2x%gby7J_C*mEW&1Sz5OF`{f{RcR-@eKK;-9_wOrGzT-`K>P~!7goEAdQ8T`!!|%_!%*XQ$c1c|M zSM^=YH(mIrKfC_n#m@WdsV2i9i}U@3^lfh+gLks=V7r>rCozD%(?yhX@Suxm<(|JM z@aOaH1$c3ZuQ+h!_Vl_7|K9XJ*0Qp;~)}fw_kX_>))#qHF$>(;OA%I>>tl}P!x2|cbKsR znNT;*Tko}gyGw6yja@u=J0Rig!J)c%BWgd#g8zGc(S^Ua=jVRYzt66=jq0{f{kZ-K zqB^gy?c=kqV5c+k)Q;=>FB>uC4(oe+dHmL}bQ2CnO}72PF?-ngekMQPqk6*9WllbK z%kTZB|B*N5zk722-}!i~EB$u2T=P1E^ULyC@!ga0bGP!h$M1a*(U#4@+x)py$~Ct- ztk>=9-z|LK>Hknmw!Y@NQO zrhnI_Hhke<%b$l1Xvt=F>+964L9n{_c!S-KyL0|a!Wp*QmhbTT=Qv(!XR)pL-IdQD zy}k!>UiIC#D~mY!ba#B+>-xc0=4t+oRmkxZwHAMRA(e+;sV%KVs8D?=0Xa`FE=!QE{sr!ApD9y4qp2$n-*C&nS(>@(jx8q*L&06w6u9?|Hsw0FYhk=OZVSli{)j0eK~%I z?<>)o&uaPpqjR0paER(n%JRhwe~ng<*m)b_k@NGOPbv8)FR$+Q*S`KQ-T%nTn;+dd zT*IdYc{JfP)38t;=0+taA9S;`Ja$}(wB}6V3M}s^8Q}LM3LsbCzCYcCyX^mJmZFGn zgS`dV1(POkkQ@J|9!7I5Y3$L^V@!N)%QHj=}kZO>iW{PNd##JBX)=C6N1{~q`M zwNvdT)V`G;pWry=tiv|NqsQ?zqHkyO{>XWwVb=21+xcU#CoBnkAM*GkQT(cdA-4K` zj^Jz59gc~5p~cIdS+kfwMlNl|?R7W?*@18lqO&(o-=3f3YEJ^K;?X zPDL2iSOh%&ar_Ec3uKl2@v8W#;@eF9TWStF7sWmJ>n8aAK3AeTwSu*4~u{=XPLs!&xO0Re>-~w zSM_y{s8P?g=Y?N$*MN66Irsh9W;ZxO{ew^MtwtxHn|6?o5 z35w+SLEo~{wH?etbplz^|b-+tPmR z@$a?&TUp!k=7G1}`0+NtZvO38f!`@?c%J7ERoThIPQO3kw~KPGwyg=}+dU?7^3M6D zC7=DwK5R=rpm&e;|3JgaL#NgrD&pE>+hiXO7NxNBukD&D+KJ;Op{@J}{B_Y^`}z~A za#}0d#_(fp*U~)SzJ2|Bt^W~UWf;{Z+GwtQP>j<)5_hI^aPnotw2D^J#!oWKpVdWL z`2Ce(NaNQkmj?6pYL%8vA3d;D0-XN-?DD{`WW?bcCk5V&xi5YzF^wsSTY_5i+2*ao zzQk_XX$KE0!B-7Rtv760-q+LzG_vnS=kUXdW>4ALAzQPn{-KiYE&Cp<+&tmZd#``Q zwf6viJ7&l1fDgVmOigTUoXnMX)&8s!-1*jg{&q5~KyC9seZ=yP5*8P^0}&3R>1l_2h4tZXSXn`q;FnF`HRuSyfN|bzro=T zx_--n>5y&hW&UgJWc>1MuH3cgug7yEK043AvkZ}KIF2@Pu(kC&x4*2KF3ovE$xo}2 z8uT8j>aZ-_-Z^YMW0#%R+x##0+LzQ7TzhC;_m)M@Mff&L(1!Op{B>{cKFwpHTUT%Kx~a4jrU;=dg(@w~&9 z#~1yV>qgWf4F4^ipKZ2R&ePx@k}F3;F@D%FO9;r)qs*yLd35r}TzU4fx0tfrL;Nt! zLGm=kyjlEeN%7U1`s?`KFIRuW(X?B0)NOq9zx~*9jBmRX5cjTOwj*YVtM72Er8J-e zeC({=z2haUf1))BWgW_$fD^kd`bLA{#^92gg&difTZZp`}2ii#^k#KYMezWhk<}w?6+5CzJzI literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/icon_airway_management.paa b/addons/medical_menu/data/icons/icon_airway_management.paa new file mode 100644 index 0000000000000000000000000000000000000000..f444f5f385d0ac5b2c2525ee5d94c53aebc9ef57 GIT binary patch literal 25200 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 W_$Zv=o&^Y>Vs4E|N3} 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/icon_medication.paa b/addons/medical_menu/data/icons/icon_medication.paa new file mode 100644 index 0000000000000000000000000000000000000000..98893ad86340662e8a24fd69b5f2056d4bf3b400 GIT binary patch literal 24820 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 nEbS@FG|YLJ~qc|)nOr-P0RlQfADW) literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/icon_tourniquet.paa b/addons/medical_menu/data/icons/icon_tourniquet.paa new file mode 100644 index 0000000000000000000000000000000000000000..8b34a7bfbbbcb51c0991a0f2e2551efe87df1710 GIT binary patch literal 25389 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/icon_tourniquet_small.paa b/addons/medical_menu/data/icons/icon_tourniquet_small.paa new file mode 100644 index 0000000000000000000000000000000000000000..a457e2c0d52833bc3a611f376b1c8c6ca0e05e86 GIT binary patch literal 5625 zcmeI0drVVj6u>`9DJ^ZGK9H62Qp&?2Qxu9(3=d7A27-^NOkkF$fIK#bC~*_V5CuUB z(>cOJL7o2L0wP}G)PQb7Fd&Gig^HkK6Ll(rB8GN%_rlIcN0tyW-1x(r-1Po(?mg#x z=XJkcJ<{9T^TXxd>phtWA*E7jHOv8?el(NRL9@4~uassT>ZEzCRO;_RUGJvOy#j;| z%tYvrF+z8#b7F@F@<52v@Yg{bglqcu9lwjmKh=XBlI4kIc}%E}ewyn$IKbk@)Mf2F z^&Mc)F;&_2)a_WNB-#P|;}{TeD#Ba@9Qd4w6G_X|z}#NJP3rn2u;ml#%73E)u-`z6 zM*nWqPGI3WN?*CT3V5o;LtH|H6%ZlVKeL+^OJ6oN(e4hh!hW8V z@EVwZCqr#QzIF!=L^4IVY%m;nW!E`P+uWdL;HkF$vHmPl4nENvh$;Yo`H^S;mOm+x z6yGn2zW{Plqq~rv&cN0kmD|tT^_2s+pv*en^@BOU50I=+?3-!_Jl6jI%>h*Ym{bbE zzgE<9EUw{_7?@K^+_~%<69t_3_)Qb3&cXfR-seAHNxrHEIcs11uR^Rr-i7=Z{-8TtKEw6M@FSL~&hYX5lN~QzArU5`S{Cg4 z+{$fSB*tC#vRLTsZfi1i5C3N>1UI4c5A^Yv-ix|M1Uzy6J@LEUUQq=s5SoTZ+ zY)Me_CH8APKWA4-Ya7x=?N9dlCaO=`ygp`wBx)!4Yqsm0BQ+mufVrJS=$?=HEx??| zHk<-Uj0eM^@%wmv^{9{+@0W(^*d`6x(NPyIK8kiRvYZZK|7=UB`t*w| z1N{Ybymm1>fKf6X0R^tV@#0}wMuY?s(YPPy6n|;1s?^8%(t9YcY$&TvDVX6cm9n;0P1(L<6(uY5Td^@j2v&v%y{}4 ziB!#&KE>N;i(ZOrE8M^z*Bbt-ll-X1Q)Z#v)mV^ zYVc$p=xDO`aF~>R)#++|+ zLk|9M(nS}dS^3w1(@-MA?O(LH{_)IM18K|#(05gD^&{ye!AHPLE}GZ#QeJHW_PTV| zPnFNaV@p4Z-iCx?=53?$S(G&zuT6AB6l>u5dH$4~2w4g|qonrt46bJzFuEw7#@~UU86xY&w8`xl5d7~`W9{b1kB0B19V)66i`TMrz0{T;+4sy9gr-6^ZhPbp+ ztT1nfWsK)W6~koKcgaN!aQ}>spFcOuAXWiOf+&3f^Kcl(>NEXR60%ehITP+5njzVe zs_8ZZ)(>YEW^3;jU6CSjHxrMIvHCdsibI!cr7Z}3BHOCf7OrTKk&70y5u5%j%Bmr< zZ-niM0JFknbXd%>+ZD*k*rdJ)cPndgo3n@$fwRe^CMp%rWVGGOE&a$4s2TC@PqK5P A5dZ)H literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/icon_triage_card.paa b/addons/medical_menu/data/icons/icon_triage_card.paa new file mode 100644 index 0000000000000000000000000000000000000000..850ab0f4ce4469c5b280d35345e2b85089aeaeb3 GIT binary patch literal 31163 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/medication_small.paa b/addons/medical_menu/data/icons/medication_small.paa new file mode 100644 index 0000000000000000000000000000000000000000..b6acd670c843a2573d7e213ca3848fdc301e11ac GIT binary patch literal 5625 zcmeHLZ%A8L6u%Dt#I7b`v&>p;1hdUCSdr0`PF<9Z#LRz`mNJlbHMTIPCT<@>nYBqB zLm0GngKl5yWMB68gIeU-ZYxG~rlO`=+hR>;hpm>W7@b5-_L94M-|M+~W{3u*X0Suv z%lmQeIrp4%?>YCp7lZZsyd!VvkLE=qgnT}qUcm3>6;X@{QLN7^)KMHoE{YH9bS1gu z*+#AgB|;Yx5xTSsq5I?tk8)8iLPWz8q7%Y1{r?|tEFQ%}T=gD}=`qA>(8rzUDIg@o z5gDG5#uJB$i=CW5PE;r8D;eghU9G7u&`)(!+BVGR%6Yp&a9OlNFo)R#Q3U%oixD4H zgW_tKesQ+#^q)9yS3KG(|JI8S;)(Nd%82p5aL8hM$d$4EIOrvjxM5~kEGie(EIz`5 zZ5$U35=rX`rmuLoEx|=n0Q7D5`WMU)W4N*`u%}>}`)pPIduZtn?$7nsx8Gx(r@AOn zxq_K1emh>!0+u7g7ivR2izgjJ3HTy^G!ft2_=l$c4UR% zl4sfa$(;oEnak-Y%Ev#_dvJe;#tS*4m64SH7{yJZANb~=f*`@OLmdaFM z-~L-m=Ipzb*8!tU+^m+Yk1W&LWS7)0S>~KsEy1DV_c=S8y02aC2Ymy+wj5V$0?Qv^ z@g@47Hg;gki3W@DWw38Y&)stVqvLMCg+=*)(Pv83ww*=s{0Qc62C>c<7tlrHKlZN9-*@I(J@>3j%>I-~zxn-Ee>?b-JdLxu zxI0sT6;16Gk7y4;i0+rr`X6cee`aRMysR;?^Z#G=3SI>3bJ+YD8U>UF@sK+^QeEwl zlm7+Ca8XTK60ome8aMLX2f_N}AsnxQoljyo*6#oM>3B)Mr~DXuN6tk~zbC8)xq-j` zb)1IM5TaigL|V(OLJ(8u3c7 zjan~_tTv&|*s}Q#Ih^K7jgk3p^J4{)lquUh!FZ9nE9~(60d4kZyMGjL*#15d0Qpn5 zoNgR&s{rqMjB!oR_rC((J%zPXDWiJ8hXwx!9Dp}FKN>&%=})o?8K5u0>s?T(gRgxF z-jz>qS_Mn{jGtwx!w2dHVEkt1f9|(8=UzQKX$5_W-x}ssxUD&e^Xu`-O~yZXWjSR? zc6|i+o1MRDA>hVNGh2VWyD0t+Q40ETO4alZ2~M|>9@n~c`~Ud?ovBvRCf3<-qqJ?T zvEk-u2|xW*V_2`rO8O~K?9^$fz^wyz?z~!T)`V@HYv-D7;{_G)=~zl@VVwBj%cz*6 zmw=ypzuG_I?}`B|O0O;dN}!aBFYO4*kNk~x_S=;kl|R{;)qsy1*|vPqKI>8SRWTeo zzYNLfXVIKLG$)srj2$pd=7ajWvCof<0ZzZBsd(LDWG}5reV2c~_d^cL_GnU3Njxnr PQ?s|fuId6YakhT|*Ur0f literal 0 HcmV?d00001 diff --git a/addons/medical_menu/data/icons/toggle_self_small.paa b/addons/medical_menu/data/icons/toggle_self_small.paa new file mode 100644 index 0000000000000000000000000000000000000000..73108e5a98db9dc4605577ba63de35ceee58acd0 GIT binary patch literal 5625 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 literal 0 HcmV?d00001 diff --git a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf new file mode 100644 index 0000000000..973e1279ae --- /dev/null +++ b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf @@ -0,0 +1 @@ +// TODO implement, grab/parse from config ? diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf new file mode 100644 index 0000000000..f56bbbf699 --- /dev/null +++ b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf @@ -0,0 +1,85 @@ +/** + * fn_displayOptions.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#include "script_component.hpp" + +#define START_IDC 20 +#define END_IDC 27 +#define AMOUNT_OF_ENTRIES (count _entries) + +private ["_name","_entries","_display","_newTarget","_counter","_card","_ctrl","_code"]; +_name = _this select 0; +if (!hasInterface) exitwith{}; + +disableSerialization; +_display = uiNamespace getVariable QGVAR(medicalMenu); +if (isNil "_display") exitwith {}; // no valid dialog present + +if ((_name == "toggle")) exitwith { + + if (GVAR(INTERACTION_TARGET) != ACE_player) then { + _newTarget = ACE_player; + } else { + _newTarget = GVAR(INTERACTION_TARGET_PREVIOUS); + }; + + GVAR(INTERACTION_TARGET_PREVIOUS) = GVAR(INTERACTION_TARGET); + [_newTarget] spawn { + closeDialog 0; + sleep 0.1; + [_this select 0] call FUNC(openMenu); + }; +}; + +// Clean the dropdown options list from all actions +for [{_x=START_IDC},{_x <= END_IDC},{_x=_x+1}] do { + _ctrl = (_display displayCtrl (_x)); + _ctrl ctrlSetText ""; + _ctrl ctrlShow false; + _ctrl ctrlSetEventHandler ["ButtonClick",""]; + _ctrl ctrlSetTooltip ""; + _ctrl ctrlCommit 0; +}; + +GVAR(LatestDisplayOptionMenu) = _name; + +// The triage card has no options available +lbClear 212; +if (_name == "triage") exitwith { + ctrlEnable[212,true]; + _card = ([GVAR(INTERACTION_TARGET)] call FUNC(getTriageList)); + { + lbadd[212,format["%1 x%2", getText(configFile >> "CfgWeapons" >> (_x select 0) >> "displayName"), _x select 1]]; + }foreach _card; + if (count _card == 0) then { + lbadd[212,"No Entries"]; + }; +}; + +ctrlEnable[212,false]; + +_entries = [ACE_player, GVAR(INTERACTION_TARGET),_name] call FUNC(getTreatmentOptions); + +{ + //player sidechat format["TRIGGERED: %1",_x]; + if (_foreachIndex > END_IDC) exitwith {}; + _ctrl = (_display displayCtrl (START_IDC + _foreachIndex)); + if (!(_foreachIndex > AMOUNT_OF_ENTRIES)) then { + _ctrl ctrlSetText (_x select 0); + _code = format["[ACE_player, ACE_medical_INTERACTION_TARGET] call %1;",(_x select 1)]; + _ctrl ctrlSetEventHandler ["ButtonClick", _code]; + _ctrl ctrlSetTooltip (_x select 2); + _ctrl ctrlShow true; + } else { + _ctrl ctrlSetText ""; + _ctrl ctrlSetEventHandler ["ButtonClick",""]; + }; + _ctrl ctrlCommit 0; +}foreach _entries; diff --git a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf new file mode 100644 index 0000000000..2d895cae70 --- /dev/null +++ b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf @@ -0,0 +1,28 @@ +/** + * fn_handleUI_dropDownTriageCard.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#include "script_component.hpp" + +private ["_display","_pos","_ctrl","_curPos","_idc"]; +disableSerialization; +_display = uiNamespace getVariable QGVAR(medicalMenu); +_pos = [ 0,0,0,0]; +_curPos = ctrlPosition (_display displayCtrl 2002); +if ((_curPos select 0) == 0 && (_curPos select 1) == 0) then { + _pos = ctrlPosition (_display displayCtrl 2001); +}; + +for "_idc" from 2002 to 2006 step 1 do { + _pos set [1, (_pos select 1) + (_pos select 3)]; + _ctrl = (_display displayCtrl _idc); + _ctrl ctrlSetPosition _pos; + _ctrl ctrlCommit 0; +}; + diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf new file mode 100644 index 0000000000..5597dacce1 --- /dev/null +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -0,0 +1,76 @@ +/** + * fn_onMenuOpen.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#include "script_component.hpp" + +if (isnil QGVAR(LatestDisplayOptionMenu)) then { + GVAR(LatestDisplayOptionMenu) = "triage"; +} else { + if (GVAR(LatestDisplayOptionMenu) == "toggle") then { + GVAR(LatestDisplayOptionMenu) = "triage"; + GVAR(INTERACTION_TARGET) = GVAR(INTERACTION_TARGET_PREVIOUS); + }; +}; + +private ["_display","_target"]; +_target = GVAR(INTERACTION_TARGET); +if (isnil QGVAR(INTERACTION_TARGET_PREVIOUS)) then { + GVAR(INTERACTION_TARGET_PREVIOUS) = _target; +}; +[GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); + +[] call FUNC(updateActivityLog); +[_target] call FUNC(updateUIInfo); + +// 11 till 18 +disableSerialization; +_display = _this select 0; //uiNamespace getVariable QGVAR(medicalMenu); +if (isnil "_display") exitwith { + +}; + +(_display displayCtrl 11) ctrlSetTooltip localize "STR_ACE_UI_VIEW_TRIAGE_CARD"; +(_display displayCtrl 12) ctrlSetTooltip localize "STR_ACE_UI_EXAMINE_PATIENT"; +(_display displayCtrl 13) ctrlSetTooltip localize "STR_ACE_UI_BANDAGE_FRACTURES"; +(_display displayCtrl 14) ctrlSetTooltip localize "STR_ACE_UI_MEDICATION"; +(_display displayCtrl 15) ctrlSetTooltip localize "STR_ACE_UI_AIRWAY_MANAGEMENT"; +(_display displayCtrl 16) ctrlSetTooltip localize "STR_ACE_UI_ADVANCED_TREATMENT"; +(_display displayCtrl 17) ctrlSetTooltip localize "STR_ACE_UI_DRAG_CARRY"; +(_display displayCtrl 18) ctrlSetTooltip localize "STR_ACE_UI_TOGGLE_SELF"; + +(_display displayCtrl 301) ctrlSetTooltip localize "STR_ACE_UI_SELECT_HEAD"; +(_display displayCtrl 302) ctrlSetTooltip localize "STR_ACE_UI_SELECT_TORSO"; +(_display displayCtrl 303) ctrlSetTooltip localize "STR_ACE_UI_SELECT_ARM_R"; +(_display displayCtrl 304) ctrlSetTooltip localize "STR_ACE_UI_SELECT_ARM_L"; +(_display displayCtrl 305) ctrlSetTooltip localize "STR_ACE_UI_SELECT_LEG_R"; +(_display displayCtrl 306) ctrlSetTooltip localize "STR_ACE_UI_SELECT_LEG_L"; +(_display displayCtrl 2001) ctrlSetTooltip localize "STR_ACE_UI_SELECT_TRIAGE_STATUS"; + + +(_display displayCtrl 1) ctrlSetText format["%1",[_target] call EFUNC(common,getName)]; +setMousePosition [ 0.4, 0.4]; + +[QGVAR(onMenuOpen), "onEachFrame", { + if (isNull GVAR(INTERACTION_TARGET)) then { + GVAR(INTERACTION_TARGET) = ACE_player; + }; + [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo); + [GVAR(INTERACTION_TARGET)] call FUNC(updateIcons); + [GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); + + [] call FUNC(updateActivityLog); + + _status = [GVAR(INTERACTION_TARGET)] call FUNC(getTriageStatus); + ((_this select 0) displayCtrl 2000) ctrlSetText (_status select 0); + ((_this select 0) displayCtrl 2000) ctrlSetBackgroundColor (_status select 2); + + }, [_display]] call BIS_fnc_addStackedEventHandler; + + ["Medical_onMenuOpen", [ACE_player, _interactionTarget]] call ace_common_fnc_localEvent; diff --git a/addons/medical_menu/functions/fnc_openMenu.sqf b/addons/medical_menu/functions/fnc_openMenu.sqf new file mode 100644 index 0000000000..82ebd9dd45 --- /dev/null +++ b/addons/medical_menu/functions/fnc_openMenu.sqf @@ -0,0 +1,33 @@ +#include "script_component.hpp" + +if (dialog) exitwith { + disableSerialization; + + private "_display"; + _display = uiNamespace getVariable QGVAR(medicalMenu); + if (!isnil "_display") then { + closeDialog 314412; + }; + +}; + +private ["_interactionTarget"]; +_interactionTarget = objNull; +if (count _this > 0) then { + _interactionTarget = _this select 0; + +} else { + _interactionTarget = cursortarget; + if (isNull _interactionTarget) then { + _interactionTarget = ACE_player; + }; + if (_interactionTarget distance ACE_player > 5 || !(_interactionTarget isKindOf "CaManBase")) then { + _interactionTarget = ACE_player; + }; +}; + +if (isNull _interactionTarget) then { + _interactionTarget = ACE_player; +}; +GVAR(INTERACTION_TARGET) = _interactionTarget; +createDialog QGVAR(medicalMenu); diff --git a/addons/medical_menu/functions/fnc_updateIcons.sqf b/addons/medical_menu/functions/fnc_updateIcons.sqf new file mode 100644 index 0000000000..81c071efca --- /dev/null +++ b/addons/medical_menu/functions/fnc_updateIcons.sqf @@ -0,0 +1,27 @@ +/** + * fn_updateIcons.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#include "script_component.hpp" + +private ["_display","_startIDC","_idc","_options","_name","_amount"]; +disableSerialization; +_display = uiNamespace getVariable QGVAR(medicalMenu); + +_startIDC = 111; + +_options = ["triage" , "examine", "bandage", "medication", "airway", "advanced", "drag", "toggle"]; +for "_idc" from _startIDC to 118 step 1 do { + _amount = [ACE_player, GVAR(INTERACTION_TARGET), _options select (_idc - 111)] call FUNC(getTreatmentOptions); + if ((count _amount) > 0 || _idc == 111 || _idc == 118) then { + (_display displayCtrl _idc) ctrlSettextColor [1,1,1,1]; + } else { + (_display displayCtrl _idc) ctrlSettextColor [0.4,0.4,0.4,1]; + }; +}; \ No newline at end of file diff --git a/addons/medical_menu/functions/fnc_updateUIInfo.sqf b/addons/medical_menu/functions/fnc_updateUIInfo.sqf new file mode 100644 index 0000000000..4ac6b463f1 --- /dev/null +++ b/addons/medical_menu/functions/fnc_updateUIInfo.sqf @@ -0,0 +1,215 @@ +/** + * fn_updateUIInfo.sqf + * @Descr: N/A + * @Author: Glowbal + * + * @Arguments: [] + * @Return: + * @PublicAPI: false + */ + +#include "script_component.hpp" + +private ["_targetObj","_bodyPartText","_bodyPartN","_openWounds","_bandagedWounds","_fractures","_listOfWounds","_listOfBandagedWounds","_listOfFractures","_counter","_nameEntry","_untreatedWounds" ,"_remainder", "_numberOf", "_airwayStatus", "_airwayTreated"]; +_targetObj = _this select 0; + +_bodyPartText = (call FUNC(getSelectedBodyPart)); +_bodyPartN = [_bodyPartText] call FUNC(getBodyPartNumber); + +if (_bodyPartN < 0 || _bodyPartN > 5) exitwith {}; + +_openWounds = [_targetObj,QGVAR(openWounds)] call EFUNC(common,getDefinedVariable); +_bandagedWounds = [_targetObj,QGVAR(bandagedWounds)] call EFUNC(common,getDefinedVariable); +_fractures = [_targetObj,QGVAR(fractures)] call EFUNC(common,getDefinedVariable); +_airwayStatus = [_targetObj,QGVAR(airway)] call EFUNC(common,getDefinedVariable); + +if (count _this > 1) then { + switch (_this select 1) do { + case QGVAR(openWounds): { _openWounds = _this select 2; }; + case QGVAR(bandagedWounds): { _bandagedWounds = _this select 2; }; + case QGVAR(fractures): { _fractures = _this select 2; }; + }; +}; + +[_openWounds,_bandagedWounds] call FUNC(updateBodyImg); +_listOfWounds = _openWounds select _bodyPartN; +_listOfBandagedWounds = _bandagedWounds select _bodyPartN; +_listOfFractures = _fractures select _bodyPartN; + +// TODO collect all information first, then clear the lb and fill in with details. Also; use ctrl instead of IDC. +_numberOf = 0; +lbClear 213; + +_displayBodyPartText = switch (_bodyPartText) do { + case "head": { + localize "STR_ACE_UI_HEAD"; + }; + case "body": { + localize "STR_ACE_UI_TORSO"; + }; + case "hand_r": { + localize "STR_ACE_UI_ARM_R"; + }; + case "hand_l": { + localize "STR_ACE_UI_ARM_L"; + }; + case "leg_r": { + localize "STR_ACE_UI_LEG_R"; + }; + case "leg_l": { + localize "STR_ACE_UI_LEG_L"; + }; + default {"-"}; +}; + + +lbadd[213,format[localize "STR_ACE_UI_SELECTED_BODY_PART",_displayBodyPartText]]; +lbSetData [213, _numberOf, ""]; +lbSetColor [213, _numberOf, [0.27, 0.40, 0.26, 1]]; +_numberOf = _numberOf + 1; + +if (GVAR(setting_allowAirwayInjuries)) then { + _airwayTreated = _targetObj getvariable [QGVAR(airwayTreated), false]; + + if (_airwayStatus > 0) then { + _nameEntry = switch (_airwayStatus) do { + case 0: {localize "STR_ACE_UI_NORMAL_BREATHING"}; + case 1: {localize "STR_ACE_UI_DIFFICULT_BREATHING"}; + case 2: {localize "STR_ACE_UI_ALMOST_NO_BREATHING"}; + default {localize "STR_ACE_UI_NO_BREATHING"}; + }; + + if (!(alive _targetObj) || (_targetObj getvariable [QEGVAR(common,isDead), false])) then { + lbadd[213,format["%1",localize "STR_ACE_UI_NO_BREATHING"]]; + } else { + lbadd[213,format["%1",_nameEntry]]; + }; + lbSetData [213, _numberOf, ""]; + _numberOf = _numberOf + 1; + } else { + if (!(alive _targetObj) || (_targetObj getvariable [QEGVAR(common,isDead), false])) then { + lbadd[213,format["%1",localize "STR_ACE_UI_NO_BREATHING"]]; + lbSetData [213, _numberOf, ""]; + _numberOf = _numberOf + 1; + }; + }; + + if (_airwayTreated) then { + lbadd[213,localize "STR_ACE_UI_STATUS_NPA_APPLIED"]; + lbSetData [213, _numberOf, ""]; + lbSetColor [213, _numberOf, [0.5, 0.5, 0, 1]]; + _numberOf = _numberOf + 1; + }; +}; + +if (([_targetObj,QGVAR(isBleeding)] call EFUNC(common,getDefinedVariable))) then { + lbadd[213,localize "STR_ACE_UI_STATUS_BLEEDING"]; + lbSetData [213, _numberOf, ""]; + _numberOf = _numberOf + 1; +}; +if (([_targetObj,QGVAR(hasLostBlood)] call EFUNC(common,getDefinedVariable))) then { + lbadd[213,localize "STR_ACE_UI_STATUS_LOST_BLOOD"]; + lbSetData [213, _numberOf, ""]; + _numberOf = _numberOf + 1; +}; + +if (([_targetObj,QGVAR(hasPain)] call EFUNC(common,getDefinedVariable))) then { + lbadd[213,localize "STR_ACE_UI_STATUS_PAIN"]; + lbSetData [213, _numberOf, ""]; + _numberOf = _numberOf + 1; +}; +if (([_targetObj, _bodyPartText] call FUNC(hasTourniquetAppliedTo))) then { + lbadd[213,localize "STR_ACE_UI_STATUS_TOURNIQUET_APPLIED"]; + lbSetColor [213, _numberOf, [0.5, 0.5, 0, 1]]; + lbSetData [213, _numberOf, ""]; + _numberOf = _numberOf + 1; +}; + +_counter = 0; +{ + if (_x > 0) then { + _untreatedWounds = floor _x; + _remainder = _x - (floor _x); + + _nameEntry = switch (_counter) do { + case 0: {localize "STR_ACE_UI_SMALL"}; + case 1: {localize "STR_ACE_UI_MEDIUM"}; + case 2: {localize "STR_ACE_UI_LARGE"}; + default {localize "STR_ACE_UI_SMALL"}; + }; + + if (_untreatedWounds > 1) then { + lbadd[213,format[localize "STR_ACE_UI_MULTIPLE_OPEN_WOUNDS",_nameEntry,_untreatedWounds]]; + lbSetData [213, _numberOf, format["open_wound_%1",_counter]]; + lbSetColor [213, _numberOf, [0.6, 0, 0, 1]]; + _numberOf = _numberOf + 1; + } else { + if (_untreatedWounds == 1) then { + lbadd[213,format[localize "STR_ACE_UI_SINGLE_OPEN_WOUND",_nameEntry]]; + lbSetData [213, _numberOf, format["open_wound_%1",_counter]]; + lbSetColor [213, _numberOf, [0.6, 0, 0, 1]]; + _numberOf = _numberOf + 1; + }; + }; + + if (_remainder > 0) then { + lbadd[213,format[localize "STR_ACE_UI_PARTIAL_OPEN_WOUND",_nameEntry]]; + lbSetData [213, _numberOf, format["open_wound_%1",_counter]]; + lbSetColor [213, _numberOf, [0.6, 0, 0, 1]]; + _numberOf = _numberOf + 1; + }; + }; + _counter = _counter + 1; +}foreach _listOfWounds; + +_counter = 0; +{ + if (_x > 0) then { + + _untreatedWounds = floor _x; + _remainder = _x - (floor _x); + + _nameEntry = switch (_counter) do { + case 0: {localize "STR_ACE_UI_SMALL"}; + case 1: {localize "STR_ACE_UI_MEDIUM"}; + case 2: {localize "STR_ACE_UI_LARGE"}; + default {localize "STR_ACE_UI_SMALL"}; + }; + + if (_untreatedWounds > 1) then { + lbadd[213,format[localize "STR_ACE_UI_MULTIPLE_BANDAGED_WOUNDS",_nameEntry,_untreatedWounds]]; + lbSetData [213, _numberOf, format["bandaged_wound_%1",_counter]]; + _numberOf = _numberOf + 1; + } else { + if (_untreatedWounds == 1) then { + lbadd[213,format[localize "STR_ACE_UI_SINGLE_BANDAGED_WOUND",_nameEntry]]; + lbSetData [213, _numberOf, format["bandaged_wound_%1",_counter]]; + _numberOf = _numberOf + 1; + }; + }; + + if (_remainder > 0) then { + lbadd[213,format[localize "STR_ACE_UI_PARTIAL_BANDAGED_WOUND",_nameEntry]]; + lbSetData [213, _numberOf, format["bandaged_wound_%1",_counter]]; + _numberOf = _numberOf + 1; + }; + }; + _counter = _counter + 1; +}foreach _listOfBandagedWounds; + +_counter = 0; +{ + if (_x > 0) then { + _nameEntry = switch (_counter) do { + case 0: {localize "STR_ACE_UI_SMALL"}; + case 1: {localize "STR_ACE_UI_MEDIUM"}; + case 2: {localize "STR_ACE_UI_LARGE"}; + default {localize "STR_ACE_UI_SMALL"}; + }; + lbadd[213,format["%1 Fracture x%2",_nameEntry,_x]]; + lbSetData [213, _numberOf, ""]; + _numberOf = _numberOf + 1; + }; + _counter = _counter + 1; +}foreach _listOfFractures; + diff --git a/addons/medical_menu/functions/script_component.hpp b/addons/medical_menu/functions/script_component.hpp new file mode 100644 index 0000000000..140463d68d --- /dev/null +++ b/addons/medical_menu/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\medical\script_component.hpp" diff --git a/addons/medical_menu/script_component.hpp b/addons/medical_menu/script_component.hpp new file mode 100644 index 0000000000..3119d48e19 --- /dev/null +++ b/addons/medical_menu/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT medical_menu +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_MEDICAL_MENU + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_MEDICAL_MENU + #define DEBUG_SETTINGS DEBUG_SETTINGS_MEDICAL_MENU +#endif + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml new file mode 100644 index 0000000000..0f61d06e28 --- /dev/null +++ b/addons/medical_menu/stringtable.xml @@ -0,0 +1,361 @@ + + + + + + EXAMINE & TREATMENT + ОСМОТР И ЛЕЧЕНИЕ + EXAMINE & TREATMENT + EXAMINAR & TRATAMIENTO + EXAMINER & TRAITEMENTS + BADANIE & LECZENIE + + + STATUS + СОСТОЯНИЕ + STATUS + ESTADO + ÉTATS + STATUS + + + OVERVIEW + ОБЩАЯ ИНФОРМАЦИЯ + OVERVIEW + DESCRIPCIÓN + DESCRIPTION + OPIS + + + ACTIVITY LOG + ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ + ACTIVITY LOG + REGISTRO DE ACTIVIDAD + REGISTRE DES SOINS + LOGI AKTYWNOŚCI + + + QUICK VIEW + БЫСТРЫЙ ОСМОТР + QUICK VIEW + VISTA RÁPIDA + VUE RAPIDE + SZYBKI PODGLĄD + + + None + Не ранен + Ninguno + Aucun + Brak + + + Minor + Несрочная помощь + Menor + Mineur + Normalny + + + Delayed + Срочная помощь + Diferido + Urgent + Opóźniony + + + Immediate + Неотложная помощь + Inmediato + Immédiat + Natychmiastowy + + + Deceased + Морг + Fallecido + Décédé + Nie żyje + + + View triage Card + Смотреть первичную карточку + Ver Triage + Voir Carte de Triage + Pokaż kartę segregacyjną + + + Examine Patient + Осмотреть пациента + Examinar Paciente + Examiner Patient + Zbadaj pacjenta + + + Bandage / Fractures + Раны / переломы + Vendajes/Fracturas + Bandages / Fractures + Bandaże / Złamania + + + Medication + Медикаменты + Medicación + Médications + Leki + + + Airway Management + Дыхательные пути + Vías Aéreas + Gestion Des Voie REspiratoire + Drogi oddechowe + + + Advanced Treatments + Специальная медпомощь + Tratamientos Avanzados + Traitement Avancé + Zaawansowane zabiegi + + + Drag/Carry + Тащить/нести + Arrastrar/Cargar + Glisser/Porter + Ciągnij/Nieś + + + Toggle (Self) + Лечить себя/другого раненого + Activer (sois) + Przełącz (na siebie) + Alternar + + + Select triage status + Сортировка + Seleccionar estado de Triage + Selectioner l'état de Triage + Wybierz priorytet + + + Select Head + Выбрать голову + Seleccionar Cabeza + Selectioner Tête + Wybierz głowę + + + Select Torso + Выбрать торс + Seleccionar Torso + Selectioner Torse + Wybierz tors + + + Select Left Arm + Выбрать левую руку + Seleccionar Brazo Izquierdo + Selectioner Bras Gauche + Wybierz lewą rękę + + + Select Right Arm + Выбрать правую руку + Seleccionar Brazo Derecho + Selectioner Bras Droit + Wybierz prawą rękę + + + Select Left Leg + Выбрать левую ногу + Seleccionar Pierna Izquierda + Selectioner Jambe Gauche + Wybierz lewą nogę + + + Select Right Leg + Выбрать правую ногу + Seleccionar Pierna Derecha + Selectioner Jambe Droite + Wybierz prawą nogę + + + Head + Голова + Cabeza + Tête + Głowa + + + Torso + Торс + Torse + Tors + + + Left Arm + Левая рука + Brazo Izquierdo + Bras Gauche + Lewa ręka + + + Right Arm + Правая рука + Brazo Derecho + Bras Droit + Prawa ręka + + + Left Leg + Левая нога + Pierna Izquierda + Jambe Gauche + Lewa noga + + + Right Leg + Правая нога + Pierna Derecha + Jambe Droite + Prawa noga + + + Body Part: %1 + Часть тела: %1 + Parte del cuerpo: %1 + Partie du corps: %1 + Część ciała: %1 + + + Small + малого размера + Pequeña + Petite + małym + + + Medium + среднего размера + Mediana + moyenne + średnim + + + Large + большого размера + Grande + Grande + dużym + + + There are %2 %1 Open Wounds + %2 открытые раны %1 + Hay %2 Heridas Abiertas %1 + Il y a %2 %1 Blessure Ouverte + Widzisz otwarte rany w ilości %2 o %1 rozmiarze + + + There is 1 %1 Open Wound + Открытая рана %1 + Hay 1 Herida Abierta %1 + Il y a 1 blessure ouverte %1 + Widzisz 1 otwartą ranę o %1 rozmiarze + + + There is a partial %1 Open wound + Частично открытая рана %1 + Hay una herida parcial abierta %1 + Il y a une Blessure Patiellement Ouverte %1 + Widzisz częściowo otwartą ranę o %1 rozmiarze + + + There are %2 %1 Bandaged Wounds + %2 перевязанные раны %1 + Hay %2 Heridas %1 Vendadas + Il y a %2 %1 Blessure Bandée + Widzisz %2 zabandażowanych ran o %1 rozmiarze + + + There is 1 %1 Bandaged Wound + 1 перевязанная рана %1 + Hay 1 Herida Vendada %1 + Il y a 1 %1 Blessure Bandée + Widzisz 1 zabandażowaną ranę o %1 rozmiarze + + + There is a partial %1 Bandaged wound + Частично перевязанная рана %1 + Hay una Herida parcial %1 Vendada + Il y a %1 Blessure Partielment Bandée + Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze + + + Normal breathing + Дыхание в норме + Respiración normal + Respiration Normale + Normalny oddech + + + No breathing + Дыхания нет + No respira + Apnée + Brak oddechu + + + Difficult breathing + Дыхание затруднено + Dificultad para respirar + Difficultée Respiratoire + Trudności z oddychaniem + + + Almost no breathing + Дыхания почти нет + Casi sin respirar + Respiration Faible + Prawie brak oddechu + + + Bleeding + Кровотечение + Sangrando + Seignement + Krwawienie zewnętrzne + + + in Pain + Испытывает боль + Con Dolor + A De La Douleur + W bólu + + + Lost a lot of Blood + Большая кровопотеря + Mucha Sangre perdida + A Perdu Bcp de Sang + Stracił dużo krwi + + + Tourniquet [CAT] + Жгут + Torniquete [CAT] + Garot [CAT] + Opaska uciskowa [CAT] + + + Nasopharyngeal Tube [NPA] + Назотрахеальная трубка + Torniquete [CAT] + Canule Naseaupharyngée [NPA] + Rurka nosowo-gardłowa [NPA] + + + + diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp new file mode 100644 index 0000000000..d80165aca4 --- /dev/null +++ b/addons/medical_menu/ui/menu.hpp @@ -0,0 +1,570 @@ +#include "\z\ace\addons\main\define.hpp" + +class GVAR(medicalMenu) { + idd = 314412; + movingEnable = true; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(medicalMenu)), _this select 0)]; [ARR_2(QUOTE(QGVAR(id)), true)] call EFUNC(common,blurScreen); [_this select 0] call FUNC(onMenuOpen);); + onUnload = QUOTE([ARR_2(QUOTE(QGVAR(id)), false)] call EFUNC(common,blurScreen); [ARR_2(QUOTE(QGVAR(onMenuOpen)), 'onEachFrame')] call BIS_fnc_removeStackedEventHandler;); + class controlsBackground { + class HeaderBackground: ACE_gui_backgroundBase{ + idc = -1; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + text = "#(argb,8,8,3)color(0,0,0,0)"; + }; + class CenterBackground: HeaderBackground { + y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + h = "16 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + text = "#(argb,8,8,3)color(0,0,0,0.8)"; + colorText[] = {0, 0, 0, "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"}; + colorBackground[] = {0,0,0,"(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"}; + }; + class BottomBackground: CenterBackground { + y = "(18.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))"; + h = "9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; + }; + + class controls { + class HeaderName { + idc = 1; + type = CT_STATIC; + x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + style = ST_LEFT + ST_SHADOW; + font = "PuristaMedium"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.95, 0.95, 0.95, 0.75}; + 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.9])"}; + text = ""; + }; + + class IconsBackGroundBar: ACE_gui_backgroundBase{ + idc = -1; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "3.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + text = QUOTE(PATHTOF(data\background_img.paa)); + colorText[] = {1, 1, 1, 0.0}; + }; + class CatagoryLeft: HeaderName { + x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "2.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + style = ST_CENTER; + colorText[] = {1, 1, 1.0, 0.9}; + colorBackground[] = {0,0,0,0}; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; + text = $STR_ACE_UI_EXAMINE_TREATMENT; + }; + class CatagoryCenter: CatagoryLeft { + x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = $STR_ACE_UI_STATUS; + }; + class CatagoryRight: CatagoryCenter{ + x = "25.66 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = $STR_ACE_UI_OVERVIEW; + }; + class Line: ACE_gui_backgroundBase { + idc = -1; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "3.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "37 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "0.03 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + text = "#(argb,8,8,3)color(1,1,1,0.5)"; + }; + + class iconImg1: ACE_gui_backgroundBase { + idc = 111; + x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)"; + colorBackground[] = {0,0,0,1}; + colorPicture[] = {1,1,1,1}; + colorText[] = {1,1,1,1}; + text = QUOTE(PATHTOF(data\icons\triage_card_small.paa)); + }; + class iconImg2: iconImg1 { + idc = 112; + x = "3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = QUOTE(PATHTOF(data\icons\examine_patient_small.paa)); + }; + class iconImg3: iconImg1 { + idc = 113; + x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = QUOTE(PATHTOF(data\icons\bandage_fracture_small.paa)); + }; + class iconImg4: iconImg1 { + idc = 114; + x = "6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = QUOTE(PATHTOF(data\icons\medication_small.paa)); + }; + class iconImg5: iconImg1 { + idc = 115; + x = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = QUOTE(PATHTOF(data\icons\airway_management_small.paa)); + }; + class iconImg6: iconImg1 { + idc = 116; + x = "9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = QUOTE(PATHTOF(data\icons\advanced_treatment_small.paa)); + }; + class iconImg7: iconImg1 { + idc = 117; + x = "10.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = QUOTE(PATHTOF(data\icons\icon_carry.paa)); + }; + class iconImg8: iconImg1 { + idc = 118; + x = "12 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = QUOTE(PATHTOF(data\icons\toggle_self_small.paa)); + }; + + + class BtnIconLeft1: ACE_gui_buttonBase { + idc = 11; + x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)"; + animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; + action = QUOTE(['triage'] call FUNC(handleUI_DisplayOptions);); + }; + class BtnIconLeft2: BtnIconLeft1 { + idc = 12; + x = "3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(['examine'] call FUNC(handleUI_DisplayOptions);); + }; + class BtnIconLeft3: BtnIconLeft1 { + idc = 13; + x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(['bandage'] call FUNC(handleUI_DisplayOptions);); + }; + class BtnIconLeft4: BtnIconLeft1 { + idc = 14; + x = "6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(['medication'] call FUNC(handleUI_DisplayOptions);); + }; + class BtnIconLeft5: BtnIconLeft1 { + idc = 15; + x = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(['airway'] call FUNC(handleUI_DisplayOptions);); + }; + class BtnIconLeft6: BtnIconLeft1 { + idc = 16; + x = "9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(['advanced'] call FUNC(handleUI_DisplayOptions);); + }; + class BtnIconLeft7: BtnIconLeft1 { + idc = 17; + x = "10.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(['drag'] call FUNC(handleUI_DisplayOptions);); + }; + class BtnIconLeft8: BtnIconLeft1 { + idc = 18; + x = "12 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(['toggle'] call FUNC(handleUI_DisplayOptions);); + }; + + class TriageCardList: ACE_gui_listBoxBase { + idc = 212; + x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "12 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; + rowHeight = 0.03; + colorBackground[] = {0, 0, 0, 0.2}; + colorText[] = {1,1, 1, 1.0}; + colorScrollbar[] = {0.95, 0.95, 0.95, 1}; + colorSelect[] = {0.95, 0.95, 0.95, 1}; + colorSelect2[] = {0.95, 0.95, 0.95, 1}; + colorSelectBackground[] = {0, 0, 0, 0.0}; + colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; + }; + + // Left side + class BtnMenu1: BtnIconLeft1 { + idc = 20; + y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "12 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + text = ""; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.9)"; + animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.8)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.5)"; + animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; + animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; + color[] = {1, 1, 1, 1}; + color2[] = {0,0,0, 1}; + colorBackgroundFocused[] = {1,1,1,1}; + colorBackground[] = {1,1,1,1}; + colorbackground2[] = {1,1,1,1}; + colorDisabled[] = {0.5,0.5,0.5,0.8}; + colorFocused[] = {0,0,0,1}; + periodFocus = 1; + periodOver = 1; + action = ""; + }; + class BtnMenu2: BtnMenu1 { + idc = 21; + y = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + class BtnMenu3: BtnMenu1 { + idc = 22; + y = "7.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + class BtnMenu4: BtnMenu1 { + idc = 23; + y = "8.7 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text =""; + }; + class BtnMenu5: BtnMenu1 { + idc = 24; + y = "9.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + class BtnMenu6: BtnMenu1 { + idc = 25; + y = "10.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + class BtnMenu7: BtnMenu1 { + idc = 26; + y = "12 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + class BtnMenu8: BtnMenu1 { + idc = 27; + y = "13.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + text = ""; + }; + // center + + class bodyImgBackground: ACE_gui_backgroundBase { + idc = -1; + x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "12.33 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; + colorBackground[] = {1,1,1,1}; + colorPicture[] = {1,1,1,1}; + colorText[] = {1,1,1,1}; + text = QUOTE(PATHTOF(data\body_background.paa)); + }; + class bodyImgHead: bodyImgBackground { + idc = 50; + x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "3.73 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "12.33 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; + colorBackground[] = {1,1,1,1}; + colorPicture[] = {1,1,1,1}; + colorText[] = {1,1,1,1}; + text = QUOTE(PATHTOF(data\body_head.paa)); + }; + + class bodyImgTorso: bodyImgHead { + idc = 51; + text = QUOTE(PATHTOF(data\body_torso.paa)); + }; + class bodyImgArms_l: bodyImgHead { + idc = 52; + text = QUOTE(PATHTOF(data\body_arm_left.paa)); + }; + class bodyImgArms_r: bodyImgHead { + idc = 53; + text = QUOTE(PATHTOF(data\body_arm_right.paa)); + }; + class bodyImgLegs_l: bodyImgHead { + idc = 54; + text = QUOTE(PATHTOF(data\body_leg_left.paa)); + }; + class bodyImgLegs_r: bodyImgHead { + idc = 55; + text = QUOTE(PATHTOF(data\body_leg_right.paa)); + }; + + + class selectHead: ACE_gui_buttonBase { + idc = 301; + x = "18.8 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "3.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "1.4 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.1)"; + animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; + action = QUOTE(GVAR(selectedBodyPart) = 'head'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + }; + class selectTorso : selectHead { + idc = 302; + x = "18.4 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "2.2 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "4.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + action = QUOTE(GVAR(selectedBodyPart) = 'body'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + }; + class selectLeftArm: selectHead{ + idc = 303; + x = "17.4 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "5.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "4.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + action = QUOTE(GVAR(selectedBodyPart) = 'hand_r'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + }; + class selectRightArm: selectLeftArm{ + idc = 304; + x = "20.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(GVAR(selectedBodyPart) = 'hand_l'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + }; + class selectLeftLeg :selectHead { + idc = 305; + x = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + action = QUOTE(GVAR(selectedBodyPart) = 'leg_r'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + }; + class selectRightLeg :selectLeftLeg { + idc = 306; + x = "19.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + action = QUOTE(GVAR(selectedBodyPart) = 'leg_l'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + }; + + + class TriageTextBottom: HeaderName { + idc = 2000; + x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "16.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + style = ST_CENTER; + colorText[] = {1, 1, 1.0, 1}; + colorBackground[] = {0,0.0,0.0,0.7}; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + }; + + // Right side + class InjuryList: ACE_gui_listBoxBase { + idc = 213; + x = "25.66 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "5.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; + rowHeight = 0.03; + colorBackground[] = {0, 0, 0, 0.2}; + colorText[] = {1,1, 1, 1.0}; + colorScrollbar[] = {0.95, 0.95, 0.95, 1}; + colorSelect[] = {0.95, 0.95, 0.95, 1}; + colorSelect2[] = {0.95, 0.95, 0.95, 1}; + colorSelectBackground[] = {0, 0, 0, 0.0}; + colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.5}; + }; + // bottom + + class ActivityLogHeader: CatagoryLeft { + x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "18.6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + style = ST_CENTER; + colorText[] = {0.6, 0.7, 1.0, 1}; + colorBackground[] = {0,0,0,0}; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = $STR_ACE_UI_ACTIVITY_LOG; + }; + class QuickViewHeader: ActivityLogHeader { + x = "19.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + text = $STR_ACE_UI_QUICK_VIEW; + }; + class LineBottomHeaders: Line { + y = "19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + }; + class ActivityLog: InjuryList { + idc = 214; + style = 16; + type = 102; + rows=1; + colorBackground[] = {0, 0, 0, 1}; + x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "(19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))"; + w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; + colorSelectBackground[] = {0, 0, 0, 0.0}; + colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; + columns[] = {0.0, 0.08}; + canDrag=true; + arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + drawSideArrows = 0; + idcLeft = -1; + idcRight = -1; + }; + + class QuikViewLog: InjuryList { + idc = 215; + style = 16; + type = 102; + rows=1; + colorBackground[] = {0, 0, 0, 1}; + x = "21.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "(19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))"; + w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; + colorSelectBackground[] = {0, 0, 0, 0.0}; + colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; + + columns[] = {0.0, 0.08}; + canDrag=true; + arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + drawSideArrows = 0; + idcLeft = -1; + idcRight = -1; + }; + + class selectTriageStatus: ACE_gui_buttonBase { + idc = 2001; + x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "16.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "12.33 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + style = ST_CENTER; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureOver = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; + animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; + action = QUOTE([] call FUNC(handleUI_dropDownTriageCard);); + }; + class selectTriageStatusNone: selectTriageStatus { + idc = 2002; + x = 0; + y = 0; + w = 0; + h = 0; + text = $STR_ACE_UI_TRIAGE_NONE; + style = ST_CENTER; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureOver = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)"; + action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),0)] call FUNC(setTriageStatus);); + }; + + class selectTriageStatusMinor: selectTriageStatus { + idc = 2003; + x = 0; + y = 0; + w = 0; + h = 0; + text = $STR_ACE_UI_TRIAGE_MINOR; + style = ST_CENTER; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + animTextureNormal = "#(argb,8,8,3)color(0,0.5,0,0.9)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0.5,0,0.9)"; + animTextureOver = "#(argb,8,8,3)color(0,0.5,0,0.9)"; + animTextureFocused = "#(argb,8,8,3)color(0,0.5,0,0.9)"; + animTexturePressed = "#(argb,8,8,3)color(0,0.5,0,0.9)"; + animTextureDefault = "#(argb,8,8,3)color(0,0.5,0,0.9)"; + action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),1)] call FUNC(setTriageStatus);); + }; + class selectTriageStatusDelayed: selectTriageStatus { + idc = 2004; + x = 0; + y = 0; + w = 0; + h = 0; + text = $STR_ACE_UI_TRIAGE_DELAYED; + style = ST_CENTER; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + animTextureNormal = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; + animTextureDisabled = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; + animTextureOver = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; + animTextureFocused = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; + animTexturePressed = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; + animTextureDefault = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; + action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),2)] call FUNC(setTriageStatus);); + }; + class selectTriageStatusImmediate: selectTriageStatus { + idc = 2005; + x = 0; + y = 0; + w = 0; + h = 0; + text = $STR_ACE_UI_TRIAGE_IMMEDIATE; + style = ST_CENTER; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + animTextureNormal = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; + animTextureDisabled = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; + animTextureOver = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; + animTextureFocused = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; + animTexturePressed = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; + animTextureDefault = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; + action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),3)] call FUNC(setTriageStatus);); + }; + class selectTriageStatusDeceased: selectTriageStatus { + idc = 2006; + x = 0; + y = 0; + w = 0; + h = 0; + text = $STR_ACE_UI_TRIAGE_DECEASED; + style = ST_CENTER; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureOver = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)"; + animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)"; + action = QUOTE([] call FUNC(handleUI_dropDownTriageCard); [ARR_2(GVAR(INTERACTION_TARGET),4)] call FUNC(setTriageStatus);); + }; + }; +}; \ No newline at end of file From c0fb2e1b65c7fe6aad102239bafb7493b8da8115 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 2 Aug 2015 12:15:26 -0500 Subject: [PATCH 09/78] Add Ear Ringing setting to module (Ref #1981) --- addons/common/stringtable.xml | 46 +++++++++++++++++++ addons/hearing/ACE_Settings.hpp | 2 + addons/hearing/CfgVehicles.hpp | 19 ++++++++ .../hearing/functions/fnc_moduleHearing.sqf | 5 ++ addons/hearing/stringtable.xml | 12 ++++- 5 files changed, 82 insertions(+), 2 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 6ed5e10d5a..36d1b2b51f 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -598,5 +598,51 @@ Następne urządzenie podręczne Procházet ruční zařízení + + Disabled + Zakázáno + Non + Deaktiviert + Disattivato + Wyłączone + Desativado + Откл. + Desactivado + + + Enabled + Zapnuto + Oui + Aktiviert + Attivato + Włączone + Ativado + Вкл. + Activado + + + Yes + Ja + Si + Tak + Ano + Oui + Да + Igen + Sim + Si + + + No + Nein + No + Nie + Ne + Non + Нет + Nem + Não + No + diff --git a/addons/hearing/ACE_Settings.hpp b/addons/hearing/ACE_Settings.hpp index c0f69dda65..867914b857 100644 --- a/addons/hearing/ACE_Settings.hpp +++ b/addons/hearing/ACE_Settings.hpp @@ -2,6 +2,8 @@ class ACE_Settings { class GVAR(EnableCombatDeafness) { value = 1; typeName = "BOOL"; + displayName = CSTRING(CombatDeafness_DisplayName); + description = CSTRING(CombatDeafness_Description); }; class GVAR(EarplugsVolume) { value = 0.5; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 1cf06910b0..414cb2b5ce 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -109,6 +109,25 @@ class CfgVehicles { typeName = "BOOL"; defaultValue = 1; }; + class DisableEarRinging { + displayName = CSTRING(DisableEarRinging); + typeName = "NUMBER"; + class values { + class DoNotForce { + default = 1; + name = CSTRING(DoNotForce); + value = -1; + }; + class NotDisabled { + name = ECSTRING(common,No); + value = 0; + }; + class IsDisabled { + name = ECSTRING(common,Yes); + value = 1; + }; + }; + }; }; class ModuleDescription { description = CSTRING(Module_Description); diff --git a/addons/hearing/functions/fnc_moduleHearing.sqf b/addons/hearing/functions/fnc_moduleHearing.sqf index 7b78ac581b..6ec0af0231 100644 --- a/addons/hearing/functions/fnc_moduleHearing.sqf +++ b/addons/hearing/functions/fnc_moduleHearing.sqf @@ -16,4 +16,9 @@ if !(_activated) exitWith {}; [_logic, QGVAR(enableCombatDeafness), "EnableCombatDeafness"] call EFUNC(common,readSettingFromModule); +// Do Not Force - read module setting only non-default is set due to using SCALAR +if ((_logic getVariable "DisableEarRinging") != -1) then { + [_logic, QGVAR(DisableEarRinging), "DisableEarRinging"] call EFUNC(common,readSettingFromModule); +}; + diag_log text "[ACE]: Hearing Module Initialized."; diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index dbd063b752..ca4a5e7f83 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -126,7 +126,7 @@ Ativar surdez em combate? - Enable combat deafness? + Reduces the hearing ability as the player takes hearing damage Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów Habilita la sordera de combate Aktiviere Taubheit im Gefecht? @@ -134,11 +134,19 @@ Ativar surdez em combate? - + Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu. Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet. Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat. Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva. + + Do Not Force + Nie wymuszaj + No forzar + Nicht erzwingen + Nevynucovat + Não forçar + \ No newline at end of file From f99e8ba5bcfb837ec695ecf6010d1c432215faa9 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 2 Aug 2015 12:30:35 -0500 Subject: [PATCH 10/78] Don't allow forcing the tinnitus effect --- addons/hearing/CfgVehicles.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 414cb2b5ce..cf9a48b982 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -118,10 +118,12 @@ class CfgVehicles { name = CSTRING(DoNotForce); value = -1; }; + /* Probably don't want to allow forcing ear ringing for people who have serious problems with the effect class NotDisabled { name = ECSTRING(common,No); value = 0; }; + */ class IsDisabled { name = ECSTRING(common,Yes); value = 1; From fa49842c53e72cc87d38a468af6611f2af2d522b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 3 Aug 2015 19:57:49 -0500 Subject: [PATCH 11/78] #1866 - Restore weapon mode after treatment --- addons/medical/functions/fnc_treatment.sqf | 2 +- addons/medical/functions/fnc_treatment_failure.sqf | 11 ++++++++--- addons/medical/functions/fnc_treatment_success.sqf | 11 ++++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index 18f3406df2..b8498f756b 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -156,7 +156,7 @@ if (_caller == _target) then { _callerAnim = [getText (_config >> "animationCallerSelf"), getText (_config >> "animationCallerSelfProne")] select (stance _caller == "PRONE"); }; -_caller setvariable [QGVAR(selectedWeaponOnTreatment), currentWeapon _caller]; +_caller setvariable [QGVAR(selectedWeaponOnTreatment), (weaponState _caller)]; // Cannot use secondairy weapon for animation if (currentWeapon _caller == secondaryWeapon _caller) then { diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf index dd49729686..1edc0a59b1 100644 --- a/addons/medical/functions/fnc_treatment_failure.sqf +++ b/addons/medical/functions/fnc_treatment_failure.sqf @@ -44,9 +44,14 @@ if (vehicle _caller == _caller) then { }; _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil]; -_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), ""]); -if (_weaponSelect != "") then { - _caller selectWeapon _weaponSelect; +_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), []]); +if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") || {_previousWeapon in (weapons _caller)}}) then { + for "_index" from 0 to 99 do { + _caller action ["SwitchWeapon", _caller, _caller, _index]; + //Just check weapon, muzzle and mode (ignore ammo in case they were reloading) + if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {}; + if ((weaponState _caller) isEqualTo ["","","","",0]) exitWith {ERROR("weaponState not found");}; + }; } else { _caller action ["SwitchWeapon", _caller, _caller, 99]; }; diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index 19c12d9299..58b567eaf8 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -42,9 +42,14 @@ if (vehicle _caller == _caller) then { }; _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil]; -_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), ""]); -if (_weaponSelect != "") then { - _caller selectWeapon _weaponSelect; +_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), []]); +if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") || {_previousWeapon in (weapons _caller)}}) then { + for "_index" from 0 to 99 do { + _caller action ["SwitchWeapon", _caller, _caller, _index]; + //Just check weapon, muzzle and mode (ignore ammo in case they were reloading) + if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {}; + if ((weaponState _caller) isEqualTo ["","","","",0]) exitWith {ERROR("weaponState not found");}; + }; } else { _caller action ["SwitchWeapon", _caller, _caller, 99]; }; From 710135ae3f150dcb7a699f8c645ed2ec256f10bd Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 3 Aug 2015 21:49:16 -0500 Subject: [PATCH 12/78] Opps --- addons/medical/functions/fnc_treatment_failure.sqf | 4 ++-- addons/medical/functions/fnc_treatment_success.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf index 1edc0a59b1..8a5d784301 100644 --- a/addons/medical/functions/fnc_treatment_failure.sqf +++ b/addons/medical/functions/fnc_treatment_failure.sqf @@ -45,11 +45,11 @@ if (vehicle _caller == _caller) then { _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil]; _weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), []]); -if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") || {_previousWeapon in (weapons _caller)}}) then { +if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") && {_previousWeapon in (weapons _caller)}}) then { for "_index" from 0 to 99 do { _caller action ["SwitchWeapon", _caller, _caller, _index]; //Just check weapon, muzzle and mode (ignore ammo in case they were reloading) - if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {}; + if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {TRACE_1("Restoring", (weaponState _caller));}; if ((weaponState _caller) isEqualTo ["","","","",0]) exitWith {ERROR("weaponState not found");}; }; } else { diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index 58b567eaf8..bddf2b0761 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -43,11 +43,11 @@ if (vehicle _caller == _caller) then { _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil]; _weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), []]); -if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") || {_previousWeapon in (weapons _caller)}}) then { +if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") && {_previousWeapon in (weapons _caller)}}) then { for "_index" from 0 to 99 do { _caller action ["SwitchWeapon", _caller, _caller, _index]; //Just check weapon, muzzle and mode (ignore ammo in case they were reloading) - if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {}; + if (((weaponState _caller) select [0,3]) isEqualTo (_weaponSelect select [0,3])) exitWith {TRACE_1("Restoring", (weaponState _caller));}; if ((weaponState _caller) isEqualTo ["","","","",0]) exitWith {ERROR("weaponState not found");}; }; } else { From 2423798753571dacb663b1f396d8f32fec8f72c0 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Tue, 4 Aug 2015 05:11:45 +0200 Subject: [PATCH 13/78] Updated parameterization in Vehiclelock module. --- .../functions/fnc_addKeyForVehicle.sqf | 2 +- .../functions/fnc_getVehicleSideKey.sqf | 2 +- .../functions/fnc_handleVehicleInitPost.sqf | 17 ++++++++++------- .../functions/fnc_hasKeyForVehicle.sqf | 2 +- addons/vehiclelock/functions/fnc_lockpick.sqf | 19 +++++++------------ .../vehiclelock/functions/fnc_moduleInit.sqf | 5 +++-- .../vehiclelock/functions/fnc_moduleSync.sqf | 9 ++++++--- .../functions/fnc_onOpenInventory.sqf | 2 +- .../functions/fnc_serverSetupCustomKeyEH.sqf | 2 +- .../functions/fnc_setVehicleLockEH.sqf | 2 +- 10 files changed, 32 insertions(+), 30 deletions(-) diff --git a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf index d683073286..1adec69413 100644 --- a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf +++ b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf @@ -20,7 +20,7 @@ private ["_previousMags","_newMags","_keyMagazine","_keyName"]; -PARAMS_3(_unit,_veh,_useCustom); +params ["_unit", "_veh", "_useCustom"]; if (isNull _unit) exitWith {ERROR("null unit");}; if (isNull _veh) exitWith {ERROR("null vehicle");}; diff --git a/addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf b/addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf index 999f471ac3..e981a16842 100644 --- a/addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf +++ b/addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf @@ -17,7 +17,7 @@ private ["_vehConfigSide","_vehSide","_returnValue"]; -PARAMS_1(_veh); +params ["_veh"]; if (isNull _veh) exitWith {ERROR("null vehicle"); "error"}; diff --git a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf index 5a2bc3f7bd..f252c25c93 100644 --- a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf +++ b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf @@ -16,23 +16,26 @@ */ #include "script_component.hpp" -PARAMS_1(_vehicle); - if (!isServer) exitWith {}; +params ["_vehicle"]; + [{ //If the module wasn't placed, just exit (needs to be in wait because objectInitEH is before moduleInit) if (GVAR(VehicleStartingLockState) == -1) exitWith {}; + private ["_lock"]; - PARAMS_1(_vehicle); + + params ["_vehicle"]; + if ((_vehicle isKindOf "Car") || {_vehicle isKindOf "Tank"} || {_vehicle isKindOf "Helicopter"}) then { //set lock state (eliminates the ambigious 1-"Default" and 3-"Locked for Player" states) _lock = switch (GVAR(VehicleStartingLockState)) do { - case (0): {(locked _vehicle) in [2, 3]}; - case (1):{true}; - case (2):{false}; + case (0): { (locked _vehicle) in [2, 3] }; + case (1): { true }; + case (2): { false }; }; - if (((_lock) && {(locked _vehicle) != 2}) || {(!_lock) && {(locked _vehicle) != 0}}) then { + if ((_lock && {(locked _vehicle) != 2}) || {!_lock && {(locked _vehicle) != 0}}) then { TRACE_3("Setting Lock State",_lock,(typeOf _vehicle),_vehicle); ["VehicleLock_SetVehicleLock", [_vehicle], [_vehicle, _lock]] call EFUNC(common,targetEvent); }; diff --git a/addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf b/addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf index 779f4a363e..6b91c1cc0d 100644 --- a/addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf +++ b/addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf @@ -18,7 +18,7 @@ private ["_returnValue","_sideKeyName","_customKeys"]; -PARAMS_2(_unit,_veh); +params ["_unit", "_veh"]; if (isNull _unit) exitWith {ERROR("null unit"); false}; if (isNull _veh) exitWith {ERROR("null vehicle"); false}; diff --git a/addons/vehiclelock/functions/fnc_lockpick.sqf b/addons/vehiclelock/functions/fnc_lockpick.sqf index 613a7b35dc..75a7f59240 100644 --- a/addons/vehiclelock/functions/fnc_lockpick.sqf +++ b/addons/vehiclelock/functions/fnc_lockpick.sqf @@ -22,7 +22,7 @@ private ["_vehLockpickStrenth","_condition","_returnValue"]; -PARAMS_3(_unit,_veh,_funcType); +params ["_unit", "_veh", "_funcType"]; if (isNull _unit) exitWith {ERROR("null unit"); false}; if (isNull _veh) exitWith {ERROR("null vehicle"); false}; @@ -41,25 +41,20 @@ if (_vehLockpickStrenth < 0) exitWith {false}; //Condition check for progressBar _condition = { - PARAMS_1(_args); - EXPLODE_2_PVT(_args,_unit,_veh); + params ["_args"]; + _args params ["_args", "_unit", "_veh"]; ((_unit distance _veh) < 5) && {(speed _veh) < 0.1} }; if (!([[_unit, _veh]] call _condition)) exitWith {false}; -_returnValue = false; -switch (true) do { -case (_funcType == "canLockpick"): { - _returnValue = true; - }; -case (_funcType == "startLockpick"): { +_returnValue = _funcType in ["canLockpick", "startLockpick", "finishLockpick"]; +switch (_funcType) do { + case "startLockpick": { [_vehLockpickStrenth, [_unit, _veh, "finishLockpick"], {(_this select 0) call FUNC(lockpick)}, {}, (localize LSTRING(Action_LockpickInUse)), _condition] call EFUNC(common,progressBar); - _returnValue = true; }; -case (_funcType == "finishLockpick"): { + case "finishLockpick": { ["VehicleLock_SetVehicleLock", [_veh], [_veh, false]] call EFUNC(common,targetEvent); - _returnValue = true; }; default { ERROR("bad function type"); diff --git a/addons/vehiclelock/functions/fnc_moduleInit.sqf b/addons/vehiclelock/functions/fnc_moduleInit.sqf index 510b8ec7be..2b0889b814 100644 --- a/addons/vehiclelock/functions/fnc_moduleInit.sqf +++ b/addons/vehiclelock/functions/fnc_moduleInit.sqf @@ -17,10 +17,11 @@ */ #include "script_component.hpp" -PARAMS_3(_logic,_syncedUnits,_activated); +if (!isServer) exitWith {}; + +params ["_logic", "_syncedUnits", "_activated"]; if (!_activated) exitWith {WARNING("Vehicle Lock Init Module - placed but not active");}; -if (!isServer) exitWith {}; //Set the GVAR for default lockpick strength [_logic, QGVAR(DefaultLockpickStrength), "DefaultLockpickStrength"] call EFUNC(common,readSettingFromModule); diff --git a/addons/vehiclelock/functions/fnc_moduleSync.sqf b/addons/vehiclelock/functions/fnc_moduleSync.sqf index ede20e3196..a43e462113 100644 --- a/addons/vehiclelock/functions/fnc_moduleSync.sqf +++ b/addons/vehiclelock/functions/fnc_moduleSync.sqf @@ -17,14 +17,17 @@ */ #include "script_component.hpp" -PARAMS_3(_logic,_syncedObjects,_activated); +if (!isServer) exitWith {}; + +params ["_logic", "_syncedObjects", "_activated"]; if !(_activated) exitWith {WARNING("Vehicle Lock Sync Module - placed but not active");}; -if (!isServer) exitWith {}; [{ private ["_listOfVehicles"]; - PARAMS_1(_syncedObjects); + + params ["_syncedObjects"]; + _listOfVehicles = []; { if ((_x isKindOf "Car") || (_x isKindOf "Tank") || (_x isKindOf "Helicopter")) then { diff --git a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf index 8199f4b850..0105f5ae3f 100644 --- a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf +++ b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf @@ -16,7 +16,7 @@ */ #include "script_component.hpp" -PARAMS_2(_unit,_container); +params ["_unit", "_container"]; //Only check for player: if (_unit != ace_player) exitWith {false}; diff --git a/addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf b/addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf index 9d8a396e31..6f1c2ffdbe 100644 --- a/addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf +++ b/addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf @@ -18,7 +18,7 @@ private ["_currentKeys"]; -PARAMS_2(_veh,_key); +params ["_veh", "_key"]; if (!isServer) exitWith {ERROR("only run on server");}; if (isNull _veh) exitWith {ERROR("null vehicle");}; diff --git a/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf b/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf index cb51cb27a8..611ce76e30 100644 --- a/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf +++ b/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf @@ -18,7 +18,7 @@ private ["_lockNumber"]; -PARAMS_2(_veh,_isLocked); +params ["_veh", "_isLocked"]; _lockNumber = if (_isLocked) then {2} else {0}; TRACE_2("Setting Lock State", _veh, _lockNumber); From ade6c99daca81f8b7e673b1aab14a93430c68205 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Tue, 4 Aug 2015 04:24:30 +0200 Subject: [PATCH 14/78] Updated parameterization in Viewdistance module. --- addons/viewdistance/functions/fnc_adaptViewDistance.sqf | 4 ++-- addons/viewdistance/functions/fnc_changeViewDistance.sqf | 2 +- addons/viewdistance/functions/fnc_initModule.sqf | 2 +- addons/viewdistance/functions/fnc_returnObjectCoeff.sqf | 8 ++++---- addons/viewdistance/functions/fnc_returnValue.sqf | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf index 2ef4b84ae6..ca03758df5 100644 --- a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf @@ -17,10 +17,10 @@ #include "script_component.hpp" -PARAMS_1(_show_prompt); - private["_land_vehicle","_air_vehicle"]; +params ["_show_prompt"]; + if (!GVAR(enabled) || isNull ACE_player) exitWith {}; _land_vehicle = (vehicle ACE_player) isKindOf "LandVehicle"; diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 9060254c60..34a3f5ba46 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -20,7 +20,7 @@ private ["_text","_new_view_distance","_view_distance_limit","_object_view_distance_coeff"]; -PARAMS_2(_index_requested,_show_prompt); +params ["_index_requested", "_show_prompt"]; _new_view_distance = [_index_requested] call FUNC(returnValue); // changes the setting index into an actual view distance value _object_view_distance_coeff = [GVAR(objectViewDistanceCoeff)] call FUNC(returnObjectCoeff); // changes the setting index into a coefficient. diff --git a/addons/viewdistance/functions/fnc_initModule.sqf b/addons/viewdistance/functions/fnc_initModule.sqf index 7569383d0c..26072e5b5f 100644 --- a/addons/viewdistance/functions/fnc_initModule.sqf +++ b/addons/viewdistance/functions/fnc_initModule.sqf @@ -17,7 +17,7 @@ if (!isServer) exitWith {}; -PARAMS_3(_logic,_units,_activated); +params ["_logic", "_units", "_activated"]; if (!_activated) exitWith { diag_log text "[ACE]: View Distance Limit Module is placed but NOT active."; diff --git a/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf b/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf index 145b8ae9e6..71a23d7b54 100644 --- a/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf +++ b/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf @@ -1,7 +1,7 @@ /* * Author: Winter * Returns the object view distance coefficient according to the given index - * + * * * Arguments: * 0: Object View Distance setting Index @@ -17,10 +17,10 @@ #include "script_component.hpp" -PARAMS_1(_index); - private ["_return"]; +params ["_index"]; + _return = switch (_index) do { case 0: {0.00}; // Off case 1: {0.20}; // Very Low @@ -31,4 +31,4 @@ _return = switch (_index) do { default {0.50}; // something broke if this returns }; -_return; \ No newline at end of file +_return; diff --git a/addons/viewdistance/functions/fnc_returnValue.sqf b/addons/viewdistance/functions/fnc_returnValue.sqf index fb449cf702..c5ff3b12bd 100644 --- a/addons/viewdistance/functions/fnc_returnValue.sqf +++ b/addons/viewdistance/functions/fnc_returnValue.sqf @@ -17,10 +17,10 @@ #include "script_component.hpp" -PARAMS_1(_index); - private ["_return"]; +params ["_index"] + _return = switch (_index) do { case 0: {-1}; case 1: {500}; @@ -40,4 +40,4 @@ _return = switch (_index) do { default {1000}; }; -_return; \ No newline at end of file +_return; From d51d87ba2cb963db971285f6af7a32125a4f198a Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Tue, 4 Aug 2015 03:08:21 +0200 Subject: [PATCH 15/78] Updated parameterization in Weaponselect module. --- .../fnc_countMagazinesForGrenadeMuzzle.sqf | 4 ++-- .../fnc_displayGrenadeTypeAndNumber.sqf | 6 +++--- .../functions/fnc_findNextGrenadeMagazine.sqf | 18 ++++++++++++----- .../functions/fnc_findNextGrenadeMuzzle.sqf | 18 ++++++++++++----- .../functions/fnc_fireSmokeLauncher.sqf | 14 +++++++++++-- .../functions/fnc_getSelectedGrenade.sqf | 12 ++++++++++- .../functions/fnc_playChangeFiremodeSound.sqf | 15 ++++++++++++-- .../functions/fnc_putWeaponAway.sqf | 6 +++--- .../functions/fnc_selectGrenadeAll.sqf | 5 ++--- .../functions/fnc_selectGrenadeFrag.sqf | 4 ++-- .../functions/fnc_selectGrenadeOther.sqf | 4 ++-- .../functions/fnc_selectWeaponMode.sqf | 7 ++++--- .../functions/fnc_selectWeaponMuzzle.sqf | 7 ++++--- .../functions/fnc_selectWeaponVehicle.sqf | 16 +++++++++++++-- .../functions/fnc_setNextGrenadeMuzzle.sqf | 8 ++++---- .../functions/fnc_throwGrenade.sqf | 20 +++++++++++++------ 16 files changed, 116 insertions(+), 48 deletions(-) diff --git a/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf index f45ed0ea57..44a60b8f13 100644 --- a/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf @@ -12,10 +12,10 @@ */ #include "script_component.hpp" -PARAMS_2(_unit,_muzzle); - private ["_uniformMags", "_vestMags", "_backpackMags", "_numberOfMagazines", "_magazineClasses", "_firstMagazine"]; +params ["_unit", "_muzzle"]; + _uniformMags = getMagazineCargo uniformContainer _unit; _vestMags = getMagazineCargo vestContainer _unit; _backpackMags = getMagazineCargo backpackContainer _unit; diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf index 81cb57d9f3..e9ae53f3b3 100644 --- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf +++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf @@ -12,11 +12,11 @@ */ #include "script_component.hpp" +private ["_color", "_name", "_text", "_picture"]; + if !(GVAR(DisplayText)) exitwith {}; -PARAMS_2(_magazine,_numberofMagazines); - -private ["_color", "_name", "_text", "_picture"]; +params ["_magazine", "_numberofMagazines"]; _color = [[1,0,0], [1,1,1]] select (_numberofMagazines > 0); _name = getText (configFile >> "CfgMagazines" >> _magazine >> "displayNameShort"); diff --git a/addons/weaponselect/functions/fnc_findNextGrenadeMagazine.sqf b/addons/weaponselect/functions/fnc_findNextGrenadeMagazine.sqf index 65d62826e5..244f85b5ab 100644 --- a/addons/weaponselect/functions/fnc_findNextGrenadeMagazine.sqf +++ b/addons/weaponselect/functions/fnc_findNextGrenadeMagazine.sqf @@ -1,17 +1,25 @@ -// by commy2 +/* + * Author: commy2 + * + * Find the next Grenade Magazine. + * + * Argument: + * 0: Grenade Type ("All", "Frag", "NonFrag") + * + * Return value: + * Magazine classname + */ #include "script_component.hpp" -private ["_allMags", "_allMuzzles", "_magazines"]; +private ["_allMags", "_allMuzzles", "_magazines", "_start", "_index", "_nextMagazine"]; -PARAMS_1(_type); //"All", "Frag" or "NonFrag" +params ["_type"]; _allMags = missionNamespace getVariable [format [QGVAR(%1Magazines), _type], []]; _allMuzzles = missionNamespace getVariable [format [QGVAR(%1Muzzles), _type], []]; _magazines = magazines ACE_player; -private ["_start", "_index", "_nextMagazine"]; - _start = [GVAR(CurrentGrenadeMuzzleOther), GVAR(CurrentGrenadeMuzzleFrag)] select GVAR(CurrentGrenadeMuzzleIsFrag); _index = _allMuzzles find _start; diff --git a/addons/weaponselect/functions/fnc_findNextGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_findNextGrenadeMuzzle.sqf index 0491afa413..39c4e84d1c 100644 --- a/addons/weaponselect/functions/fnc_findNextGrenadeMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_findNextGrenadeMuzzle.sqf @@ -1,17 +1,25 @@ -// by commy2 +/* + * Author: commy2 + * + * Find the next Grenade Muzzle. + * + * Argument: + * 0: Grenade Type ("All", "Frag", "NonFrag") + * + * Return value: + * Class name of next throw muzzle + */ #include "script_component.hpp" -private ["_allMags", "_allMuzzles", "_magazines"]; +private ["_allMags", "_allMuzzles", "_magazines", "_start", "_index", "_nextMuzzle"]; -PARAMS_1(_type); //"All", "Frag" or "NonFrag" +params ["_type"]; _allMags = missionNamespace getVariable [format [QGVAR(%1Magazines), _type], []]; _allMuzzles = missionNamespace getVariable [format [QGVAR(%1Muzzles), _type], []]; _magazines = magazines ACE_player; -private ["_start", "_index", "_nextMuzzle"]; - _start = [GVAR(CurrentGrenadeMuzzleOther), GVAR(CurrentGrenadeMuzzleFrag)] select GVAR(CurrentGrenadeMuzzleIsFrag); _index = _allMuzzles find _start; diff --git a/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf b/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf index 37e2b1c873..9e9369ce26 100644 --- a/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf +++ b/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf @@ -1,9 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * + * Fire Vehicle Smoke Launcher. + * + * Argument: + * 0: Vehicle + * + * Return value: + * None + */ #include "script_component.hpp" private ["_turret", "_weapons"]; -PARAMS_1(_vehicle); +params ["_vehicle"]; _turret = [_vehicle] call EFUNC(common,getTurretCommander); diff --git a/addons/weaponselect/functions/fnc_getSelectedGrenade.sqf b/addons/weaponselect/functions/fnc_getSelectedGrenade.sqf index 5e8c3f920f..53fabde032 100644 --- a/addons/weaponselect/functions/fnc_getSelectedGrenade.sqf +++ b/addons/weaponselect/functions/fnc_getSelectedGrenade.sqf @@ -1,4 +1,14 @@ -// by commy2 +/* + * Author: commy2 + * + * Returns the selected Grenade Muzzle. + * + * Argument: + * None + * + * Return value: + * Class name of selected throw muzzle. + */ #include "script_component.hpp" [GVAR(CurrentGrenadeMuzzleOther), GVAR(CurrentGrenadeMuzzleFrag)] select GVAR(CurrentGrenadeMuzzleIsFrag) diff --git a/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf b/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf index 45e84d631d..a64203fda8 100644 --- a/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf +++ b/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf @@ -1,9 +1,20 @@ -// by commy2 +/* + * Author: commy2 + * + * Play the change firemode sound for specified weapon at units position. + * + * Argument: + * 0: Unit + * 1: Weapon + * + * Return value: + * None + */ #include "script_component.hpp" private ["_sound"]; -PARAMS_2(_unit,_weapon); +params ["_unit", "_weapon"]; _sound = getArray (configFile >> "CfgWeapons" >> _weapon >> "changeFiremodeSound"); diff --git a/addons/weaponselect/functions/fnc_putWeaponAway.sqf b/addons/weaponselect/functions/fnc_putWeaponAway.sqf index a4cd743bfb..4c55bd04fc 100644 --- a/addons/weaponselect/functions/fnc_putWeaponAway.sqf +++ b/addons/weaponselect/functions/fnc_putWeaponAway.sqf @@ -4,14 +4,14 @@ * The unit will put its current weapon away. * * Argument: - * 0: What unit should put the current weapon on back? (Object) + * 0: Unit * * Return value: - * None. + * None */ #include "script_component.hpp" -PARAMS_1(_unit); +params ["_unit"]; [_unit] call EFUNC(common,fixLoweredRifleAnimation); diff --git a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf index 69ea5cdf99..c5a8032d84 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf @@ -4,7 +4,7 @@ * Cycle through all grenades. * * Argument: - * None + * 0: Unit * * Return value: * None @@ -13,13 +13,12 @@ private ["_text", "_nextMuzzle"]; -PARAMS_1(_unit); +params ["_unit"]; _nextMuzzle = ["All"] call FUNC(findNextGrenadeMuzzle); if (_nextMuzzle != "") then { - private ["_magazines", "_magazine", "_count", "_return"]; _magazines = GVAR(AllMagazines) select (GVAR(AllMuzzles) find _nextMuzzle); reverse _magazines; diff --git a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf index 91d0023e47..d1dc4e3442 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf @@ -4,7 +4,7 @@ * Cycle through frags. * * Argument: - * None + * 0: Unit * * Return value: * None @@ -13,7 +13,7 @@ private ["_text", "_nextMuzzle"]; -PARAMS_1(_unit); +params ["_unit"]; _nextMuzzle = ["Frag"] call FUNC(findNextGrenadeMuzzle); diff --git a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf index 28cc0e74d8..5c7b712aa8 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf @@ -4,7 +4,7 @@ * Cycle through non explosive grenades. * * Argument: - * None + * 0: Unit * * Return value: * None @@ -13,7 +13,7 @@ private ["_nextMuzzle", "_text"]; -PARAMS_1(_unit); +params ["_unit"]; _nextMuzzle = ["NonFrag"] call FUNC(findNextGrenadeMuzzle); diff --git a/addons/weaponselect/functions/fnc_selectWeaponMode.sqf b/addons/weaponselect/functions/fnc_selectWeaponMode.sqf index 012bf94898..37f4a125e0 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponMode.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponMode.sqf @@ -4,14 +4,15 @@ * The player will select the specified weapon or will change to the next firing mode if the weapon was already selected. * * Argument: - * 0: A weapon (String) + * 0: Unit + * 1: Weapon * * Return value: - * None. + * None */ #include "script_component.hpp" -PARAMS_2(_unit,_weapon); +params ["_unit", "_weapon"]; if (_weapon == "") exitWith {}; diff --git a/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf b/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf index 67e63cd830..11c360817e 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf @@ -4,14 +4,15 @@ * The player will select the specified weapon and change to the first additional muzzle. E.g. the grenade launcher of a assault rifle. * * Argument: - * 0: A weapon (String) + * 0: Unit + * 1: Weapon * * Return value: - * None. + * None */ #include "script_component.hpp" -PARAMS_2(_unit,_weapon); +params ["_unit", "_weapon"]; if (_weapon == "") exitWith {}; diff --git a/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf b/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf index 9507c23a30..952b28c5ef 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf @@ -1,7 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * + * Select weapon for unit in vehicle. + * + * Argument: + * 0: Unit + * 1: Vehicle + * 2: Weapon index + * + * Return value: + * None + */ #include "script_component.hpp" -PARAMS_3(_unit,_vehicle,_index); +params ["_unit", "_vehicle", "_index"]; private "_turret"; _turret = [_unit] call EFUNC(common,getTurretIndex); diff --git a/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf index 4bf970fab1..f89b690e5e 100644 --- a/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf @@ -4,18 +4,18 @@ * Select the next grenade muzzle to throw. * * Argument: - * muzzle name + * 0: Unit + * 1: Muzzlename * * Return value: * None - * */ #include "script_component.hpp" -PARAMS_2(_unit,_muzzle); - private ["_uniformMags", "_vestMags", "_backpackMags", "_i", "_uniformMagsToRemove", "_vestMagsToRemove", "_backpackMagsToRemove", "_firstMagazine", "_throwMuzzleNames"]; +params ["_unit", "_muzzle"]; + _uniformMags = getMagazineCargo uniformContainer _unit; _vestMags = getMagazineCargo vestContainer _unit; _backpackMags = getMagazineCargo backpackContainer _unit; diff --git a/addons/weaponselect/functions/fnc_throwGrenade.sqf b/addons/weaponselect/functions/fnc_throwGrenade.sqf index ab06fd5b5d..2dc8ddf2f8 100644 --- a/addons/weaponselect/functions/fnc_throwGrenade.sqf +++ b/addons/weaponselect/functions/fnc_throwGrenade.sqf @@ -1,11 +1,19 @@ -// by commy2 +/* + * Author: commy2 + * + * Display Grenade information on grenade throw. + * + * Argument: + * 0: Unit + * 1: Weapon + * 2: Magazine + * + * Return value: + * None + */ #include "script_component.hpp" -private ["_unit","_weapon","_magazine"]; - -_unit = _this select 0; -_weapon = _this select 1; -_magazine = _this select 5; +params ["_unit", "_weapon", "_magazine"]; if (_weapon != "Throw") exitWith {}; From f5a497332a425932e84c993676440bfb686a36e8 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Tue, 4 Aug 2015 01:55:09 +0200 Subject: [PATCH 16/78] Updated parameterization in Winddeflection module. --- addons/winddeflection/functions/fnc_handleFired.sqf | 6 ++---- addons/winddeflection/functions/fnc_initModuleSettings.sqf | 5 +---- .../winddeflection/functions/fnc_updateTrajectoryPFH.sqf | 7 ++++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/addons/winddeflection/functions/fnc_handleFired.sqf b/addons/winddeflection/functions/fnc_handleFired.sqf index d3f9da8153..6c668a8033 100644 --- a/addons/winddeflection/functions/fnc_handleFired.sqf +++ b/addons/winddeflection/functions/fnc_handleFired.sqf @@ -21,9 +21,7 @@ */ #include "script_component.hpp" -private ["_unit", "_bullet"]; -_unit = _this select 0; -_bullet = _this select 6; +params ["_unit", "", "", "", "_ammo", "", "_bullet"]; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false] && (_bullet isKindOf "BulletBase") && (_unit isKindOf "Man")) exitWith {false}; @@ -34,6 +32,6 @@ if (!((_bullet isKindOf "BulletBase") || (_bullet isKindOf "GrenadeBase"))) exit if (_unit distance ACE_player > GVAR(simulationRadius)) exitWith {false}; if (!([_unit] call EFUNC(common,isPlayer))) exitWith {false}; -GVAR(trackedBullets) pushBack [_bullet, getNumber(configFile >> "cfgAmmo" >> (_this select 4) >> "airFriction")]; +GVAR(trackedBullets) pushBack [_bullet, getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction")]; true; \ No newline at end of file diff --git a/addons/winddeflection/functions/fnc_initModuleSettings.sqf b/addons/winddeflection/functions/fnc_initModuleSettings.sqf index 40be14a2b2..037ce15c47 100644 --- a/addons/winddeflection/functions/fnc_initModuleSettings.sqf +++ b/addons/winddeflection/functions/fnc_initModuleSettings.sqf @@ -15,10 +15,7 @@ #include "script_component.hpp" -private ["_logic", "_units", "_activated"]; -_logic = _this select 0; -_units = _this select 1; -_activated = _this select 2; +params ["_logic", "_units", "_activated"]; if !(_activated) exitWith {}; diff --git a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf index 23d0be6b79..baff39516d 100644 --- a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf +++ b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf @@ -18,11 +18,12 @@ [{ // BEGIN_COUNTER(pfeh); - private["_accel", "_accelRef", "_bulletSpeed", "_bulletVelocity", "_deleted", "_deltaT", "_drag", "_dragRef", "_isWind", "_lastTime", "_trueSpeed", "_trueVelocity"]; + private["_accel", "_accelRef", "_bulletSpeed", "_bulletVelocity", "_deleted", "_deltaT", "_drag", "_dragRef", "_isWind", "_trueSpeed", "_trueVelocity"]; - _lastTime = (_this select 0) select 0; + params ["_args"]; + _args params ["_lastTime"]; _deltaT = ACE_time - _lastTime; - (_this select 0) set [0, ACE_time]; + _args set [0, ACE_time]; _deleted = 0; _isWind = (vectorMagnitude ACE_wind > 0); From 820d1c50a53ed7b1bcb8351c4c5bc86bad17826c Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Wed, 5 Aug 2015 00:13:50 +0200 Subject: [PATCH 17/78] Small correction --- .../functions/fnc_displayGrenadeTypeAndNumber.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf index e9ae53f3b3..19120ce9cd 100644 --- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf +++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf @@ -12,10 +12,10 @@ */ #include "script_component.hpp" -private ["_color", "_name", "_text", "_picture"]; - if !(GVAR(DisplayText)) exitwith {}; +private ["_color", "_name", "_text", "_picture"]; + params ["_magazine", "_numberofMagazines"]; _color = [[1,0,0], [1,1,1]] select (_numberofMagazines > 0); From 469445a0305f28e51e1be95fae7e36a332024020 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Wed, 5 Aug 2015 01:14:03 +0200 Subject: [PATCH 18/78] Updated parameterization in Ballistics module. --- addons/ballistics/scripts/initTargetWall.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/ballistics/scripts/initTargetWall.sqf b/addons/ballistics/scripts/initTargetWall.sqf index 391faaa82e..d9b16eec10 100644 --- a/addons/ballistics/scripts/initTargetWall.sqf +++ b/addons/ballistics/scripts/initTargetWall.sqf @@ -1,9 +1,9 @@ // by commy2 #include "script_component.hpp" -private ["_wall", "_paper"]; +private "_paper"; -_wall = _this select 0; +params ["_wall"]; if (local _wall) then { _paper = "UserTexture_1x2_F" createVehicle position _wall; From d3d3ea756d962edc336f9b026f25bec1dff08e33 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Wed, 5 Aug 2015 11:48:04 -0700 Subject: [PATCH 19/78] isTouchingGround is unreliable for ground vehicles #2020 --- addons/common/functions/fnc_unloadPersonLocal.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index 524bf6621d..da2d9ea77e 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -30,14 +30,14 @@ if (_vehicle isKindOf "Ship" ) then { _emptyPos = (getPosASL _vehicle) call EFUNC(common,ASLtoPosition); _emptyPos = [(_emptyPos select 0) + random(5), (_emptyPos select 1) + random(5), _emptyPos select 2 ]; } else { - if !(speed _vehicle <1 && {isTouchingGround _vehicle}) then {_validVehiclestate = false}; + if !(speed _vehicle <1 && {(((getPosATL _vehicle) select 2) < 2)}) then {_validVehiclestate = false}; TRACE_1("Vehicle Ground Check", isTouchingGround _vehicle); _emptyPos = ((getPosASL _vehicle) call EFUNC(common,ASLtoPosition) findEmptyPosition [0, 13, typeof _unit]); }; }; TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle); -if (!_validVehiclestate) exitwith { diag_log format["Unable to unload patient because invalid vehicle state. Either moving or Not close enough on the ground. %1", getPos _vehicle]; false }; +if (!_validVehiclestate) exitwith { diag_log format["Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4", _vehicle, getPos _vehicle, isTouchingGround _vehicle, speed _vehicle]; false }; diag_log str _emptyPos; From 6ab72e905c3792b3ece5758dcf4ec9c6cc139363 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 5 Aug 2015 17:32:00 -0500 Subject: [PATCH 20/78] #1807 - Clean bandages if no damage on hitpoint --- addons/medical/ACE_Medical_Treatments.hpp | 4 ++-- addons/medical/CfgVehicles.hpp | 3 +++ addons/medical/data/ace_litterclean_co.paa | Bin 0 -> 130116 bytes addons/medical/data/littergeneric_clean.p3d | Bin 0 -> 89167 bytes addons/medical/functions/fnc_createLitter.sqf | 5 +++-- .../functions/fnc_treatment_success.sqf | 13 ++++++++++++- 6 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 addons/medical/data/ace_litterclean_co.paa create mode 100644 addons/medical/data/littergeneric_clean.p3d diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 079ae40506..1698f73f1e 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -25,7 +25,7 @@ class ACE_Medical_Actions { animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther"; animationCallerSelf = "AinvPknlMstpSlayW[wpn]Dnon_medic"; animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; - litter[] = { {"All", "", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}} }; + litter[] = { {"All", "_previousDamage > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_previousDamage <= 0", {"ACE_MedicalLitter_clean"}} }; }; class Morphine: Bandage { displayName = CSTRING(Inject_Morphine); @@ -121,7 +121,7 @@ class ACE_Medical_Actions { animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther"; animationCallerSelf = "AinvPknlMstpSlayW[wpn]Dnon_medic"; animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; - litter[] = { {"All", "", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}} }; + litter[] = { {"All", "_previousDamage > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_previousDamage <= 0", {"ACE_MedicalLitter_clean"}} }; }; class PackingBandage: fieldDressing { items[] = {"ACE_packingBandage"}; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index aab193c098..a693d180bd 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -717,6 +717,9 @@ class CfgVehicles { destrType = "DestructNo"; model = QUOTE(PATHTOF(data\littergeneric.p3d)); }; + class ACE_MedicalLitter_clean: ACE_MedicalLitterBase { + model = QUOTE(PATHTOF(data\littergeneric_clean.p3d)); + }; class ACE_MedicalLitter_bandage1: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_bandages1.p3d)); }; diff --git a/addons/medical/data/ace_litterclean_co.paa b/addons/medical/data/ace_litterclean_co.paa new file mode 100644 index 0000000000000000000000000000000000000000..68fb2a2b222838a665bfee4d691f6cfc0136d131 GIT binary patch literal 130116 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 z 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®XF=^Ym?Mq&fHo#BMC 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 literal 0 HcmV?d00001 diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf index 6797785763..a3b71b7f9c 100644 --- a/addons/medical/functions/fnc_createLitter.sqf +++ b/addons/medical/functions/fnc_createLitter.sqf @@ -16,12 +16,13 @@ #define MIN_ENTRIES_LITTER_CONFIG 3 -private ["_target", "_className", "_config", "_litter", "_createLitter", "_position", "_createdLitter", "_caller", "_selectionName", "_usersOfItems"]; +private ["_target", "_className", "_config", "_litter", "_createLitter", "_position", "_createdLitter", "_caller", "_selectionName", "_usersOfItems", "_previousDamage"]; _caller = _this select 0; _target = _this select 1; _selectionName = _this select 2; _className = _this select 3; _usersOfItems = _this select 5; +_previousDamage = _this select 6; if !(GVAR(allowLitterCreation)) exitwith {}; if (vehicle _caller != _caller || vehicle _target != _target) exitwith {}; @@ -76,7 +77,7 @@ _createdLitter = []; _litterCondition = missionNamespace getvariable _litterCondition; if (typeName _litterCondition != "CODE") then {_litterCondition = {false}}; }; - if !([_caller, _target, _selectionName, _className, _usersOfItems] call _litterCondition) exitwith {}; + if !([_caller, _target, _selectionName, _className, _usersOfItems, _previousDamage] call _litterCondition) exitwith {}; if (typeName _litterOptions == "ARRAY") then { // Loop through through the litter options and place the litter diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index 19c12d9299..931a45847f 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -62,8 +62,19 @@ if (isNil _callback) then { _callback = missionNamespace getvariable _callback; }; -_args call _callback; +//Get current damage before treatment (for litter) +_previousDamage = switch (toLower _selectionName) do { + case ("head"): {_target getHitPointDamage "HitHead"}; + case ("body"): {_target getHitPointDamage "HitBody"}; + case ("hand_l"): {_target getHitPointDamage "HitLeftArm"}; + case ("hand_r"): {_target getHitPointDamage "HitRightArm"}; + case ("leg_l"): {_target getHitPointDamage "HitLeftLeg"}; + case ("leg_r"): {_target getHitPointDamage "HitRightLeg"}; + default {damage _target}; +}; +_args call _callback; +_args pushBack _previousDamage; _args call FUNC(createLitter); //If we're not already tracking vitals, start: From d16a33bee4195fca2e2654fd6fa991d9ef052f50 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Thu, 6 Aug 2015 00:36:28 +0200 Subject: [PATCH 21/78] Fixed issue with params being incorrectly being parsed in Weaponselect --- addons/weaponselect/functions/fnc_throwGrenade.sqf | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/addons/weaponselect/functions/fnc_throwGrenade.sqf b/addons/weaponselect/functions/fnc_throwGrenade.sqf index 2dc8ddf2f8..d3aa46cff8 100644 --- a/addons/weaponselect/functions/fnc_throwGrenade.sqf +++ b/addons/weaponselect/functions/fnc_throwGrenade.sqf @@ -4,16 +4,20 @@ * Display Grenade information on grenade throw. * * Argument: - * 0: Unit - * 1: Weapon - * 2: Magazine + * 0: unit - Object the event handler is assigned to + * 1: weapon - Fired weapon + * 2: muzzle - Muzzle that was used + * 3: mode - Current mode of the fired weapon + * 4: ammo - Ammo used + * 5: magazine - magazine name which was used + * 6: projectile - Object of the projectile that was shot * * Return value: * None */ #include "script_component.hpp" -params ["_unit", "_weapon", "_magazine"]; +params ["_unit", "_weapon", "", "", "", "_magazine"]; if (_weapon != "Throw") exitWith {}; From 0bd1e1afce2ab0e3b6346df4836cb1b743f86d56 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 5 Aug 2015 18:02:57 -0500 Subject: [PATCH 22/78] #2024 - EnableTeamManagement setting for joinGroup --- addons/interaction/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 17c271f372..1a19f0f341 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -91,7 +91,7 @@ class CfgVehicles { class ACE_JoinGroup { displayName = CSTRING(JoinGroup); - condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinGroup)); + condition = QUOTE(GVAR(EnableTeamManagement) && {[ARR_2(_player,_target)] call DFUNC(canJoinGroup)}); statement = QUOTE([_player] joinSilent group _target); showDisabled = 0; priority = 2.6; From d8c36663da3a0cf090271eb32853c8c80fe50806 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 6 Aug 2015 12:14:45 -0500 Subject: [PATCH 23/78] #2033 - MapTools work on children of itemMap --- addons/maptools/functions/fnc_canUseMapTools.sqf | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/maptools/functions/fnc_canUseMapTools.sqf b/addons/maptools/functions/fnc_canUseMapTools.sqf index 30d86160ab..7658c2c1d2 100644 --- a/addons/maptools/functions/fnc_canUseMapTools.sqf +++ b/addons/maptools/functions/fnc_canUseMapTools.sqf @@ -14,7 +14,13 @@ visibleMap && {alive ACE_player} && -{"ItemMap" in (assignedItems ACE_player)} && +{ + scopeName "hasMap"; + { + if (_x isKindOf ["ItemMap", configFile >> "CfgWeapons"]) exitWith {true breakOut "hasMap"}; + } forEach (assignedItems ACE_player); + false +} && {"ACE_MapTools" in (items ACE_player)} && {!GVAR(mapTool_isDragging)} && {!GVAR(mapTool_isRotating)} From 6086553fce53271f1557e56967d9e22c2f2f3b4b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 6 Aug 2015 12:24:56 -0500 Subject: [PATCH 24/78] Move DoNotForce to common --- addons/common/stringtable.xml | 8 ++++++++ addons/hearing/CfgVehicles.hpp | 2 +- addons/hearing/stringtable.xml | 8 -------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 36d1b2b51f..a3133be59a 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -644,5 +644,13 @@ Não No + + Do Not Force + Nie wymuszaj + No forzar + Nicht erzwingen + Nevynucovat + Não forçar + diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index cf9a48b982..44ea8f734f 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -115,7 +115,7 @@ class CfgVehicles { class values { class DoNotForce { default = 1; - name = CSTRING(DoNotForce); + name = ECSTRING(common,DoNotForce); value = -1; }; /* Probably don't want to allow forcing ear ringing for people who have serious problems with the effect diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index ca4a5e7f83..a3af102580 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -140,13 +140,5 @@ Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat. Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva. - - Do Not Force - Nie wymuszaj - No forzar - Nicht erzwingen - Nevynucovat - Não forçar - \ No newline at end of file From 2e386038b7b721191a3afda44b7647073f93a689 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 6 Aug 2015 23:43:18 +0200 Subject: [PATCH 25/78] Added support without ace_intract_menu --- addons/slideshow/functions/fnc_moduleInit.sqf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/slideshow/functions/fnc_moduleInit.sqf b/addons/slideshow/functions/fnc_moduleInit.sqf index 50de48693e..54f04b3a16 100644 --- a/addons/slideshow/functions/fnc_moduleInit.sqf +++ b/addons/slideshow/functions/fnc_moduleInit.sqf @@ -33,6 +33,12 @@ _images = [_logic getVariable ["Images", ""], true, false] call FUNC(makeList); _names = [_logic getVariable ["Names", ""], true, false] call FUNC(makeList); _duration = _logic getVariable ["Duration", 0]; +// If interaction menu module is not present, set default duration value +if (["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { + _duration = 5; + diag_log "[ACE]: ace_interact_menu not present, assuming default Slideshow duration value."; +}; + // Prepare with actions [_objects, _controllers, _images, _names, _duration] call FUNC(createSlideshow); From 4b5632a8f6da7c85667f28e685fea4ebadc1357a Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 6 Aug 2015 23:50:23 +0200 Subject: [PATCH 26/78] Added categories and missing displayName entries --- addons/medical/ACE_Medical_Treatments.hpp | 45 ++++++++++++++++++----- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 079ae40506..b6ccfb134d 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -4,7 +4,7 @@ class ACE_Medical_Actions { class Bandage { displayName = CSTRING(Bandage); displayNameProgress = CSTRING(Bandaging); - + category = "bandage"; treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 5; @@ -30,6 +30,7 @@ class ACE_Medical_Actions { class Morphine: Bandage { displayName = CSTRING(Inject_Morphine); displayNameProgress = CSTRING(Injecting_Morphine); + category = "medication"; treatmentTime = 2; items[] = {"ACE_morphine"}; callbackSuccess = QUOTE(DFUNC(treatmentBasic_morphine)); @@ -39,6 +40,7 @@ class ACE_Medical_Actions { class Epinephrine: Bandage { displayName = CSTRING(Inject_Epinephrine); displayNameProgress = CSTRING(Injecting_Epinephrine); + category = "medication"; requiredMedic = 1; treatmentTime = 3; items[] = {"ACE_epinephrine"}; @@ -49,6 +51,7 @@ class ACE_Medical_Actions { class BloodIV: Bandage { displayName = CSTRING(Transfuse_Blood); displayNameProgress = CSTRING(Transfusing_Blood); + category = "advanced"; requiredMedic = 1; treatmentTime = 20; items[] = {"ACE_bloodIV"}; @@ -57,14 +60,17 @@ class ACE_Medical_Actions { litter[] = {}; }; class BloodIV_500: BloodIV { + category = "advanced"; items[] = {"ACE_bloodIV_500"}; }; class BloodIV_250: BloodIV { + category = "advanced"; items[] = {"ACE_bloodIV_250"}; }; class BodyBag: Bandage { displayName = CSTRING(PlaceInBodyBag); displayNameProgress = CSTRING(PlacingInBodyBag); + category = "advanced"; treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 4; @@ -81,6 +87,7 @@ class ACE_Medical_Actions { class Diagnose: Bandage { displayName = CSTRING(Actions_Diagnose); displayNameProgress = CSTRING(Actions_Diagnosing); + category = "examine"; treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 1; @@ -97,8 +104,9 @@ class ACE_Medical_Actions { class Advanced { class FieldDressing { - displayName = CSTRING(Bandage); + displayName = CSTRING(Actions_FieldDressing); displayNameProgress = CSTRING(Bandaging); + category = "bandage"; // Which locations can this treatment action be used? Available: Field, MedicalFacility, MedicalVehicle, All. treatmentLocations[] = {"All"}; // What is the level of medical skill required for this treatment action? 0 = all soldiers, 1 = medic, 2 = doctor @@ -124,12 +132,15 @@ class ACE_Medical_Actions { litter[] = { {"All", "", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}} }; }; class PackingBandage: fieldDressing { + displayName = CSTRING(Actions_PackingBandage); items[] = {"ACE_packingBandage"}; }; class ElasticBandage: fieldDressing { + displayName = CSTRING(Actions_ElasticBandage); items[] = {"ACE_elasticBandage"}; }; class QuikClot: fieldDressing { + displayName = CSTRING(Actions_QuikClot); items[] = {"ACE_quikclot"}; }; class Tourniquet: fieldDressing { @@ -144,6 +155,7 @@ class ACE_Medical_Actions { class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); displayNameProgress = CSTRING(Injecting_Morphine); + category = "medication"; items[] = {"ACE_morphine"}; treatmentTime = 3; callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_medication)); @@ -163,8 +175,9 @@ class ACE_Medical_Actions { litter[] = { {"All", "", {"ACE_MedicalLitter_epinephrine"}} }; }; class BloodIV: fieldDressing { - displayName = CSTRING(Transfuse_Blood); + displayName = CSTRING(Actions_Blood4_1000); displayNameProgress = CSTRING(Transfusing_Blood); + category = "advanced"; items[] = {"ACE_bloodIV"}; requiredMedic = 1; treatmentTime = 7; @@ -173,38 +186,45 @@ class ACE_Medical_Actions { litter[] = {}; }; class BloodIV_500: BloodIV { + displayName = CSTRING(Actions_Blood4_500); items[] = {"ACE_bloodIV_500"}; }; class BloodIV_250: BloodIV { + displayName = CSTRING(Actions_Blood4_250); items[] = {"ACE_bloodIV_250"}; }; class PlasmaIV: BloodIV { - displayName = CSTRING(Transfuse_Plasma); + displayName = CSTRING(Actions_Plasma4_1000); displayNameProgress = CSTRING(Transfusing_Plasma); items[] = {"ACE_plasmaIV"}; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; }; class PlasmaIV_500: PlasmaIV { + displayName = CSTRING(Actions_Plasma4_500); items[] = {"ACE_plasmaIV_500"}; }; class PlasmaIV_250: PlasmaIV { + displayName = CSTRING(Actions_Plasma4_250); items[] = {"ACE_plasmaIV_250"}; }; class SalineIV: BloodIV { - displayName = CSTRING(Transfuse_Saline); + displayName = CSTRING(Actions_Saline4_1000); displayNameProgress = CSTRING(Transfusing_Saline); items[] = {"ACE_salineIV"}; animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; }; class SalineIV_500: SalineIV { + displayName = CSTRING(Actions_Saline4_500); items[] = {"ACE_salineIV_500"}; }; class SalineIV_250: SalineIV { + displayName = CSTRING(Actions_Saline4_250); items[] = {"ACE_salineIV_250"}; }; class SurgicalKit: fieldDressing { - displayName = ""; + displayName = CSTRING(Use_SurgicalKit); displayNameProgress = CSTRING(TreatmentAction); + category = "advanced"; items[] = {"ACE_surgicalKit"}; treatmentLocations[] = {QGVAR(useLocation_SurgicalKit)}; requiredMedic = QGVAR(medicSetting_SurgicalKit); @@ -217,8 +237,9 @@ class ACE_Medical_Actions { litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"} }}; }; class PersonalAidKit: fieldDressing { - displayName = ""; + displayName = CSTRING(Use_Aid_Kit); displayNameProgress = CSTRING(TreatmentAction); + category = "advanced"; items[] = {"ACE_personalAidKit"}; treatmentLocations[] = {QGVAR(useLocation_PAK)}; requiredMedic = QGVAR(medicSetting_PAK); @@ -235,8 +256,9 @@ class ACE_Medical_Actions { litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"}}, {"All", "", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}} }, {"All", "", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}} }; }; class CheckPulse: fieldDressing { - displayName = ""; + displayName = CSTRING(Actions_CheckPulse); displayNameProgress = CSTRING(Check_Pulse_Content); + category = "examine"; treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 2; @@ -250,14 +272,17 @@ class ACE_Medical_Actions { litter[] = {}; }; class CheckBloodPressure: CheckPulse { + displayName = CSTRING(Actions_CheckBloodPressure); callbackSuccess = QUOTE(DFUNC(actionCheckBloodPressure)); displayNameProgress = CSTRING(Check_Bloodpressure_Content); }; class CheckResponse: CheckPulse { + displayName = CSTRING(Check_Response); callbackSuccess = QUOTE(DFUNC(actionCheckResponse)); displayNameProgress = CSTRING(Check_Response_Content); }; - class RemoveTourniquet: CheckPulse { + class RemoveTourniquet: Tourniquet { + displayName = CSTRING(Actions_RemoveTourniquet); treatmentTime = 2.5; callbackSuccess = QUOTE(DFUNC(actionRemoveTourniquet)); condition = QUOTE([ARR_2(_this select 1, _this select 2)] call FUNC(hasTourniquetAppliedTo)); @@ -266,6 +291,7 @@ class ACE_Medical_Actions { class CPR: fieldDressing { displayName = CSTRING(Actions_CPR); displayNameProgress = CSTRING(Actions_PerformingCPR); + category = "advanced"; treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 15; @@ -286,6 +312,7 @@ class ACE_Medical_Actions { class BodyBag: fieldDressing { displayName = CSTRING(PlaceInBodyBag); displayNameProgress = CSTRING(PlacingInBodyBag); + category = "advanced"; treatmentLocations[] = {"All"}; requiredMedic = 0; treatmentTime = 2; From 5ac2972573357107bac86c3146c24d87eb7acfda Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 6 Aug 2015 23:50:44 +0200 Subject: [PATCH 27/78] Added local event upon successful treatment. --- addons/medical/functions/fnc_treatment_success.sqf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index 19c12d9299..0793963e7c 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -70,3 +70,5 @@ _args call FUNC(createLitter); if (!(_target getvariable [QGVAR(addedToUnitLoop),false])) then { [_target] call FUNC(addToInjuredCollection); }; + +["medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call EFUNC(common,localEvent); From 9b380315e51f59cdcb721b0d0b13966307135aaf Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 6 Aug 2015 23:51:17 +0200 Subject: [PATCH 28/78] First working version of the medical menu --- addons/medical_menu/XEH_postInit.sqf | 30 ++ addons/medical_menu/XEH_preInit.sqf | 12 + addons/medical_menu/config.cpp | 64 +++- .../functions/fnc_collectActions.sqf | 40 +++ .../functions/fnc_getTreatmentOptions.sqf | 40 ++- .../functions/fnc_handleUI_DisplayOptions.sqf | 27 +- .../fnc_handleUI_dropDownTriageCard.sqf | 16 +- .../medical_menu/functions/fnc_onMenuOpen.sqf | 59 ++-- .../medical_menu/functions/fnc_openMenu.sqf | 39 ++- .../functions/fnc_setTriageStatus.sqf | 21 ++ .../functions/fnc_updateActivityLog.sqf | 41 +++ .../functions/fnc_updateBodyImage.sqf | 41 +++ .../functions/fnc_updateIcons.sqf | 16 +- .../functions/fnc_updateInformationLists.sqf | 37 +++ .../functions/fnc_updateUIInfo.sqf | 300 +++++++----------- .../functions/script_component.hpp | 2 +- addons/medical_menu/stringtable.xml | 125 +++++--- addons/medical_menu/ui/menu.hpp | 58 ++-- 18 files changed, 611 insertions(+), 357 deletions(-) create mode 100644 addons/medical_menu/functions/fnc_collectActions.sqf create mode 100644 addons/medical_menu/functions/fnc_setTriageStatus.sqf create mode 100644 addons/medical_menu/functions/fnc_updateActivityLog.sqf create mode 100644 addons/medical_menu/functions/fnc_updateBodyImage.sqf create mode 100644 addons/medical_menu/functions/fnc_updateInformationLists.sqf diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 6eccf9d1dd..bc33ddce1b 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -1,2 +1,32 @@ #include "script_component.hpp" +if (!hasInterface) exitwith {}; + +["medical_treatmentSuccess", { + + if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then { + GVAR(pendingReopen) = false; + [{ + [GVAR(INTERACTION_TARGET)] call FUNC(openMenu); + }, []] call EFUNC(common,execNextFrame); + }; +}] call EFUNC(common,addEventhandler); + + +["ACE3 Common", QGVAR(DisplayMenuKey), localize LSTRING(DisplayMenuKey), +{ + _target = cursorTarget; + if (!(_target isKindOf "CAManBase") || ACE_player distance _target > 10) then {_target = ACE_player}; + // Conditions: canInteract + if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + + // Statement + [_target] call FUNC(openMenu); + false +}, +{ + if (ACE_time - GVAR(lastOpenedOn) > 0.5) then { + [ObjNull] call FUNC(openMenu); + }; +}, +[0, [true, false, false]], false, 0] call CBA_fnc_addKeybind; diff --git a/addons/medical_menu/XEH_preInit.sqf b/addons/medical_menu/XEH_preInit.sqf index 3c07b4f88c..0aa4a7ecc6 100644 --- a/addons/medical_menu/XEH_preInit.sqf +++ b/addons/medical_menu/XEH_preInit.sqf @@ -10,5 +10,17 @@ PREP(updateUIInfo); PREP(handleUI_DisplayOptions); PREP(handleUI_dropDownTriageCard); PREP(getTreatmentOptions); +PREP(updateActivityLog); +PREP(updateBodyImage); +PREP(updateInformationLists); +PREP(setTriageStatus); +PREP(collectActions); + +GVAR(INTERACTION_TARGET) = objNull; +GVAR(actionsOther) = []; +GVAR(actionsSelf) = []; +GVAR(selectedBodyPart) = 0; + +call FUNC(collectActions); ADDON = true; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index 36920be4f2..62edc2648e 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -1,15 +1,15 @@ #include "script_component.hpp" class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_medical"}; - version = VERSION; - author[] = {$STR_ACE_Common_ACETeam, "Glowbal"}; - authorUrl = "http://ace3mod.com"; - }; + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_medical"}; + author[] = {$STR_ACE_Common_ACETeam, "Glowbal"}; + authorUrl = "http://ace3mod.com"; + VERSION_CONFIG; + }; }; class CfgAddons { class PreloadAddons { @@ -20,5 +20,49 @@ class CfgAddons { }; #include "CfgEventHandlers.hpp" -#include "ui\define.hpp" #include "ui\menu.hpp" + +class ACE_Settings { + class GVAR(allow) { + displayName = CSTRING(allow); + description = CSTRING(allow_Descr); + typeName = "BOOL"; + value = 1; + }; + class GVAR(useMenu) { + displayName = CSTRING(useMenu); + description = CSTRING(useMenu_Descr); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(openAfterTreatment) { + displayName = CSTRING(openAfterTreatment); + description = CSTRING(openAfterTreatment_Descr); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; +}; + +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_SelfActions { + }; + + class ACE_Actions { + // Create a consolidates medical menu for treatment while boarded + class ACE_MainActions { + class Medical_Menu { + displayName = CSTRING(OpenMenu); + runOnHover = 0; + exceptions[] = {"isNotInside"}; + condition = QUOTE(GVAR(allow) && GVAR(useMenu)); + statement = QUOTE([_target] call DFUNC(openMenu)); + icon = PATHTOEF(medical,UI\icons\medical_cross.paa); + }; + }; + }; + }; +}; diff --git a/addons/medical_menu/functions/fnc_collectActions.sqf b/addons/medical_menu/functions/fnc_collectActions.sqf new file mode 100644 index 0000000000..6f106aca91 --- /dev/null +++ b/addons/medical_menu/functions/fnc_collectActions.sqf @@ -0,0 +1,40 @@ +/* + * Author: Glowbal + * Collect treatment actions from medical config + * + * Arguments: + * + * Return Value: + * NONE + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_configBasic", "_configAdvanced", "_compileActionsLevel"]; +_configBasic = (configFile >> "ACE_Medical_Actions" >> "Basic"); +_configAdvanced = (configFile >> "ACE_Medical_Actions" >> "Advanced"); + + +_compileActionsLevel = { + private [ "_config", "_entryCount", "_actions", "_action", "_displayName","_condition", "_category", "_statement"]; + _config = _this select 0; + _entryCount = (count _config) - 1; + _actions = []; + + for "_i" from 0 to _entryCount /* step +1 */ do { + _action = _config select _i; + if (isClass _action) then { + _displayName = getText (_action >> "displayName"); + _category = getText (_action >> "category"); + _condition = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,canTreatCached)), configName _action]; + _statement = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,treatment)), configName _action]; + _actions pushback [_displayName, _category, compile _condition, compile _statement]; + }; + }; + _actions; +}; + +GVAR(actionsBasic) = [_configBasic] call _compileActionsLevel; +GVAR(actionsAdvanced) = [_configAdvanced] call _compileActionsLevel; diff --git a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf index 973e1279ae..b317f539c8 100644 --- a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf +++ b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf @@ -1 +1,39 @@ -// TODO implement, grab/parse from config ? +/* + * Author: Glowbal + * Grab available treatment options for given category + * + * Arguments: + * 0: The medic + * 1: The patient + * 2: Category name + * + * Return Value: + * Available actions + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_player", "_target", "_name", "_actions"]; +_player = _this select 0; +_target = _this select 1; +_name = _this select 2; +if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitwith {[]}; + +_actions = if (EGVAR(medical,level) == 2) then { + GVAR(actionsAdvanced); +} else { + GVAR(actionsBasic); +}; + +_collectedActions = []; + +_bodyPart = EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart); +{ + if (_name == (_x select 1) && {call (_x select 2)}) then { + _collectedActions pushback _x; + }; +}foreach _actions; + +_collectedActions; diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf index f56bbbf699..621ef0e702 100644 --- a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf +++ b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf @@ -1,11 +1,14 @@ -/** - * fn_displayOptions.sqf - * @Descr: N/A - * @Author: Glowbal +/* + * Author: Glowbal + * Display the available treatment options in category * - * @Arguments: [] - * @Return: - * @PublicAPI: false + * Arguments: + * 0: Category name + * + * Return Value: + * NONE + * + * Public: No */ #include "script_component.hpp" @@ -65,20 +68,20 @@ if (_name == "triage") exitwith { ctrlEnable[212,false]; -_entries = [ACE_player, GVAR(INTERACTION_TARGET),_name] call FUNC(getTreatmentOptions); +_entries = [ACE_player, GVAR(INTERACTION_TARGET), _name] call FUNC(getTreatmentOptions); { //player sidechat format["TRIGGERED: %1",_x]; if (_foreachIndex > END_IDC) exitwith {}; _ctrl = (_display displayCtrl (START_IDC + _foreachIndex)); if (!(_foreachIndex > AMOUNT_OF_ENTRIES)) then { - _ctrl ctrlSetText (_x select 0); - _code = format["[ACE_player, ACE_medical_INTERACTION_TARGET] call %1;",(_x select 1)]; + _ctrl ctrlSetText (_x select 0); + _code = format["ace_medical_menu_pendingReopen = true; call %1;",(_x select 3)]; _ctrl ctrlSetEventHandler ["ButtonClick", _code]; - _ctrl ctrlSetTooltip (_x select 2); + _ctrl ctrlSetTooltip (_x select 0); // TODO implement _ctrl ctrlShow true; } else { - _ctrl ctrlSetText ""; + _ctrl ctrlSetText ""; _ctrl ctrlSetEventHandler ["ButtonClick",""]; }; _ctrl ctrlCommit 0; diff --git a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf index 2d895cae70..844fc20051 100644 --- a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf +++ b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf @@ -1,11 +1,13 @@ -/** - * fn_handleUI_dropDownTriageCard.sqf - * @Descr: N/A - * @Author: Glowbal +/* + * Author: Glowbal + * Handle the triage card display * - * @Arguments: [] - * @Return: - * @PublicAPI: false + * Arguments: + * + * Return Value: + * NONE + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index 5597dacce1..26f3392cb1 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -1,13 +1,16 @@ -/** - * fn_onMenuOpen.sqf - * @Descr: N/A - * @Author: Glowbal +/* + * Author: Glowbal + * Handle medical menu opened * - * @Arguments: [] - * @Return: - * @PublicAPI: false + * Arguments: + * + * Return Value: + * NONE + * + * Public: No */ + #include "script_component.hpp" if (isnil QGVAR(LatestDisplayOptionMenu)) then { @@ -26,33 +29,29 @@ if (isnil QGVAR(INTERACTION_TARGET_PREVIOUS)) then { }; [GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); -[] call FUNC(updateActivityLog); -[_target] call FUNC(updateUIInfo); // 11 till 18 disableSerialization; _display = _this select 0; //uiNamespace getVariable QGVAR(medicalMenu); -if (isnil "_display") exitwith { +if (isnil "_display") exitwith {}; +[_target, _display] call FUNC(updateUIInfo); -}; - -(_display displayCtrl 11) ctrlSetTooltip localize "STR_ACE_UI_VIEW_TRIAGE_CARD"; -(_display displayCtrl 12) ctrlSetTooltip localize "STR_ACE_UI_EXAMINE_PATIENT"; -(_display displayCtrl 13) ctrlSetTooltip localize "STR_ACE_UI_BANDAGE_FRACTURES"; -(_display displayCtrl 14) ctrlSetTooltip localize "STR_ACE_UI_MEDICATION"; -(_display displayCtrl 15) ctrlSetTooltip localize "STR_ACE_UI_AIRWAY_MANAGEMENT"; -(_display displayCtrl 16) ctrlSetTooltip localize "STR_ACE_UI_ADVANCED_TREATMENT"; -(_display displayCtrl 17) ctrlSetTooltip localize "STR_ACE_UI_DRAG_CARRY"; -(_display displayCtrl 18) ctrlSetTooltip localize "STR_ACE_UI_TOGGLE_SELF"; - -(_display displayCtrl 301) ctrlSetTooltip localize "STR_ACE_UI_SELECT_HEAD"; -(_display displayCtrl 302) ctrlSetTooltip localize "STR_ACE_UI_SELECT_TORSO"; -(_display displayCtrl 303) ctrlSetTooltip localize "STR_ACE_UI_SELECT_ARM_R"; -(_display displayCtrl 304) ctrlSetTooltip localize "STR_ACE_UI_SELECT_ARM_L"; -(_display displayCtrl 305) ctrlSetTooltip localize "STR_ACE_UI_SELECT_LEG_R"; -(_display displayCtrl 306) ctrlSetTooltip localize "STR_ACE_UI_SELECT_LEG_L"; -(_display displayCtrl 2001) ctrlSetTooltip localize "STR_ACE_UI_SELECT_TRIAGE_STATUS"; +(_display displayCtrl 11) ctrlSetTooltip localize "STR_ACE_Medical_Menu_VIEW_TRIAGE_CARD"; +(_display displayCtrl 12) ctrlSetTooltip localize "STR_ACE_Medical_Menu_EXAMINE_PATIENT"; +(_display displayCtrl 13) ctrlSetTooltip localize "STR_ACE_Medical_Menu_BANDAGE_FRACTURES"; +(_display displayCtrl 14) ctrlSetTooltip localize "STR_ACE_Medical_Menu_MEDICATION"; +(_display displayCtrl 15) ctrlSetTooltip localize "STR_ACE_Medical_Menu_AIRWAY_MANAGEMENT"; +(_display displayCtrl 16) ctrlSetTooltip localize "STR_ACE_Medical_Menu_ADVANCED_TREATMENT"; +(_display displayCtrl 17) ctrlSetTooltip localize "STR_ACE_Medical_Menu_DRAG_CARRY"; +(_display displayCtrl 18) ctrlSetTooltip localize "STR_ACE_Medical_Menu_TOGGLE_SELF"; +(_display displayCtrl 301) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_HEAD"; +(_display displayCtrl 302) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_TORSO"; +(_display displayCtrl 303) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_ARM_R"; +(_display displayCtrl 304) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_ARM_L"; +(_display displayCtrl 305) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_LEG_R"; +(_display displayCtrl 306) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_LEG_L"; +(_display displayCtrl 2001) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_TRIAGE_STATUS"; (_display displayCtrl 1) ctrlSetText format["%1",[_target] call EFUNC(common,getName)]; setMousePosition [ 0.4, 0.4]; @@ -61,12 +60,10 @@ setMousePosition [ 0.4, 0.4]; if (isNull GVAR(INTERACTION_TARGET)) then { GVAR(INTERACTION_TARGET) = ACE_player; }; - [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo); + [GVAR(INTERACTION_TARGET), _this select 0] call FUNC(updateUIInfo); [GVAR(INTERACTION_TARGET)] call FUNC(updateIcons); [GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); - [] call FUNC(updateActivityLog); - _status = [GVAR(INTERACTION_TARGET)] call FUNC(getTriageStatus); ((_this select 0) displayCtrl 2000) ctrlSetText (_status select 0); ((_this select 0) displayCtrl 2000) ctrlSetBackgroundColor (_status select 2); diff --git a/addons/medical_menu/functions/fnc_openMenu.sqf b/addons/medical_menu/functions/fnc_openMenu.sqf index 82ebd9dd45..8803c99ef2 100644 --- a/addons/medical_menu/functions/fnc_openMenu.sqf +++ b/addons/medical_menu/functions/fnc_openMenu.sqf @@ -1,6 +1,22 @@ +/* + * Author: Glowbal + * Open the medical menu for target + * + * Arguments: + * 0: Target + * + * Return Value: + * NONE + * + * Public: No + */ + #include "script_component.hpp" -if (dialog) exitwith { +private ["_interactionTarget"]; +_interactionTarget = _this select 0; + +if (dialog || isNull _interactionTarget) exitwith { disableSerialization; private "_display"; @@ -8,26 +24,9 @@ if (dialog) exitwith { if (!isnil "_display") then { closeDialog 314412; }; - }; -private ["_interactionTarget"]; -_interactionTarget = objNull; -if (count _this > 0) then { - _interactionTarget = _this select 0; - -} else { - _interactionTarget = cursortarget; - if (isNull _interactionTarget) then { - _interactionTarget = ACE_player; - }; - if (_interactionTarget distance ACE_player > 5 || !(_interactionTarget isKindOf "CaManBase")) then { - _interactionTarget = ACE_player; - }; -}; - -if (isNull _interactionTarget) then { - _interactionTarget = ACE_player; -}; GVAR(INTERACTION_TARGET) = _interactionTarget; + createDialog QGVAR(medicalMenu); +GVAR(lastOpenedOn) = ACE_time; diff --git a/addons/medical_menu/functions/fnc_setTriageStatus.sqf b/addons/medical_menu/functions/fnc_setTriageStatus.sqf new file mode 100644 index 0000000000..468a044f91 --- /dev/null +++ b/addons/medical_menu/functions/fnc_setTriageStatus.sqf @@ -0,0 +1,21 @@ +/* + * Author: Glowbal + * Set the triage status of object + * + * Arguments: + * 0: Target + * 1: Status + * + * Return Value: + * NONE + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_target", "_status"]; +_target = _this select 0; +_status = _this select 1; + +_target setvariable [QEGVAR(medical,triageLevel), _status, true]; diff --git a/addons/medical_menu/functions/fnc_updateActivityLog.sqf b/addons/medical_menu/functions/fnc_updateActivityLog.sqf new file mode 100644 index 0000000000..2e1fddcf2a --- /dev/null +++ b/addons/medical_menu/functions/fnc_updateActivityLog.sqf @@ -0,0 +1,41 @@ +/* + * Author: Glowbal + * Update the activity log + * + * Arguments: + * 0: display + * 1: log collection + * + * Return Value: + * NONE + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_display", "_logs", "_logCtrl"]; +_display = _this select 0; +_logs = _this select 1; + +_logCtrl = (_display displayCtrl 214); +lbClear _logCtrl; + +private ["_message", "_moment", "_arguments"]; +{ + // [_message,_moment,_type, _arguments] + _message = _x select 0; + _moment = _x select 1; + _arguments = _x select 3; + if (isLocalized _message) then { + _message = localize _message; + }; + + { + if (typeName _x == "STRING" && {isLocalized _x}) then { + _arguments set [_foreachIndex, localize _x]; + }; + }foreach _arguments; + _message = format([_message] + _arguments); + _logCtrl lbAdd format["%1 %2", _moment, _message]; +}foreach _logs; diff --git a/addons/medical_menu/functions/fnc_updateBodyImage.sqf b/addons/medical_menu/functions/fnc_updateBodyImage.sqf new file mode 100644 index 0000000000..707cd3e87e --- /dev/null +++ b/addons/medical_menu/functions/fnc_updateBodyImage.sqf @@ -0,0 +1,41 @@ +/* + * Author: Glowbal + * Update the body image on the menu + * + * Arguments: + * 0: selection bloodloss + * 1: display + * + * Return Value: + * NONE + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_selectionBloodLoss", "_display"]; +_selectionBloodLoss = _this select 0; +_display = _this select 1; + +// Handle the body image coloring +_availableSelections = [50,51,52,53,54,55]; +{ + private ["_red", "_green", "_blue"]; + _total = _x; + + _red = 1; + _green = 1; + _blue = 1; + if (_total > 0) then { + if (_damaged select _forEachIndex) then { + _green = (0.9 - _total) max 0; + _blue = _green; + } else { + _green = (0.9 - _total) max 0; + _red = _green; + //_blue = _green; + }; + }; + (_display displayCtrl (_availableSelections select _foreachIndex)) ctrlSetTextColor [_red, _green, _blue, 1.0]; +}foreach _selectionBloodLoss; diff --git a/addons/medical_menu/functions/fnc_updateIcons.sqf b/addons/medical_menu/functions/fnc_updateIcons.sqf index 81c071efca..02570f1355 100644 --- a/addons/medical_menu/functions/fnc_updateIcons.sqf +++ b/addons/medical_menu/functions/fnc_updateIcons.sqf @@ -1,11 +1,13 @@ -/** - * fn_updateIcons.sqf - * @Descr: N/A - * @Author: Glowbal +/* + * Author: Glowbal + * Update the category icons * - * @Arguments: [] - * @Return: - * @PublicAPI: false + * Arguments: + * + * Return Value: + * NONE + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/medical_menu/functions/fnc_updateInformationLists.sqf b/addons/medical_menu/functions/fnc_updateInformationLists.sqf new file mode 100644 index 0000000000..f96e8c9943 --- /dev/null +++ b/addons/medical_menu/functions/fnc_updateInformationLists.sqf @@ -0,0 +1,37 @@ +/* + * Author: Glowbal + * Update the treatment information list + * + * Arguments: + * 0: display + * 1: message collection + * 2: injury collection + * + * Return Value: + * NONE + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_display", "_genericMessages", "_allInjuryTexts", "_lbCtrl"]; +_display = _this select 0; +_genericMessages = _this select 1; +_allInjuryTexts = _this select 2; + +_lbCtrl = (_display displayCtrl 213); +lbClear _lbCtrl; +{ + _lbCtrl lbAdd (_x select 0); + _lbCtrl lbSetColor [_foreachIndex, _x select 1]; +}foreach _genericMessages; + +_amountOfGeneric = count _genericMessages; +{ + _lbCtrl lbAdd (_x select 0); + _lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _x select 1]; +}foreach _allInjuryTexts; +if (count _allInjuryTexts == 0) then { + _lbCtrl lbAdd (localize ELSTRING(medical,NoInjuriesBodypart)); +}; diff --git a/addons/medical_menu/functions/fnc_updateUIInfo.sqf b/addons/medical_menu/functions/fnc_updateUIInfo.sqf index 4ac6b463f1..cf8e868827 100644 --- a/addons/medical_menu/functions/fnc_updateUIInfo.sqf +++ b/addons/medical_menu/functions/fnc_updateUIInfo.sqf @@ -1,215 +1,137 @@ -/** - * fn_updateUIInfo.sqf - * @Descr: N/A - * @Author: Glowbal +/* + * Author: Glowbal + * Update all UI information in the medical menu * - * @Arguments: [] - * @Return: - * @PublicAPI: false + * Arguments: + * 0: target + * 1: display + * + * Return Value: + * NONE + * + * Public: No */ #include "script_component.hpp" -private ["_targetObj","_bodyPartText","_bodyPartN","_openWounds","_bandagedWounds","_fractures","_listOfWounds","_listOfBandagedWounds","_listOfFractures","_counter","_nameEntry","_untreatedWounds" ,"_remainder", "_numberOf", "_airwayStatus", "_airwayTreated"]; -_targetObj = _this select 0; +private ["_targeT", "_display", "_genericMessages", "_totalIvVolume", "_damaged", "_selectionBloodLoss", "_allInjuryTexts"]; +_target = _this select 0; +_display = _this select 1; -_bodyPartText = (call FUNC(getSelectedBodyPart)); -_bodyPartN = [_bodyPartText] call FUNC(getBodyPartNumber); +_selectionN = GVAR(selectedBodyPart); +if (_selectionN < 0 || _selectionN > 5) exitwith {}; -if (_bodyPartN < 0 || _bodyPartN > 5) exitwith {}; - -_openWounds = [_targetObj,QGVAR(openWounds)] call EFUNC(common,getDefinedVariable); -_bandagedWounds = [_targetObj,QGVAR(bandagedWounds)] call EFUNC(common,getDefinedVariable); -_fractures = [_targetObj,QGVAR(fractures)] call EFUNC(common,getDefinedVariable); -_airwayStatus = [_targetObj,QGVAR(airway)] call EFUNC(common,getDefinedVariable); - -if (count _this > 1) then { - switch (_this select 1) do { - case QGVAR(openWounds): { _openWounds = _this select 2; }; - case QGVAR(bandagedWounds): { _bandagedWounds = _this select 2; }; - case QGVAR(fractures): { _fractures = _this select 2; }; - }; +_genericMessages = []; +if (EGVAR(medical,level) >= 2) then { + _partText = [ELSTRING(medical,Head), ELSTRING(medical,Torso), ELSTRING(medical,LeftArm) ,ELSTRING(medical,RightArm) ,ELSTRING(medical,LeftLeg), ELSTRING(medical,RightLeg)] select _selectionN; + _genericMessages pushback [localize _partText, [1, 1, 1, 1]]; }; -[_openWounds,_bandagedWounds] call FUNC(updateBodyImg); -_listOfWounds = _openWounds select _bodyPartN; -_listOfBandagedWounds = _bandagedWounds select _bodyPartN; -_listOfFractures = _fractures select _bodyPartN; - -// TODO collect all information first, then clear the lb and fill in with details. Also; use ctrl instead of IDC. -_numberOf = 0; -lbClear 213; - -_displayBodyPartText = switch (_bodyPartText) do { - case "head": { - localize "STR_ACE_UI_HEAD"; - }; - case "body": { - localize "STR_ACE_UI_TORSO"; - }; - case "hand_r": { - localize "STR_ACE_UI_ARM_R"; - }; - case "hand_l": { - localize "STR_ACE_UI_ARM_L"; - }; - case "leg_r": { - localize "STR_ACE_UI_LEG_R"; - }; - case "leg_l": { - localize "STR_ACE_UI_LEG_L"; - }; - default {"-"}; +if (_target getvariable[QGVAR(isBleeding), false]) then { + _genericMessages pushback [localize ELSTRING(medical,Status_Bleeding), [1, 0.1, 0.1, 1]]; +}; +if (_target getvariable[QGVAR(hasLostBlood), 0] > 1) then { + _genericMessages pushback [localize ELSTRING(medical,Status_Lost_Blood), [1, 0.1, 0.1, 1]]; }; - -lbadd[213,format[localize "STR_ACE_UI_SELECTED_BODY_PART",_displayBodyPartText]]; -lbSetData [213, _numberOf, ""]; -lbSetColor [213, _numberOf, [0.27, 0.40, 0.26, 1]]; -_numberOf = _numberOf + 1; - -if (GVAR(setting_allowAirwayInjuries)) then { - _airwayTreated = _targetObj getvariable [QGVAR(airwayTreated), false]; - - if (_airwayStatus > 0) then { - _nameEntry = switch (_airwayStatus) do { - case 0: {localize "STR_ACE_UI_NORMAL_BREATHING"}; - case 1: {localize "STR_ACE_UI_DIFFICULT_BREATHING"}; - case 2: {localize "STR_ACE_UI_ALMOST_NO_BREATHING"}; - default {localize "STR_ACE_UI_NO_BREATHING"}; - }; - - if (!(alive _targetObj) || (_targetObj getvariable [QEGVAR(common,isDead), false])) then { - lbadd[213,format["%1",localize "STR_ACE_UI_NO_BREATHING"]]; - } else { - lbadd[213,format["%1",_nameEntry]]; - }; - lbSetData [213, _numberOf, ""]; - _numberOf = _numberOf + 1; - } else { - if (!(alive _targetObj) || (_targetObj getvariable [QEGVAR(common,isDead), false])) then { - lbadd[213,format["%1",localize "STR_ACE_UI_NO_BREATHING"]]; - lbSetData [213, _numberOf, ""]; - _numberOf = _numberOf + 1; - }; - }; - - if (_airwayTreated) then { - lbadd[213,localize "STR_ACE_UI_STATUS_NPA_APPLIED"]; - lbSetData [213, _numberOf, ""]; - lbSetColor [213, _numberOf, [0.5, 0.5, 0, 1]]; - _numberOf = _numberOf + 1; - }; +if (((_target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]) select _selectionN) > 0) then { + _genericMessages pushback [localize ELSTRING(medical,Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; +}; +if (_target getvariable[QGVAR(hasPain), false]) then { + _genericMessages pushback [localize ELSTRING(medical,Status_Pain), [1, 1, 1, 1]]; }; -if (([_targetObj,QGVAR(isBleeding)] call EFUNC(common,getDefinedVariable))) then { - lbadd[213,localize "STR_ACE_UI_STATUS_BLEEDING"]; - lbSetData [213, _numberOf, ""]; - _numberOf = _numberOf + 1; -}; -if (([_targetObj,QGVAR(hasLostBlood)] call EFUNC(common,getDefinedVariable))) then { - lbadd[213,localize "STR_ACE_UI_STATUS_LOST_BLOOD"]; - lbSetData [213, _numberOf, ""]; - _numberOf = _numberOf + 1; -}; - -if (([_targetObj,QGVAR(hasPain)] call EFUNC(common,getDefinedVariable))) then { - lbadd[213,localize "STR_ACE_UI_STATUS_PAIN"]; - lbSetData [213, _numberOf, ""]; - _numberOf = _numberOf + 1; -}; -if (([_targetObj, _bodyPartText] call FUNC(hasTourniquetAppliedTo))) then { - lbadd[213,localize "STR_ACE_UI_STATUS_TOURNIQUET_APPLIED"]; - lbSetColor [213, _numberOf, [0.5, 0.5, 0, 1]]; - lbSetData [213, _numberOf, ""]; - _numberOf = _numberOf + 1; -}; - -_counter = 0; +_totalIvVolume = 0; { - if (_x > 0) then { - _untreatedWounds = floor _x; - _remainder = _x - (floor _x); + private "_value"; + _value = _target getvariable _x; + if !(isnil "_value") then { + _totalIvVolume = _totalIvVolume + (_target getvariable [_x, 0]); + }; +}foreach GVAR(IVBags); +if (_totalIvVolume >= 1) then { + _genericMessages pushback [format[localize ELSTRING(medical,receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; +}; - _nameEntry = switch (_counter) do { - case 0: {localize "STR_ACE_UI_SMALL"}; - case 1: {localize "STR_ACE_UI_MEDIUM"}; - case 2: {localize "STR_ACE_UI_LARGE"}; - default {localize "STR_ACE_UI_SMALL"}; - }; +_damaged = [false, false, false, false, false, false]; +_selectionBloodLoss = [0,0,0,0,0,0]; - if (_untreatedWounds > 1) then { - lbadd[213,format[localize "STR_ACE_UI_MULTIPLE_OPEN_WOUNDS",_nameEntry,_untreatedWounds]]; - lbSetData [213, _numberOf, format["open_wound_%1",_counter]]; - lbSetColor [213, _numberOf, [0.6, 0, 0, 1]]; - _numberOf = _numberOf + 1; - } else { - if (_untreatedWounds == 1) then { - lbadd[213,format[localize "STR_ACE_UI_SINGLE_OPEN_WOUND",_nameEntry]]; - lbSetData [213, _numberOf, format["open_wound_%1",_counter]]; - lbSetColor [213, _numberOf, [0.6, 0, 0, 1]]; - _numberOf = _numberOf + 1; + +_allInjuryTexts = []; +if (EGVAR(medical,level) >= 2) then { + _openWounds = _target getvariable [QEGVAR(medical,openWounds), []]; + private "_amountOf"; + { + _amountOf = _x select 3; + // Find how much this bodypart is bleeding + if (_amountOf > 0) then { + _damaged set[_x select 2, true]; + _selectionBloodLoss set [(_x select 2), (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; + + if (_selectionN == (_x select 2)) then { + // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] + if (_amountOf >= 1) then { + // TODO localization + _allInjuryTexts pushback [format["%2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [1,1,1,1]]; + } else { + // TODO localization + _allInjuryTexts pushback [format["Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [1,1,1,1]]; + }; }; }; + }foreach _openWounds; - if (_remainder > 0) then { - lbadd[213,format[localize "STR_ACE_UI_PARTIAL_OPEN_WOUND",_nameEntry]]; - lbSetData [213, _numberOf, format["open_wound_%1",_counter]]; - lbSetColor [213, _numberOf, [0.6, 0, 0, 1]]; - _numberOf = _numberOf + 1; + _bandagedwounds = _target getvariable [QEGVAR(medical,bandagedWounds), []]; + { + _amountOf = _x select 3; + // Find how much this bodypart is bleeding + if !(_damaged select (_x select 2)) then { + _selectionBloodLoss set [(_x select 2), (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; }; - }; - _counter = _counter + 1; -}foreach _listOfWounds; - -_counter = 0; -{ - if (_x > 0) then { - - _untreatedWounds = floor _x; - _remainder = _x - (floor _x); - - _nameEntry = switch (_counter) do { - case 0: {localize "STR_ACE_UI_SMALL"}; - case 1: {localize "STR_ACE_UI_MEDIUM"}; - case 2: {localize "STR_ACE_UI_LARGE"}; - default {localize "STR_ACE_UI_SMALL"}; - }; - - if (_untreatedWounds > 1) then { - lbadd[213,format[localize "STR_ACE_UI_MULTIPLE_BANDAGED_WOUNDS",_nameEntry,_untreatedWounds]]; - lbSetData [213, _numberOf, format["bandaged_wound_%1",_counter]]; - _numberOf = _numberOf + 1; - } else { - if (_untreatedWounds == 1) then { - lbadd[213,format[localize "STR_ACE_UI_SINGLE_BANDAGED_WOUND",_nameEntry]]; - lbSetData [213, _numberOf, format["bandaged_wound_%1",_counter]]; - _numberOf = _numberOf + 1; + if (_selectionN == (_x select 2)) then { + // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] + if (_amountOf > 0) then { + if (_amountOf >= 1) then { + // TODO localization + _allInjuryTexts pushback [format["[B] %2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [0.88,0.7,0.65,1]]; + } else { + // TODO localization + _allInjuryTexts pushback [format["[B] Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [0.88,0.7,0.65,1]]; + }; }; }; + }foreach _bandagedwounds; +} else { + _damaged = [true, true, true, true, true, true]; + { + _selectionBloodLoss set [_forEachIndex, _target getHitPointDamage _x]; - if (_remainder > 0) then { - lbadd[213,format[localize "STR_ACE_UI_PARTIAL_BANDAGED_WOUND",_nameEntry]]; - lbSetData [213, _numberOf, format["bandaged_wound_%1",_counter]]; - _numberOf = _numberOf + 1; + if (_target getHitPointDamage _x > 0 && {_forEachIndex == _selectionN}) then { + _pointDamage = _target getHitPointDamage _x; + _severity = switch (true) do { + case (_pointDamage > 0.5): {localize ELSTRING(medical,HeavilyWounded)}; + case (_pointDamage > 0.1): {localize ELSTRING(medical,LightlyWounded)}; + default {localize ELSTRING(medical,VeryLightlyWounded)}; + }; + _part = localize ([ + ELSTRING(medical,Head), + ELSTRING(medical,Torso), + ELSTRING(medical,LeftArm), + ELSTRING(medical,RightArm), + ELSTRING(medical,LeftLeg), + ELSTRING(medical,RightLeg) + ] select _forEachIndex); + _allInjuryTexts pushBack [format ["%1 %2", _severity, toLower _part], [1,1,1,1]]; }; - }; - _counter = _counter + 1; -}foreach _listOfBandagedWounds; + } forEach ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; +}; -_counter = 0; -{ - if (_x > 0) then { - _nameEntry = switch (_counter) do { - case 0: {localize "STR_ACE_UI_SMALL"}; - case 1: {localize "STR_ACE_UI_MEDIUM"}; - case 2: {localize "STR_ACE_UI_LARGE"}; - default {localize "STR_ACE_UI_SMALL"}; - }; - lbadd[213,format["%1 Fracture x%2",_nameEntry,_x]]; - lbSetData [213, _numberOf, ""]; - _numberOf = _numberOf + 1; - }; - _counter = _counter + 1; -}foreach _listOfFractures; +[_selectionBloodLoss, _display] call FUNC(updateBodyImage); +[_display, _genericMessages, _allInjuryTexts] call FUNC(updateInformationLists); +_logs = _target getvariable [QEGVAR(medical,logFile_Activity), []]; +[_display, _logs] call FUNC(updateActivityLog); + +_triageStatus = [_target] call EFUNC(medical,getTriageStatus); +(_display displayCtrl 2000) ctrlSetText (_triageStatus select 0); +(_display displayCtrl 2000) ctrlSetBackgroundColor (_triageStatus select 2); diff --git a/addons/medical_menu/functions/script_component.hpp b/addons/medical_menu/functions/script_component.hpp index 140463d68d..8c2e419166 100644 --- a/addons/medical_menu/functions/script_component.hpp +++ b/addons/medical_menu/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\medical\script_component.hpp" +#include "\z\ace\addons\medical_menu\script_component.hpp" diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 0f61d06e28..cde9cc458d 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -2,7 +2,32 @@ - + + Medical Menu + + + Allow Medical Menu + + + Allow clients to use the medical menu + + + Use Medical menu + + + If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu + + + Re-open Medical menu + + + Re-open the medical menu after succesful treatment + + + Open Medical Menu + + + EXAMINE & TREATMENT ОСМОТР И ЛЕЧЕНИЕ EXAMINE & TREATMENT @@ -10,7 +35,7 @@ EXAMINER & TRAITEMENTS BADANIE & LECZENIE - + STATUS СОСТОЯНИЕ STATUS @@ -18,7 +43,7 @@ ÉTATS STATUS - + OVERVIEW ОБЩАЯ ИНФОРМАЦИЯ OVERVIEW @@ -26,7 +51,7 @@ DESCRIPTION OPIS - + ACTIVITY LOG ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ ACTIVITY LOG @@ -34,7 +59,7 @@ REGISTRE DES SOINS LOGI AKTYWNOŚCI - + QUICK VIEW БЫСТРЫЙ ОСМОТР QUICK VIEW @@ -42,314 +67,314 @@ VUE RAPIDE SZYBKI PODGLĄD - + None Не ранен Ninguno Aucun Brak - + Minor Несрочная помощь Menor Mineur Normalny - + Delayed Срочная помощь Diferido Urgent Opóźniony - + Immediate Неотложная помощь Inmediato Immédiat Natychmiastowy - + Deceased Морг Fallecido Décédé Nie żyje - + View triage Card Смотреть первичную карточку Ver Triage Voir Carte de Triage Pokaż kartę segregacyjną - + Examine Patient Осмотреть пациента Examinar Paciente Examiner Patient Zbadaj pacjenta - + Bandage / Fractures Раны / переломы Vendajes/Fracturas Bandages / Fractures Bandaże / Złamania - + Medication Медикаменты Medicación Médications Leki - + Airway Management Дыхательные пути Vías Aéreas Gestion Des Voie REspiratoire Drogi oddechowe - + Advanced Treatments Специальная медпомощь Tratamientos Avanzados Traitement Avancé Zaawansowane zabiegi - + Drag/Carry Тащить/нести Arrastrar/Cargar Glisser/Porter Ciągnij/Nieś - + Toggle (Self) Лечить себя/другого раненого Activer (sois) Przełącz (na siebie) Alternar - + Select triage status Сортировка Seleccionar estado de Triage Selectioner l'état de Triage Wybierz priorytet - + Select Head Выбрать голову Seleccionar Cabeza Selectioner Tête Wybierz głowę - + Select Torso Выбрать торс Seleccionar Torso Selectioner Torse Wybierz tors - + Select Left Arm Выбрать левую руку Seleccionar Brazo Izquierdo Selectioner Bras Gauche Wybierz lewą rękę - + Select Right Arm Выбрать правую руку Seleccionar Brazo Derecho Selectioner Bras Droit Wybierz prawą rękę - + Select Left Leg Выбрать левую ногу Seleccionar Pierna Izquierda Selectioner Jambe Gauche Wybierz lewą nogę - + Select Right Leg Выбрать правую ногу Seleccionar Pierna Derecha Selectioner Jambe Droite Wybierz prawą nogę - + Head Голова Cabeza Tête Głowa - + Torso Торс Torse Tors - + Left Arm Левая рука Brazo Izquierdo Bras Gauche Lewa ręka - + Right Arm Правая рука Brazo Derecho Bras Droit Prawa ręka - + Left Leg Левая нога Pierna Izquierda Jambe Gauche Lewa noga - + Right Leg Правая нога Pierna Derecha Jambe Droite Prawa noga - + Body Part: %1 Часть тела: %1 Parte del cuerpo: %1 Partie du corps: %1 Część ciała: %1 - + Small малого размера Pequeña Petite małym - + Medium среднего размера Mediana moyenne średnim - + Large большого размера Grande Grande dużym - + There are %2 %1 Open Wounds %2 открытые раны %1 Hay %2 Heridas Abiertas %1 Il y a %2 %1 Blessure Ouverte Widzisz otwarte rany w ilości %2 o %1 rozmiarze - + There is 1 %1 Open Wound Открытая рана %1 Hay 1 Herida Abierta %1 Il y a 1 blessure ouverte %1 Widzisz 1 otwartą ranę o %1 rozmiarze - + There is a partial %1 Open wound Частично открытая рана %1 Hay una herida parcial abierta %1 Il y a une Blessure Patiellement Ouverte %1 Widzisz częściowo otwartą ranę o %1 rozmiarze - + There are %2 %1 Bandaged Wounds %2 перевязанные раны %1 Hay %2 Heridas %1 Vendadas Il y a %2 %1 Blessure Bandée Widzisz %2 zabandażowanych ran o %1 rozmiarze - + There is 1 %1 Bandaged Wound 1 перевязанная рана %1 Hay 1 Herida Vendada %1 Il y a 1 %1 Blessure Bandée Widzisz 1 zabandażowaną ranę o %1 rozmiarze - + There is a partial %1 Bandaged wound Частично перевязанная рана %1 Hay una Herida parcial %1 Vendada Il y a %1 Blessure Partielment Bandée Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze - + Normal breathing Дыхание в норме Respiración normal Respiration Normale Normalny oddech - + No breathing Дыхания нет No respira Apnée Brak oddechu - + Difficult breathing Дыхание затруднено Dificultad para respirar Difficultée Respiratoire Trudności z oddychaniem - + Almost no breathing Дыхания почти нет Casi sin respirar Respiration Faible Prawie brak oddechu - + Bleeding Кровотечение Sangrando Seignement Krwawienie zewnętrzne - + in Pain Испытывает боль Con Dolor A De La Douleur W bólu - + Lost a lot of Blood Большая кровопотеря Mucha Sangre perdida A Perdu Bcp de Sang Stracił dużo krwi - + Tourniquet [CAT] Жгут Torniquete [CAT] Garot [CAT] Opaska uciskowa [CAT] - + Nasopharyngeal Tube [NPA] Назотрахеальная трубка Torniquete [CAT] diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp index d80165aca4..db7e2cc3bb 100644 --- a/addons/medical_menu/ui/menu.hpp +++ b/addons/medical_menu/ui/menu.hpp @@ -1,4 +1,4 @@ -#include "\z\ace\addons\main\define.hpp" +#include "\z\ace\addons\common\define.hpp" class GVAR(medicalMenu) { idd = 314412; @@ -63,15 +63,15 @@ class GVAR(medicalMenu) { colorText[] = {1, 1, 1.0, 0.9}; colorBackground[] = {0,0,0,0}; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.2)"; - text = $STR_ACE_UI_EXAMINE_TREATMENT; + text = $STR_ACE_Medical_Menu_EXAMINE_TREATMENT; }; class CatagoryCenter: CatagoryLeft { x = "13.33 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = $STR_ACE_UI_STATUS; + text = $STR_ACE_Medical_Menu_STATUS; }; class CatagoryRight: CatagoryCenter{ x = "25.66 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = $STR_ACE_UI_OVERVIEW; + text = $STR_ACE_Medical_Menu_OVERVIEW; }; class Line: ACE_gui_backgroundBase { idc = -1; @@ -325,7 +325,7 @@ class GVAR(medicalMenu) { animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; - action = QUOTE(GVAR(selectedBodyPart) = 'head'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + action = QUOTE(GVAR(selectedBodyPart) = 0; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); }; class selectTorso : selectHead { idc = 302; @@ -333,7 +333,7 @@ class GVAR(medicalMenu) { y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; w = "2.2 * (((safezoneW / safezoneH) min 1.2) / 40)"; h = "4.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - action = QUOTE(GVAR(selectedBodyPart) = 'body'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + action = QUOTE(GVAR(selectedBodyPart) = 1; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); }; class selectLeftArm: selectHead{ idc = 303; @@ -341,12 +341,12 @@ class GVAR(medicalMenu) { y = "5.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)"; h = "4.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - action = QUOTE(GVAR(selectedBodyPart) = 'hand_r'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + action = QUOTE(GVAR(selectedBodyPart) = 3; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); }; class selectRightArm: selectLeftArm{ idc = 304; x = "20.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(GVAR(selectedBodyPart) = 'hand_l'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + action = QUOTE(GVAR(selectedBodyPart) = 2; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); }; class selectLeftLeg :selectHead { idc = 305; @@ -354,12 +354,12 @@ class GVAR(medicalMenu) { y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)"; h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - action = QUOTE(GVAR(selectedBodyPart) = 'leg_r'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + action = QUOTE(GVAR(selectedBodyPart) = 5; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); }; class selectRightLeg :selectLeftLeg { idc = 306; x = "19.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - action = QUOTE(GVAR(selectedBodyPart) = 'leg_l'; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); + action = QUOTE(GVAR(selectedBodyPart) = 4; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); }; @@ -404,35 +404,35 @@ class GVAR(medicalMenu) { colorText[] = {0.6, 0.7, 1.0, 1}; colorBackground[] = {0,0,0,0}; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; - text = $STR_ACE_UI_ACTIVITY_LOG; + text = $STR_ACE_Medical_Menu_ACTIVITY_LOG; }; class QuickViewHeader: ActivityLogHeader { x = "19.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = $STR_ACE_UI_QUICK_VIEW; + text = $STR_ACE_Medical_Menu_QUICK_VIEW; }; class LineBottomHeaders: Line { y = "19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; }; class ActivityLog: InjuryList { idc = 214; - style = 16; - type = 102; - rows=1; - colorBackground[] = {0, 0, 0, 1}; + //style = 16; + //type = 102; + //rows=1; + colorBackground[] = {0, 0, 0, 0}; x = "1.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; y = "(19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))"; w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; h = "6.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.7)"; - colorSelectBackground[] = {0, 0, 0, 0.0}; - colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; - columns[] = {0.0, 0.08}; - canDrag=true; - arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; - arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + //colorSelectBackground[] = {0, 0, 0, 0.0}; + //colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; + //columns[] = {0.0, 0.08}; + //canDrag=true; + //arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + // arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; drawSideArrows = 0; - idcLeft = -1; - idcRight = -1; + //idcLeft = -1; + //idcRight = -1; }; class QuikViewLog: InjuryList { @@ -481,7 +481,7 @@ class GVAR(medicalMenu) { y = 0; w = 0; h = 0; - text = $STR_ACE_UI_TRIAGE_NONE; + text = $STR_ACE_Medical_Menu_TRIAGE_NONE; style = ST_CENTER; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; @@ -500,7 +500,7 @@ class GVAR(medicalMenu) { y = 0; w = 0; h = 0; - text = $STR_ACE_UI_TRIAGE_MINOR; + text = $STR_ACE_Medical_Menu_TRIAGE_MINOR; style = ST_CENTER; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; @@ -518,7 +518,7 @@ class GVAR(medicalMenu) { y = 0; w = 0; h = 0; - text = $STR_ACE_UI_TRIAGE_DELAYED; + text = $STR_ACE_Medical_Menu_TRIAGE_DELAYED; style = ST_CENTER; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; @@ -536,7 +536,7 @@ class GVAR(medicalMenu) { y = 0; w = 0; h = 0; - text = $STR_ACE_UI_TRIAGE_IMMEDIATE; + text = $STR_ACE_Medical_Menu_TRIAGE_IMMEDIATE; style = ST_CENTER; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; @@ -554,7 +554,7 @@ class GVAR(medicalMenu) { y = 0; w = 0; h = 0; - text = $STR_ACE_UI_TRIAGE_DECEASED; + text = $STR_ACE_Medical_Menu_TRIAGE_DECEASED; style = ST_CENTER; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; From abaf43be11b09e48ff085c354d0f95fc87a77f20 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 7 Aug 2015 00:09:40 +0200 Subject: [PATCH 29/78] Selection restrictions --- addons/medical/ACE_Medical_Treatments.hpp | 10 ++++++++++ addons/medical/functions/fnc_canTreat.sqf | 4 +++- addons/medical/functions/fnc_treatment.sqf | 5 ++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index b6ccfb134d..dfd8d47844 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -6,6 +6,7 @@ class ACE_Medical_Actions { displayNameProgress = CSTRING(Bandaging); category = "bandage"; treatmentLocations[] = {"All"}; + allowedSelections[] = {"All"}; requiredMedic = 0; treatmentTime = 5; treatmentTimeSelfCoef = 1; @@ -30,6 +31,7 @@ class ACE_Medical_Actions { class Morphine: Bandage { displayName = CSTRING(Inject_Morphine); displayNameProgress = CSTRING(Injecting_Morphine); + allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; category = "medication"; treatmentTime = 2; items[] = {"ACE_morphine"}; @@ -40,6 +42,7 @@ class ACE_Medical_Actions { class Epinephrine: Bandage { displayName = CSTRING(Inject_Epinephrine); displayNameProgress = CSTRING(Injecting_Epinephrine); + allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; category = "medication"; requiredMedic = 1; treatmentTime = 3; @@ -51,6 +54,7 @@ class ACE_Medical_Actions { class BloodIV: Bandage { displayName = CSTRING(Transfuse_Blood); displayNameProgress = CSTRING(Transfusing_Blood); + allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; category = "advanced"; requiredMedic = 1; treatmentTime = 20; @@ -89,6 +93,7 @@ class ACE_Medical_Actions { displayNameProgress = CSTRING(Actions_Diagnosing); category = "examine"; treatmentLocations[] = {"All"}; + allowedSelections[] = {"head"}; requiredMedic = 0; treatmentTime = 1; items[] = {}; @@ -109,6 +114,7 @@ class ACE_Medical_Actions { category = "bandage"; // Which locations can this treatment action be used? Available: Field, MedicalFacility, MedicalVehicle, All. treatmentLocations[] = {"All"}; + allowedSelections[] = {"All"}; // What is the level of medical skill required for this treatment action? 0 = all soldiers, 1 = medic, 2 = doctor requiredMedic = 0; // The time it takes for a treatment action to complete. Time is in seconds. @@ -146,6 +152,7 @@ class ACE_Medical_Actions { class Tourniquet: fieldDressing { displayName = CSTRING(Apply_Tourniquet); displayNameProgress = CSTRING(Applying_Tourniquet); + allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r", "body"}; items[] = {"ACE_tourniquet"}; treatmentTime = 6; callbackSuccess = QUOTE(DFUNC(treatmentTourniquet)); @@ -155,6 +162,7 @@ class ACE_Medical_Actions { class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); displayNameProgress = CSTRING(Injecting_Morphine); + allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; category = "medication"; items[] = {"ACE_morphine"}; treatmentTime = 3; @@ -177,6 +185,7 @@ class ACE_Medical_Actions { class BloodIV: fieldDressing { displayName = CSTRING(Actions_Blood4_1000); displayNameProgress = CSTRING(Transfusing_Blood); + allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; category = "advanced"; items[] = {"ACE_bloodIV"}; requiredMedic = 1; @@ -293,6 +302,7 @@ class ACE_Medical_Actions { displayNameProgress = CSTRING(Actions_PerformingCPR); category = "advanced"; treatmentLocations[] = {"All"}; + allowedSelections[] = {"body"}; requiredMedic = 0; treatmentTime = 15; items[] = {}; diff --git a/addons/medical/functions/fnc_canTreat.sqf b/addons/medical/functions/fnc_canTreat.sqf index 4795ccc561..e0cab95420 100644 --- a/addons/medical/functions/fnc_canTreat.sqf +++ b/addons/medical/functions/fnc_canTreat.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition", "_patientStateCondition"]; +private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition", "_patientStateCondition", "_allowedSelections"]; _caller = _this select 0; _target = _this select 1; _selectionName = _this select 2; @@ -44,6 +44,8 @@ if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false}; _items = getArray (_config >> "items"); if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false}; +_allowedSelections = getArray (_config >> "allowedSelections"); +if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith {false}; _return = true; if (getText (_config >> "condition") != "") then { diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index 18f3406df2..a326a289cf 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig", "_patientStateCondition"]; +private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig", "_patientStateCondition", "_allowedSelections"]; _caller = _this select 0; _target = _this select 1; _selectionName = _this select 2; @@ -49,6 +49,9 @@ _medicRequired = if (isNumber (_config >> "requiredMedic")) then { if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false}; +_allowedSelections = getArray (_config >> "allowedSelections"); +if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith {false}; + // Check item _items = getArray (_config >> "items"); if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false}; From 8b802006a43908ef573c6d7266c6a92ad283f7fa Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 7 Aug 2015 00:32:12 +0200 Subject: [PATCH 30/78] Moved no interaction menu support inside the function, made code run selectively on server/clients, fixes #2037, closes #1945 --- addons/slideshow/CfgVehicles.hpp | 2 +- .../functions/fnc_createSlideshow.sqf | 21 ++++++++++++++----- addons/slideshow/functions/fnc_moduleInit.sqf | 9 ++------ 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/addons/slideshow/CfgVehicles.hpp b/addons/slideshow/CfgVehicles.hpp index 7bb3b81713..7e82d48ffc 100644 --- a/addons/slideshow/CfgVehicles.hpp +++ b/addons/slideshow/CfgVehicles.hpp @@ -6,7 +6,7 @@ class CfgVehicles { displayName = CSTRING(DisplayName); function = QFUNC(moduleInit); scope = 2; - isGlobal = 0; // Server only + isGlobal = 1; isTriggerActivated = 0; isDisposable = 0; icon = QUOTE(PATHTOF(UI\Icon_Module_Slideshow_ca.paa)); diff --git a/addons/slideshow/functions/fnc_createSlideshow.sqf b/addons/slideshow/functions/fnc_createSlideshow.sqf index debeac3340..6165453a1a 100644 --- a/addons/slideshow/functions/fnc_createSlideshow.sqf +++ b/addons/slideshow/functions/fnc_createSlideshow.sqf @@ -40,15 +40,24 @@ if (count _controllers == 0) then { TRACE_4("Information",_objects,_controllers,_images,_names); // Default images on whiteboards (first image) -{ - _x setObjectTextureGlobal [0, _images select 0]; -} forEach _objects; +if (isServer) then { + { + _x setObjectTextureGlobal [0, _images select 0]; + } forEach _objects; + + // Number of slideshows (multiple modules support) + GVAR(slideshows) = GVAR(slideshows) + 1; +}; -// Number of slideshows (multiple modules support) -GVAR(slideshows) = GVAR(slideshows) + 1; private ["_currentSlideshow"]; _currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets changed during execution of below code +// If interaction menu module is not present, set default duration value +if (["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { + _duration = 5; + diag_log text format ["[ACE]: Slideshow: Interaction Menu module not present, defaulting duration value to %1", _duration]; +}; + // Add interactions if automatic transitions are disabled, else setup automatic transitions if (_duration == 0) then { private ["_actionsObject", "_actionsClass", "_mainAction", "_slidesAction"]; @@ -67,6 +76,8 @@ if (_duration == 0) then { [_x, 0, ["ACE_MainActions"], _slidesAction] call EFUNC(interact_menu,addActionToObject); } forEach _controllers; } else { + if !(isServer) exitWith {}; + // Formatted GVAR string (multiple modules support) private ["_varString"]; _varString = format [QGVAR(slideshow%1), _currentSlideshow]; diff --git a/addons/slideshow/functions/fnc_moduleInit.sqf b/addons/slideshow/functions/fnc_moduleInit.sqf index 54f04b3a16..8684ffb9ba 100644 --- a/addons/slideshow/functions/fnc_moduleInit.sqf +++ b/addons/slideshow/functions/fnc_moduleInit.sqf @@ -15,7 +15,8 @@ //#define DEBUG_MODE_FULL #include "script_component.hpp" -if !(isServer) exitWith {}; +// Exit on Headless Client +if (!hasInterface && !isDedicated) exitWith {}; PARAMS_3(_logic,_units,_activated); @@ -33,12 +34,6 @@ _images = [_logic getVariable ["Images", ""], true, false] call FUNC(makeList); _names = [_logic getVariable ["Names", ""], true, false] call FUNC(makeList); _duration = _logic getVariable ["Duration", 0]; -// If interaction menu module is not present, set default duration value -if (["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { - _duration = 5; - diag_log "[ACE]: ace_interact_menu not present, assuming default Slideshow duration value."; -}; - // Prepare with actions [_objects, _controllers, _images, _names, _duration] call FUNC(createSlideshow); From 5f313c75d5960a82d75d337660ac3d09f435eeb7 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 05:37:41 +0200 Subject: [PATCH 31/78] Cleanup of medical_menu --- .../functions/fnc_collectActions.sqf | 42 ++++++----- .../functions/fnc_getTreatmentOptions.sqf | 23 +++--- .../functions/fnc_handleUI_DisplayOptions.sqf | 50 +++++++------ .../fnc_handleUI_dropDownTriageCard.sqf | 21 ++++-- .../medical_menu/functions/fnc_onMenuOpen.sqf | 68 +++++++++-------- .../medical_menu/functions/fnc_openMenu.sqf | 11 +-- .../functions/fnc_setTriageStatus.sqf | 7 +- .../functions/fnc_updateActivityLog.sqf | 31 ++++---- .../functions/fnc_updateBodyImage.sqf | 25 ++++--- .../functions/fnc_updateIcons.sqf | 28 ++++--- .../functions/fnc_updateInformationLists.sqf | 25 ++++--- .../functions/fnc_updateUIInfo.sqf | 74 ++++++++++--------- 12 files changed, 217 insertions(+), 188 deletions(-) diff --git a/addons/medical_menu/functions/fnc_collectActions.sqf b/addons/medical_menu/functions/fnc_collectActions.sqf index 6f106aca91..8e8f7cd10d 100644 --- a/addons/medical_menu/functions/fnc_collectActions.sqf +++ b/addons/medical_menu/functions/fnc_collectActions.sqf @@ -3,38 +3,40 @@ * Collect treatment actions from medical config * * Arguments: + * None * * Return Value: - * NONE + * None + * + * Example: + * [] call ace_medical_menu_fnc_collectActions * * Public: No */ - #include "script_component.hpp" -private ["_configBasic", "_configAdvanced", "_compileActionsLevel"]; +private ["_configBasic", "_configAdvanced", "_fnc_compileActionsLevel"]; _configBasic = (configFile >> "ACE_Medical_Actions" >> "Basic"); _configAdvanced = (configFile >> "ACE_Medical_Actions" >> "Advanced"); - -_compileActionsLevel = { - private [ "_config", "_entryCount", "_actions", "_action", "_displayName","_condition", "_category", "_statement"]; - _config = _this select 0; - _entryCount = (count _config) - 1; +_fnc_compileActionsLevel = { + private ["_entryCount", "_actions", "_displayName", "_condition", "_category", "_statement"]; + params ["_config"]; _actions = []; - for "_i" from 0 to _entryCount /* step +1 */ do { - _action = _config select _i; - if (isClass _action) then { - _displayName = getText (_action >> "displayName"); - _category = getText (_action >> "category"); - _condition = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,canTreatCached)), configName _action]; - _statement = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,treatment)), configName _action]; - _actions pushback [_displayName, _category, compile _condition, compile _statement]; + { + if (isClass _x) then { + _displayName = getText (_x >> "displayName"); + _category = getText (_x >> "category"); + _condition = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,canTreatCached)), configName _x]; + _statement = format[QUOTE([ARR_4(ACE_player, GVAR(INTERACTION_TARGET), EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart), '%1')] call DEFUNC(medical,treatment)), configName _x]; + _actions pushBack [_displayName, _category, compile _condition, compile _statement]; }; - }; - _actions; + nil + } count _config; + + _actions // return }; -GVAR(actionsBasic) = [_configBasic] call _compileActionsLevel; -GVAR(actionsAdvanced) = [_configAdvanced] call _compileActionsLevel; +GVAR(actionsBasic) = [_configBasic] call _fnc_compileActionsLevel; +GVAR(actionsAdvanced) = [_configAdvanced] call _fnc_compileActionsLevel; diff --git a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf index b317f539c8..4b03d27970 100644 --- a/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf +++ b/addons/medical_menu/functions/fnc_getTreatmentOptions.sqf @@ -10,16 +10,17 @@ * Return Value: * Available actions * + * Exmaple: + * [ACE_player, poor_dude, "some category"] call ace_medical_menu_fnc_getTreatmentOptions + * * Public: No */ - #include "script_component.hpp" -private ["_player", "_target", "_name", "_actions"]; -_player = _this select 0; -_target = _this select 1; -_name = _this select 2; -if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitwith {[]}; +private "_actions"; +params ["_player", "_target", "_name"]; + +if (!([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitwith {[]}; _actions = if (EGVAR(medical,level) == 2) then { GVAR(actionsAdvanced); @@ -31,9 +32,11 @@ _collectedActions = []; _bodyPart = EGVAR(medical,SELECTIONS) select GVAR(selectedBodyPart); { - if (_name == (_x select 1) && {call (_x select 2)}) then { - _collectedActions pushback _x; + _x params ["", "_currentCategory", "_currentCondition"]; + if (_name == _currentCategory && {call _currentCondition}) then { + _collectedActions pushBack _x; }; -}foreach _actions; + nil +} count _actions; -_collectedActions; +_collectedActions // return diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf index 621ef0e702..b156435839 100644 --- a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf +++ b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf @@ -6,27 +6,31 @@ * 0: Category name * * Return Value: - * NONE + * None + * + * Example: + * ["some category"] call ace_medical_menu_handleUI_DisplayOptions * * Public: No */ - #include "script_component.hpp" -#define START_IDC 20 -#define END_IDC 27 -#define AMOUNT_OF_ENTRIES (count _entries) +#define START_IDC 20 +#define END_IDC 27 +#define AMOUNT_OF_ENTRIES (count _entries) -private ["_name","_entries","_display","_newTarget","_counter","_card","_ctrl","_code"]; -_name = _this select 0; if (!hasInterface) exitwith{}; +private ["_entries", "_display", "_newTarget", "_card", "_ctrl", "_code"]; + +params ["_name"]; + disableSerialization; + _display = uiNamespace getVariable QGVAR(medicalMenu); if (isNil "_display") exitwith {}; // no valid dialog present -if ((_name == "toggle")) exitwith { - +if (_name isEqualTo "toggle") exitwith { if (GVAR(INTERACTION_TARGET) != ACE_player) then { _newTarget = ACE_player; } else { @@ -42,7 +46,7 @@ if ((_name == "toggle")) exitwith { }; // Clean the dropdown options list from all actions -for [{_x=START_IDC},{_x <= END_IDC},{_x=_x+1}] do { +for [{_x = START_IDC}, {_x <= END_IDC}, {_x = _x + 1}] do { _ctrl = (_display displayCtrl (_x)); _ctrl ctrlSetText ""; _ctrl ctrlShow false; @@ -55,34 +59,34 @@ GVAR(LatestDisplayOptionMenu) = _name; // The triage card has no options available lbClear 212; -if (_name == "triage") exitwith { - ctrlEnable[212,true]; - _card = ([GVAR(INTERACTION_TARGET)] call FUNC(getTriageList)); +if (_name isEqualTo "triage") exitwith { + ctrlEnable [212, true]; + _card = [GVAR(INTERACTION_TARGET)] call FUNC(getTriageList); { - lbadd[212,format["%1 x%2", getText(configFile >> "CfgWeapons" >> (_x select 0) >> "displayName"), _x select 1]]; - }foreach _card; + lbAdd [212, format["%1 x%2", getText(configFile >> "CfgWeapons" >> (_x select 0) >> "displayName"), _x select 1]]; + } forEach _card; if (count _card == 0) then { - lbadd[212,"No Entries"]; + lbAdd [212, "No Entries"]; }; }; -ctrlEnable[212,false]; +ctrlEnable [212, false]; _entries = [ACE_player, GVAR(INTERACTION_TARGET), _name] call FUNC(getTreatmentOptions); { //player sidechat format["TRIGGERED: %1",_x]; - if (_foreachIndex > END_IDC) exitwith {}; - _ctrl = (_display displayCtrl (START_IDC + _foreachIndex)); - if (!(_foreachIndex > AMOUNT_OF_ENTRIES)) then { + if (_forEachIndex > END_IDC) exitwith {}; + _ctrl = (_display displayCtrl (START_IDC + _forEachIndex)); + if (!(_forEachIndex > AMOUNT_OF_ENTRIES)) then { _ctrl ctrlSetText (_x select 0); - _code = format["ace_medical_menu_pendingReopen = true; call %1;",(_x select 3)]; + _code = format ["ace_medical_menu_pendingReopen = true; call %1;", (_x select 3)]; _ctrl ctrlSetEventHandler ["ButtonClick", _code]; _ctrl ctrlSetTooltip (_x select 0); // TODO implement _ctrl ctrlShow true; } else { _ctrl ctrlSetText ""; - _ctrl ctrlSetEventHandler ["ButtonClick",""]; + _ctrl ctrlSetEventHandler ["ButtonClick", ""]; }; _ctrl ctrlCommit 0; -}foreach _entries; +} forEach _entries; diff --git a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf index 844fc20051..fb924fc40b 100644 --- a/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf +++ b/addons/medical_menu/functions/fnc_handleUI_dropDownTriageCard.sqf @@ -3,28 +3,33 @@ * Handle the triage card display * * Arguments: + * None * * Return Value: - * NONE + * None + * + * Example: + * [] call ace_medical_menu_handleUI_dropDownTriageCard * * Public: No */ - #include "script_component.hpp" -private ["_display","_pos","_ctrl","_curPos","_idc"]; +private ["_display", "_pos", "_ctrl", "_currentPos", "_idc"]; + disableSerialization; + _display = uiNamespace getVariable QGVAR(medicalMenu); -_pos = [ 0,0,0,0]; -_curPos = ctrlPosition (_display displayCtrl 2002); -if ((_curPos select 0) == 0 && (_curPos select 1) == 0) then { +_pos = [0, 0, 0, 0]; +_currentPos = ctrlPosition (_display displayCtrl 2002); +_currentPos params ["_currentPosX", "_currentPosY"]; +if (_currentPosX == 0 && _currentPosY == 0) then { _pos = ctrlPosition (_display displayCtrl 2001); }; for "_idc" from 2002 to 2006 step 1 do { _pos set [1, (_pos select 1) + (_pos select 3)]; - _ctrl = (_display displayCtrl _idc); + _ctrl = _display displayCtrl _idc; _ctrl ctrlSetPosition _pos; _ctrl ctrlCommit 0; }; - diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index 26f3392cb1..52a957ae93 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -3,17 +3,25 @@ * Handle medical menu opened * * Arguments: + * 0: Medical Menu display * * Return Value: - * NONE + * None + * + * Example: + * [medical_menu] call ace_medical_menu_onMenuOpen * * Public: No */ - - #include "script_component.hpp" -if (isnil QGVAR(LatestDisplayOptionMenu)) then { +private "_target"; + +params ["_display"]; + +if (isNil "_display") exitwith {}; + +if (isNil QGVAR(LatestDisplayOptionMenu)) then { GVAR(LatestDisplayOptionMenu) = "triage"; } else { if (GVAR(LatestDisplayOptionMenu) == "toggle") then { @@ -22,52 +30,48 @@ if (isnil QGVAR(LatestDisplayOptionMenu)) then { }; }; -private ["_display","_target"]; _target = GVAR(INTERACTION_TARGET); -if (isnil QGVAR(INTERACTION_TARGET_PREVIOUS)) then { +if (isNil QGVAR(INTERACTION_TARGET_PREVIOUS)) then { GVAR(INTERACTION_TARGET_PREVIOUS) = _target; }; [GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); - -// 11 till 18 disableSerialization; -_display = _this select 0; //uiNamespace getVariable QGVAR(medicalMenu); -if (isnil "_display") exitwith {}; + [_target, _display] call FUNC(updateUIInfo); -(_display displayCtrl 11) ctrlSetTooltip localize "STR_ACE_Medical_Menu_VIEW_TRIAGE_CARD"; -(_display displayCtrl 12) ctrlSetTooltip localize "STR_ACE_Medical_Menu_EXAMINE_PATIENT"; -(_display displayCtrl 13) ctrlSetTooltip localize "STR_ACE_Medical_Menu_BANDAGE_FRACTURES"; -(_display displayCtrl 14) ctrlSetTooltip localize "STR_ACE_Medical_Menu_MEDICATION"; -(_display displayCtrl 15) ctrlSetTooltip localize "STR_ACE_Medical_Menu_AIRWAY_MANAGEMENT"; -(_display displayCtrl 16) ctrlSetTooltip localize "STR_ACE_Medical_Menu_ADVANCED_TREATMENT"; -(_display displayCtrl 17) ctrlSetTooltip localize "STR_ACE_Medical_Menu_DRAG_CARRY"; -(_display displayCtrl 18) ctrlSetTooltip localize "STR_ACE_Medical_Menu_TOGGLE_SELF"; +(_display displayCtrl 11) ctrlSetTooltip localize LSTRING(VIEW_TRIAGE_CARD); +(_display displayCtrl 12) ctrlSetTooltip localize LSTRING(EXAMINE_PATIENT); +(_display displayCtrl 13) ctrlSetTooltip localize LSTRING(BANDAGE_FRACTURES); +(_display displayCtrl 14) ctrlSetTooltip localize LSTRING(MEDICATION); +(_display displayCtrl 15) ctrlSetTooltip localize LSTRING(AIRWAY_MANAGEMENT); +(_display displayCtrl 16) ctrlSetTooltip localize LSTRING(ADVANCED_TREATMENT); +(_display displayCtrl 17) ctrlSetTooltip localize LSTRING(DRAG_CARRY); +(_display displayCtrl 18) ctrlSetTooltip localize LSTRING(TOGGLE_SELF); -(_display displayCtrl 301) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_HEAD"; -(_display displayCtrl 302) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_TORSO"; -(_display displayCtrl 303) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_ARM_R"; -(_display displayCtrl 304) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_ARM_L"; -(_display displayCtrl 305) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_LEG_R"; -(_display displayCtrl 306) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_LEG_L"; -(_display displayCtrl 2001) ctrlSetTooltip localize "STR_ACE_Medical_Menu_SELECT_TRIAGE_STATUS"; +(_display displayCtrl 301) ctrlSetTooltip localize LSTRING(SELECT_HEAD); +(_display displayCtrl 302) ctrlSetTooltip localize LSTRING(SELECT_TORSO); +(_display displayCtrl 303) ctrlSetTooltip localize LSTRING(SELECT_ARM_R); +(_display displayCtrl 304) ctrlSetTooltip localize LSTRING(SELECT_ARM_L); +(_display displayCtrl 305) ctrlSetTooltip localize LSTRING(SELECT_LEG_R); +(_display displayCtrl 306) ctrlSetTooltip localize LSTRING(SELECT_LEG_L); +(_display displayCtrl 2001) ctrlSetTooltip localize LSTRING(SELECT_TRIAGE_STATUS); -(_display displayCtrl 1) ctrlSetText format["%1",[_target] call EFUNC(common,getName)]; -setMousePosition [ 0.4, 0.4]; +(_display displayCtrl 1) ctrlSetText format ["%1", [_target] call EFUNC(common,getName)]; +setMousePosition [0.4, 0.4]; [QGVAR(onMenuOpen), "onEachFrame", { + params ["_display"]; if (isNull GVAR(INTERACTION_TARGET)) then { GVAR(INTERACTION_TARGET) = ACE_player; }; - [GVAR(INTERACTION_TARGET), _this select 0] call FUNC(updateUIInfo); + [GVAR(INTERACTION_TARGET), _display] call FUNC(updateUIInfo); [GVAR(INTERACTION_TARGET)] call FUNC(updateIcons); [GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); _status = [GVAR(INTERACTION_TARGET)] call FUNC(getTriageStatus); - ((_this select 0) displayCtrl 2000) ctrlSetText (_status select 0); - ((_this select 0) displayCtrl 2000) ctrlSetBackgroundColor (_status select 2); - + (_display displayCtrl 2000) ctrlSetText (_status select 0); + (_display displayCtrl 2000) ctrlSetBackgroundColor (_status select 2); }, [_display]] call BIS_fnc_addStackedEventHandler; - ["Medical_onMenuOpen", [ACE_player, _interactionTarget]] call ace_common_fnc_localEvent; + ["Medical_onMenuOpen", [ACE_player, _interactionTarget]] call EFUNC(common,localEvent); diff --git a/addons/medical_menu/functions/fnc_openMenu.sqf b/addons/medical_menu/functions/fnc_openMenu.sqf index 8803c99ef2..3bc67f0028 100644 --- a/addons/medical_menu/functions/fnc_openMenu.sqf +++ b/addons/medical_menu/functions/fnc_openMenu.sqf @@ -6,22 +6,23 @@ * 0: Target * * Return Value: - * NONE + * None + * + * Example: + * [some_player] call ace_medical_menu_openMenu * * Public: No */ - #include "script_component.hpp" -private ["_interactionTarget"]; -_interactionTarget = _this select 0; +params ["_interactionTarget"]; if (dialog || isNull _interactionTarget) exitwith { disableSerialization; private "_display"; _display = uiNamespace getVariable QGVAR(medicalMenu); - if (!isnil "_display") then { + if (!isNil "_display") then { closeDialog 314412; }; }; diff --git a/addons/medical_menu/functions/fnc_setTriageStatus.sqf b/addons/medical_menu/functions/fnc_setTriageStatus.sqf index 468a044f91..7e7c764aee 100644 --- a/addons/medical_menu/functions/fnc_setTriageStatus.sqf +++ b/addons/medical_menu/functions/fnc_setTriageStatus.sqf @@ -7,15 +7,12 @@ * 1: Status * * Return Value: - * NONE + * None * * Public: No */ - #include "script_component.hpp" -private ["_target", "_status"]; -_target = _this select 0; -_status = _this select 1; +params ["_target", "_status"]; _target setvariable [QEGVAR(medical,triageLevel), _status, true]; diff --git a/addons/medical_menu/functions/fnc_updateActivityLog.sqf b/addons/medical_menu/functions/fnc_updateActivityLog.sqf index 2e1fddcf2a..392359064a 100644 --- a/addons/medical_menu/functions/fnc_updateActivityLog.sqf +++ b/addons/medical_menu/functions/fnc_updateActivityLog.sqf @@ -7,26 +7,25 @@ * 1: log collection * * Return Value: - * NONE + * None + * + * Example: + * [some_display, log] call ace_medical_menu_updateActivityLog * * Public: No */ - #include "script_component.hpp" -private ["_display", "_logs", "_logCtrl"]; -_display = _this select 0; -_logs = _this select 1; +private "_logCtrl"; -_logCtrl = (_display displayCtrl 214); +params ["_display", "_logs"]; + +_logCtrl = _display displayCtrl 214; lbClear _logCtrl; -private ["_message", "_moment", "_arguments"]; { - // [_message,_moment,_type, _arguments] - _message = _x select 0; - _moment = _x select 1; - _arguments = _x select 3; + _x params ["_message", "_moment", "_arguments"]; + if (isLocalized _message) then { _message = localize _message; }; @@ -35,7 +34,9 @@ private ["_message", "_moment", "_arguments"]; if (typeName _x == "STRING" && {isLocalized _x}) then { _arguments set [_foreachIndex, localize _x]; }; - }foreach _arguments; - _message = format([_message] + _arguments); - _logCtrl lbAdd format["%1 %2", _moment, _message]; -}foreach _logs; + } forEach _arguments; + + _message = format ([_message] + _arguments); + _logCtrl lbAdd format ["%1 %2", _moment, _message]; + nil +} count _logs; diff --git a/addons/medical_menu/functions/fnc_updateBodyImage.sqf b/addons/medical_menu/functions/fnc_updateBodyImage.sqf index 707cd3e87e..34b2f450c8 100644 --- a/addons/medical_menu/functions/fnc_updateBodyImage.sqf +++ b/addons/medical_menu/functions/fnc_updateBodyImage.sqf @@ -7,35 +7,36 @@ * 1: display * * Return Value: - * NONE + * None + * + * Example: + * [0.3, some_display] call ace_medical_menu_updateBodyImage * * Public: No */ - #include "script_component.hpp" -private ["_selectionBloodLoss", "_display"]; -_selectionBloodLoss = _this select 0; -_display = _this select 1; +params ["_selectionBloodLoss", "_display"]; // Handle the body image coloring -_availableSelections = [50,51,52,53,54,55]; +_availableSelections = [50, 51, 52, 53, 54, 55]; { private ["_red", "_green", "_blue"]; - _total = _x; _red = 1; _green = 1; _blue = 1; - if (_total > 0) then { + + if (_x > 0) then { if (_damaged select _forEachIndex) then { - _green = (0.9 - _total) max 0; + _green = (0.9 - _x) max 0; _blue = _green; } else { - _green = (0.9 - _total) max 0; + _green = (0.9 - _x) max 0; _red = _green; //_blue = _green; }; }; - (_display displayCtrl (_availableSelections select _foreachIndex)) ctrlSetTextColor [_red, _green, _blue, 1.0]; -}foreach _selectionBloodLoss; + + (_display displayCtrl (_availableSelections select _forEachIndex)) ctrlSetTextColor [_red, _green, _blue, 1.0]; +} forEach _selectionBloodLoss; diff --git a/addons/medical_menu/functions/fnc_updateIcons.sqf b/addons/medical_menu/functions/fnc_updateIcons.sqf index 02570f1355..f9d3fc5ab4 100644 --- a/addons/medical_menu/functions/fnc_updateIcons.sqf +++ b/addons/medical_menu/functions/fnc_updateIcons.sqf @@ -3,27 +3,33 @@ * Update the category icons * * Arguments: + * None * * Return Value: - * NONE + * None + * + * Example: + * [] call ace_medical_menu_updateIcons * * Public: No */ - #include "script_component.hpp" -private ["_display","_startIDC","_idc","_options","_name","_amount"]; +#define START_IDC 111 +#define END_IDC 118 + +private ["_display", "_idc", "_options", "_name", "_amount"]; + disableSerialization; + _display = uiNamespace getVariable QGVAR(medicalMenu); -_startIDC = 111; - _options = ["triage" , "examine", "bandage", "medication", "airway", "advanced", "drag", "toggle"]; -for "_idc" from _startIDC to 118 step 1 do { - _amount = [ACE_player, GVAR(INTERACTION_TARGET), _options select (_idc - 111)] call FUNC(getTreatmentOptions); - if ((count _amount) > 0 || _idc == 111 || _idc == 118) then { - (_display displayCtrl _idc) ctrlSettextColor [1,1,1,1]; +for "_idc" from START_IDC to END_IDC step 1 do { + _amount = [ACE_player, GVAR(INTERACTION_TARGET), _options select (_idc - START_IDC)] call FUNC(getTreatmentOptions); + if ((count _amount) > 0 || _idc == START_IDC || _idc == END_IDC) then { + (_display displayCtrl _idc) ctrlSettextColor [1, 1, 1, 1]; } else { - (_display displayCtrl _idc) ctrlSettextColor [0.4,0.4,0.4,1]; + (_display displayCtrl _idc) ctrlSettextColor [0.4, 0.4, 0.4, 1]; }; -}; \ No newline at end of file +}; diff --git a/addons/medical_menu/functions/fnc_updateInformationLists.sqf b/addons/medical_menu/functions/fnc_updateInformationLists.sqf index f96e8c9943..c8388b2bd3 100644 --- a/addons/medical_menu/functions/fnc_updateInformationLists.sqf +++ b/addons/medical_menu/functions/fnc_updateInformationLists.sqf @@ -8,30 +8,31 @@ * 2: injury collection * * Return Value: - * NONE + * None * * Public: No */ - #include "script_component.hpp" -private ["_display", "_genericMessages", "_allInjuryTexts", "_lbCtrl"]; -_display = _this select 0; -_genericMessages = _this select 1; -_allInjuryTexts = _this select 2; +private "_lbCtrl"; -_lbCtrl = (_display displayCtrl 213); +params["_display", "_genericMessages", "_allInjuryTexts"]; + +_lbCtrl = _display displayCtrl 213; lbClear _lbCtrl; { _lbCtrl lbAdd (_x select 0); - _lbCtrl lbSetColor [_foreachIndex, _x select 1]; -}foreach _genericMessages; + _lbCtrl lbSetColor [_forEachIndex, _x select 1]; + nil +} count _genericMessages; _amountOfGeneric = count _genericMessages; { _lbCtrl lbAdd (_x select 0); - _lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _x select 1]; -}foreach _allInjuryTexts; + _lbCtrl lbSetColor [_forEachIndex + _amountOfGeneric, _x select 1]; + nil +} count _allInjuryTexts; + if (count _allInjuryTexts == 0) then { - _lbCtrl lbAdd (localize ELSTRING(medical,NoInjuriesBodypart)); + _lbCtrl lbAdd localize ELSTRING(medical,NoInjuriesBodypart); }; diff --git a/addons/medical_menu/functions/fnc_updateUIInfo.sqf b/addons/medical_menu/functions/fnc_updateUIInfo.sqf index cf8e868827..d5c3b9eed6 100644 --- a/addons/medical_menu/functions/fnc_updateUIInfo.sqf +++ b/addons/medical_menu/functions/fnc_updateUIInfo.sqf @@ -7,16 +7,18 @@ * 1: display * * Return Value: - * NONE + * None + * + * Example: + * [some_player, some_display] call ace_medical_menu_updateUIInfo * * Public: No */ - #include "script_component.hpp" -private ["_targeT", "_display", "_genericMessages", "_totalIvVolume", "_damaged", "_selectionBloodLoss", "_allInjuryTexts"]; -_target = _this select 0; -_display = _this select 1; +private ["_genericMessages", "_totalIvVolume", "_damaged", "_selectionBloodLoss", "_allInjuryTexts"]; + +params ["_target", "_display"]; _selectionN = GVAR(selectedBodyPart); if (_selectionN < 0 || _selectionN > 5) exitwith {}; @@ -24,89 +26,91 @@ if (_selectionN < 0 || _selectionN > 5) exitwith {}; _genericMessages = []; if (EGVAR(medical,level) >= 2) then { _partText = [ELSTRING(medical,Head), ELSTRING(medical,Torso), ELSTRING(medical,LeftArm) ,ELSTRING(medical,RightArm) ,ELSTRING(medical,LeftLeg), ELSTRING(medical,RightLeg)] select _selectionN; - _genericMessages pushback [localize _partText, [1, 1, 1, 1]]; + _genericMessages pushBack [localize _partText, [1, 1, 1, 1]]; }; -if (_target getvariable[QGVAR(isBleeding), false]) then { - _genericMessages pushback [localize ELSTRING(medical,Status_Bleeding), [1, 0.1, 0.1, 1]]; -}; -if (_target getvariable[QGVAR(hasLostBlood), 0] > 1) then { - _genericMessages pushback [localize ELSTRING(medical,Status_Lost_Blood), [1, 0.1, 0.1, 1]]; +if (_target getVariable [QGVAR(isBleeding), false]) then { + _genericMessages pushBack [localize ELSTRING(medical,Status_Bleeding), [1, 0.1, 0.1, 1]]; }; -if (((_target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]) select _selectionN) > 0) then { - _genericMessages pushback [localize ELSTRING(medical,Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; +if (_target getVariable [QGVAR(hasLostBlood), 0] > 1) then { + _genericMessages pushBack [localize ELSTRING(medical,Status_Lost_Blood), [1, 0.1, 0.1, 1]]; }; -if (_target getvariable[QGVAR(hasPain), false]) then { - _genericMessages pushback [localize ELSTRING(medical,Status_Pain), [1, 1, 1, 1]]; + +if (((_target getVariable [QGVAR(tourniquets), [0, 0, 0, 0, 0, 0]]) select _selectionN) > 0) then { + _genericMessages pushBack [localize ELSTRING(medical,Status_Tourniquet_Applied), [0.77, 0.51, 0.08, 1]]; +}; + +if (_target getVariable [QGVAR(hasPain), false]) then { + _genericMessages pushBack [localize ELSTRING(medical,Status_Pain), [1, 1, 1, 1]]; }; _totalIvVolume = 0; { private "_value"; - _value = _target getvariable _x; - if !(isnil "_value") then { - _totalIvVolume = _totalIvVolume + (_target getvariable [_x, 0]); + _value = _target getVariable _x; + if (!isNil "_value") then { + _totalIvVolume = _totalIvVolume + (_target getVariable [_x, 0]); }; -}foreach GVAR(IVBags); +} count GVAR(IVBags); + if (_totalIvVolume >= 1) then { - _genericMessages pushback [format[localize ELSTRING(medical,receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; + _genericMessages pushBack [format [localize ELSTRING(medical,receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; }; _damaged = [false, false, false, false, false, false]; -_selectionBloodLoss = [0,0,0,0,0,0]; - +_selectionBloodLoss = [0, 0, 0, 0, 0, 0]; _allInjuryTexts = []; if (EGVAR(medical,level) >= 2) then { - _openWounds = _target getvariable [QEGVAR(medical,openWounds), []]; + _openWounds = _target getVariable [QEGVAR(medical,openWounds), []]; private "_amountOf"; { _amountOf = _x select 3; // Find how much this bodypart is bleeding if (_amountOf > 0) then { - _damaged set[_x select 2, true]; - _selectionBloodLoss set [(_x select 2), (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; + _damaged set [_x select 2, true]; + _selectionBloodLoss set [_x select 2, (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; if (_selectionN == (_x select 2)) then { // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] if (_amountOf >= 1) then { // TODO localization - _allInjuryTexts pushback [format["%2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [1,1,1,1]]; + _allInjuryTexts pushBack [format["%2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [1,1,1,1]]; } else { // TODO localization - _allInjuryTexts pushback [format["Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [1,1,1,1]]; + _allInjuryTexts pushBack [format["Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [1,1,1,1]]; }; }; }; - }foreach _openWounds; + } forEach _openWounds; - _bandagedwounds = _target getvariable [QEGVAR(medical,bandagedWounds), []]; + _bandagedwounds = _target getVariable [QEGVAR(medical,bandagedWounds), []]; { _amountOf = _x select 3; // Find how much this bodypart is bleeding if !(_damaged select (_x select 2)) then { - _selectionBloodLoss set [(_x select 2), (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; + _selectionBloodLoss set [_x select 2, (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; }; if (_selectionN == (_x select 2)) then { // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] if (_amountOf > 0) then { if (_amountOf >= 1) then { // TODO localization - _allInjuryTexts pushback [format["[B] %2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [0.88,0.7,0.65,1]]; + _allInjuryTexts pushBack [format ["[B] %2x %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [0.88,0.7,0.65,1]]; } else { // TODO localization - _allInjuryTexts pushback [format["[B] Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [0.88,0.7,0.65,1]]; + _allInjuryTexts pushBack [format ["[B] Partial %1", (EGVAR(medical,AllWoundInjuryTypes) select (_x select 1)) select 6], [0.88,0.7,0.65,1]]; }; }; }; - }foreach _bandagedwounds; + } forEach _bandagedwounds; } else { _damaged = [true, true, true, true, true, true]; { _selectionBloodLoss set [_forEachIndex, _target getHitPointDamage _x]; - if (_target getHitPointDamage _x > 0 && {_forEachIndex == _selectionN}) then { + if (_target getHitPointDamage _x > 0 && _forEachIndex == _selectionN) then { _pointDamage = _target getHitPointDamage _x; _severity = switch (true) do { case (_pointDamage > 0.5): {localize ELSTRING(medical,HeavilyWounded)}; @@ -129,7 +133,7 @@ if (EGVAR(medical,level) >= 2) then { [_selectionBloodLoss, _display] call FUNC(updateBodyImage); [_display, _genericMessages, _allInjuryTexts] call FUNC(updateInformationLists); -_logs = _target getvariable [QEGVAR(medical,logFile_Activity), []]; +_logs = _target getVariable [QEGVAR(medical,logFile_Activity), []]; [_display, _logs] call FUNC(updateActivityLog); _triageStatus = [_target] call EFUNC(medical,getTriageStatus); From d9eb7a3d2c089b569c0bba4ceb10f4395626e750 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 03:33:38 +0200 Subject: [PATCH 32/78] Added localizations for keybinding categories --- addons/common/XEH_postInit.sqf | 8 ++++++++ addons/common/stringtable.xml | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 62f7bc1180..ee34f1308d 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -341,6 +341,14 @@ if(isMultiplayer && { ACE_time > 0 || isNull player } ) then { GVAR(deviceKeyHandlingArray) = []; GVAR(deviceKeyCurrentIndex) = -1; +// Register localizations for the Keybinding categories +["ACE3 Equipment", localize LSTRING(ACEKeybindCategoryEquipment)] call cba_fnc_registerKeybindModPrettyName; +["ACE3 Common", localize LSTRING(ACEKeybindCategoryCommon)] call cba_fnc_registerKeybindModPrettyName; +["ACE3 Weapons", localize LSTRING(ACEKeybindCategoryWeapons)] call cba_fnc_registerKeybindModPrettyName; +["ACE3 Movement", localize LSTRING(ACEKeybindCategoryMovement)] call cba_fnc_registerKeybindModPrettyName; +["ACE3 Scope Adjustment", localize LSTRING(ACEKeybindCategoryScopeAdjustment)] call cba_fnc_registerKeybindModPrettyName; +["ACE3 Vehicles", localize LSTRING(ACEKeybindCategoryVehicles)] call cba_fnc_registerKeybindModPrettyName; + ["ACE3 Equipment", QGVAR(openDevice), (localize "STR_ACE_Common_toggleHandheldDevice"), { [] call FUNC(deviceKeyFindValidIndex); diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 6ed5e10d5a..c1958ffe59 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -598,5 +598,23 @@ Następne urządzenie podręczne Procházet ruční zařízení + + ACE3 Eqiupment + + + ACE3 Common + + + ACE3 Weapons + + + ACE3 Movement + + + ACE3 Scope Adjustment + + + ACE3 Vehicles + From c6cb18749dd3fb2707419f67b417f2e5eee7f06a Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 05:51:26 +0200 Subject: [PATCH 33/78] Fixed translation typo --- addons/common/stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index c1958ffe59..0319c1d2f2 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -599,7 +599,7 @@ Procházet ruční zařízení - ACE3 Eqiupment + ACE3 Equipment ACE3 Common From ef01660ab3c57d07fe020d8a4f5ca23d922887e2 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 08:07:10 +0200 Subject: [PATCH 34/78] Code cleanup in Tripod module --- addons/tripod/functions/fnc_adjust.sqf | 24 +++++++------- .../functions/fnc_handleScrollWheel.sqf | 4 +-- addons/tripod/functions/fnc_pickup.sqf | 14 ++++----- addons/tripod/functions/fnc_place.sqf | 31 ++++++++++--------- 4 files changed, 39 insertions(+), 34 deletions(-) diff --git a/addons/tripod/functions/fnc_adjust.sqf b/addons/tripod/functions/fnc_adjust.sqf index ce50d38cf0..1ba99cedbe 100644 --- a/addons/tripod/functions/fnc_adjust.sqf +++ b/addons/tripod/functions/fnc_adjust.sqf @@ -1,37 +1,39 @@ /* * Author: Ruthberg - * * Adjust tripod height * * Arguments: * 0: tripod * - * Return Value: - * Nothing - * * Return value: * None + * + * Example: + * [tripod] call ace_tripod_fnc_adjust + * + * Public: No */ #include "script_component.hpp" -PARAMS_1(_tripod); +params ["_tripod"]; GVAR(adjuster) = ACE_player; GVAR(adjusting) = true; GVAR(adjustPFH) = [{ - EXPLODE_1_PVT(_this select 0,_tripod); - + params ["_args", "_pfhId"]; + _args params ["_tripod"]; + if (GVAR(adjuster) != ACE_player || !GVAR(adjusting)) exitWith { call EFUNC(interaction,hideMouseHint); [ACE_player, "DefaultAction", ACE_player getVariable [QGVAR(Adjust), -1]] call EFUNC(Common,removeActionEventHandler); - [_this select 1] call cba_fnc_removePerFrameHandler; + [_pfhId] call cba_fnc_removePerFrameHandler; }; - + { _tripod animate [_x, 1 - GVAR(height)]; - } foreach ["slide_down_tripod", "retract_leg_1", "retract_leg_2", "retract_leg_3"]; - + } count ["slide_down_tripod", "retract_leg_1", "retract_leg_2", "retract_leg_3"]; + }, 0, [_tripod]] call CBA_fnc_addPerFrameHandler; [localize "STR_ACE_Tripod_Done", "", localize "STR_ACE_Tripod_ScrollAction"] call EFUNC(interaction,showMouseHint); diff --git a/addons/tripod/functions/fnc_handleScrollWheel.sqf b/addons/tripod/functions/fnc_handleScrollWheel.sqf index 7399bf0c2c..973a57dd2f 100644 --- a/addons/tripod/functions/fnc_handleScrollWheel.sqf +++ b/addons/tripod/functions/fnc_handleScrollWheel.sqf @@ -9,13 +9,13 @@ * handled * * Example: - * 1.2 call ace_tripod_fnc_handleScrollWheel; + * [1.2] call ace_tripod_fnc_handleScrollWheel; * * Public: No */ #include "script_component.hpp" -PARAMS_1(_scroll); +params ["_scroll"]; if (GETMVAR(ACE_Modifier,0) == 0 || GVAR(adjustPFH) == -1) exitWith { false }; diff --git a/addons/tripod/functions/fnc_pickup.sqf b/addons/tripod/functions/fnc_pickup.sqf index f264eb1e2e..24fc26ea1d 100644 --- a/addons/tripod/functions/fnc_pickup.sqf +++ b/addons/tripod/functions/fnc_pickup.sqf @@ -1,30 +1,30 @@ /* * Author: Rocko, Ruthberg - * * Pick up tripod * * Arguments: * 0: tripod * 1: unit * - * Return Value: - * Nothing - * * Return value: * None + * + * Example: + * [tripod, player] call ace_tripod_fnc_pickup + * + * Public: No */ #include "script_component.hpp" -PARAMS_2(_tripod,_unit); +params ["_tripod", "_unit"]; if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then { _unit playMove "AmovPercMstpSrasWrflDnon_diary"; }; [{ - PARAMS_2(_tripod,_unit); + params ["_tripod", "_unit"]; [_unit, "ACE_Tripod"] call EFUNC(common,addToInventory); deleteVehicle _tripod; - }, [_tripod, _unit], 1, 0]call EFUNC(common,waitAndExecute); diff --git a/addons/tripod/functions/fnc_place.sqf b/addons/tripod/functions/fnc_place.sqf index 5e9c783589..ce7f445885 100644 --- a/addons/tripod/functions/fnc_place.sqf +++ b/addons/tripod/functions/fnc_place.sqf @@ -1,21 +1,22 @@ /* * Author: Rocko, Ruthberg - * * Place down tripod * * Arguments: * 0: unit * 1: tripod class * - * Return Value: - * Nothing - * * Return value: * None + * + * Example: + * [player, "ACE_Tripod"] call ace_tripod_fnc_place + * + * Public: No */ #include "script_component.hpp" -PARAMS_2(_unit,_tripodClass); +params ["_unit", "_tripodClass"]; _unit removeItem _tripodClass; @@ -24,27 +25,29 @@ if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then { }; [{ - PARAMS_1(_unit); - + params ["_unit"]; + private ["_direction", "_position", "_tripod"]; _direction = getDir _unit; _position = (getPosASL _unit) vectorAdd [0.8 * sin(_direction), 0.8 * cos(_direction), 0.02]; - + _tripod = "ACE_TripodObject" createVehicle [0, 0, 0]; { _tripod animate [_x, 1]; - } foreach ["slide_down_tripod", "retract_leg_1", "retract_leg_2", "retract_leg_3"]; - + } count ["slide_down_tripod", "retract_leg_1", "retract_leg_2", "retract_leg_3"]; + [{ - EXPLODE_3_PVT(_this select 0,_tripod,_direction,_position); + params ["_args", "_pfhId"]; + _args params ["_tripod", "_direction", "_position"]; + if (_tripod animationPhase "slide_down_tripod" == 1) then { _tripod setDir _direction; _tripod setPosASL _position; if ((getPosATL _tripod select 2) - (getPos _tripod select 2) < 1E-5) then { - _tripod setVectorUp (surfaceNormal (position _tripod)); + _tripod setVectorUp (surfaceNormal (position _tripod)); }; - [_this select 1] call CBA_fnc_removePerFrameHandler; + [_pfhId] call CBA_fnc_removePerFrameHandler; }; }, 0, [_tripod, _direction, _position]] call CBA_fnc_addPerFrameHandler; - + }, [_unit], 1, 0] call EFUNC(common,waitAndExecute); From 0fafe27da91bf73f44ae8413d3be83ef1bfc6f99 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 08:19:15 +0200 Subject: [PATCH 35/78] Code cleanup in Tacticalladder module --- addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf | 10 +++++----- .../tacticalladder/functions/fnc_confirmTLdeploy.sqf | 10 +++++----- addons/tacticalladder/functions/fnc_deployTL.sqf | 6 +++--- .../tacticalladder/functions/fnc_handleScrollWheel.sqf | 8 ++++---- addons/tacticalladder/functions/fnc_pickupTL.sqf | 6 +++--- addons/tacticalladder/functions/fnc_positionTL.sqf | 8 ++++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf b/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf index 63a97d97e9..456d245832 100644 --- a/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf +++ b/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf @@ -9,7 +9,7 @@ * None * * Example: - * [_ladder] call ace_tacticalladder_fnc_cancelTLdeploy; + * [_ladder] call ace_tacticalladder_fnc_cancelTLdeploy * * Public: No */ @@ -17,16 +17,16 @@ #define __ANIMS ["extract_1","extract_2","extract_3","extract_4","extract_5","extract_6","extract_7","extract_8","extract_9","extract_10","extract_11"] -PARAMS_1(_ladder); +params ["_ladder"]; detach _ladder; _ladder animate ["rotate", 0]; { _ladder animate [_x, 0]; -} forEach __ANIMS; +} count __ANIMS; call EFUNC(interaction,hideMouseHint); -[ACE_player, "DefaultAction", ACE_player getVariable [QGVAR(Deploy), -1]] call EFUNC(Common,removeActionEventHandler); -[ACE_player, "zoomtemp", ACE_player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler); +[ACE_player, "DefaultAction", ACE_player getVariable [QGVAR(Deploy), -1]] call EFUNC(Common,removeActionEventHandler); +[ACE_player, "zoomtemp", ACE_player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler); GVAR(ladder) = objNull; diff --git a/addons/tacticalladder/functions/fnc_confirmTLdeploy.sqf b/addons/tacticalladder/functions/fnc_confirmTLdeploy.sqf index 93263c6aa0..764e5c73d8 100644 --- a/addons/tacticalladder/functions/fnc_confirmTLdeploy.sqf +++ b/addons/tacticalladder/functions/fnc_confirmTLdeploy.sqf @@ -6,16 +6,16 @@ * 0: ladder * * Return Value: - * Success? + * Success * * Example: - * [_ladder] call ace_tacticalladder_fnc_confirmTLdeploy; + * [_ladder] call ace_tacticalladder_fnc_confirmTLdeploy * * Public: No */ #include "script_component.hpp" -PARAMS_1(_ladder); +params ["_ladder"]; private ["_pos1", "_pos2"]; _pos1 = getPosASL GVAR(ladder); @@ -23,8 +23,8 @@ _pos2 = (GVAR(ladder) modelToWorld (GVAR(ladder) selectionPosition "check2")) ca if (lineIntersects [_pos1, _pos2, GVAR(ladder)]) exitWith { false }; call EFUNC(interaction,hideMouseHint); -[ACE_player, "DefaultAction", ACE_player getVariable [QGVAR(Deploy), -1]] call EFUNC(Common,removeActionEventHandler); -[ACE_player, "zoomtemp", ACE_player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler); +[ACE_player, "DefaultAction", ACE_player getVariable [QGVAR(Deploy), -1]] call EFUNC(Common,removeActionEventHandler); +[ACE_player, "zoomtemp", ACE_player getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler); detach _ladder; GVAR(ladder) = objNull; diff --git a/addons/tacticalladder/functions/fnc_deployTL.sqf b/addons/tacticalladder/functions/fnc_deployTL.sqf index 7ad135ca90..14c386dda1 100644 --- a/addons/tacticalladder/functions/fnc_deployTL.sqf +++ b/addons/tacticalladder/functions/fnc_deployTL.sqf @@ -3,13 +3,13 @@ * Deploy tactical ladder * * Arguments: - * Nothing + * None * * Return Value: - * Nothing + * None * * Example: - * call ace_tacticalladder_fnc_deployTL; + * [] call ace_tacticalladder_fnc_deployTL * * Public: No */ diff --git a/addons/tacticalladder/functions/fnc_handleScrollWheel.sqf b/addons/tacticalladder/functions/fnc_handleScrollWheel.sqf index d08cb6e208..6b5107b814 100644 --- a/addons/tacticalladder/functions/fnc_handleScrollWheel.sqf +++ b/addons/tacticalladder/functions/fnc_handleScrollWheel.sqf @@ -9,13 +9,13 @@ * Handled * * Example: - * 1 call ace_tacticalladder_fnc_handleScrollWheel; + * [1] call ace_tacticalladder_fnc_handleScrollWheel; * * Public: No */ #include "script_component.hpp" -PARAMS_1(_scroll); +params ["_scroll"]; if (isNull GVAR(ladder)) exitWith { false }; @@ -37,7 +37,7 @@ if (GETMVAR(ACE_Modifier,0) == 0) then { if (GVAR(ladder) animationPhase (format["extract_%1", _currentStep]) == 1) then { GVAR(ladder) animate [format["extract_%1", _currentStep], 0]; GVAR(currentStep) = _currentStep - 1; - }; + }; }; } else { // Tilting @@ -45,4 +45,4 @@ if (GETMVAR(ACE_Modifier,0) == 0) then { GVAR(ladder) animate ["rotate", GVAR(currentAngle)]; }; -true \ No newline at end of file +true diff --git a/addons/tacticalladder/functions/fnc_pickupTL.sqf b/addons/tacticalladder/functions/fnc_pickupTL.sqf index c603f1feca..ad409f8870 100644 --- a/addons/tacticalladder/functions/fnc_pickupTL.sqf +++ b/addons/tacticalladder/functions/fnc_pickupTL.sqf @@ -7,10 +7,10 @@ * 1: unit * * Return Value: - * Success? + * Success * * Example: - * [_ladder, _unit] call ace_tacticalladder_fnc_pickupTL; + * [_ladder, _unit] call ace_tacticalladder_fnc_pickupTL * * Public: No */ @@ -18,7 +18,7 @@ if ((backpack ACE_player) != "") exitWith { false }; -PARAMS_2(_ladder,_unit); +params ["_ladder", "_unit"]; deleteVehicle _ladder; _unit addBackpack "ACE_TacticalLadder_Pack"; diff --git a/addons/tacticalladder/functions/fnc_positionTL.sqf b/addons/tacticalladder/functions/fnc_positionTL.sqf index 103792c851..1035101556 100644 --- a/addons/tacticalladder/functions/fnc_positionTL.sqf +++ b/addons/tacticalladder/functions/fnc_positionTL.sqf @@ -10,7 +10,7 @@ * None * * Example: - * [_ladder, _unit] call ace_tacticalladder_fnc_positionTL; + * [_ladder, _unit] call ace_tacticalladder_fnc_positionTL * * Public: No */ @@ -18,11 +18,11 @@ #define __ANIMS ["extract_1","extract_2","extract_3","extract_4","extract_5","extract_6","extract_7","extract_8","extract_9","extract_10","extract_11"] -PARAMS_2(_ladder,_unit); +params ["_ladder", "_unit"]; { _ladder animate [_x, 0]; -} forEach __ANIMS; +} count __ANIMS; _unit switchMove "amovpercmstpslowwrfldnon_player_idlesteady03"; _ladder attachTo [_unit, [0, 0.75, 0], ""]; // Position ladder in front of player @@ -30,7 +30,7 @@ _ladder attachTo [_unit, [0, 0.75, 0], ""]; // Position ladder in front of playe _ladder animate ["rotate", 0]; { _ladder animate [_x, 1]; -} forEach ["extract_1", "extract_2", "extract_3"]; // Extract ladder at head height (extract_3) +} count ["extract_1", "extract_2", "extract_3"]; // Extract ladder at head height (extract_3) GVAR(ladder) = _ladder; GVAR(cancelTime) = ACE_time + 1; // Workaround to prevent accidental canceling From 2f5f2824311d61afaad14f612fbc511fa1a3f52d Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 11:47:23 +0200 Subject: [PATCH 36/78] Cleanup code of Spottingscope module --- addons/spottingscope/functions/fnc_pickup.sqf | 16 +++++++-------- addons/spottingscope/functions/fnc_place.sqf | 20 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/addons/spottingscope/functions/fnc_pickup.sqf b/addons/spottingscope/functions/fnc_pickup.sqf index 3730068092..81c9bc10a5 100644 --- a/addons/spottingscope/functions/fnc_pickup.sqf +++ b/addons/spottingscope/functions/fnc_pickup.sqf @@ -1,30 +1,30 @@ /* * Author: Rocko, Ruthberg - * * Pick up spotting scope * * Arguments: * 0: spotting scope * 1: unit * - * Return Value: - * Nothing - * * Return value: * None + * + * Example: + * [spotting_scope, player] call ace_spottingscope_fnc_pickup + * + * Public: No */ #include "script_component.hpp" -PARAMS_2(_spottingScope,_unit); +params ["_spottingScope", "_unit"]; if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then { _unit playMove "AmovPercMstpSrasWrflDnon_diary"; }; [{ - PARAMS_2(_spottingScope,_unit); - + params ["_spottingScope", "_unit"]; + [_unit, "ACE_SpottingScope"] call EFUNC(common,addToInventory); deleteVehicle _spottingScope; - }, [_spottingScope, _unit], 1, 0]call EFUNC(common,waitAndExecute); diff --git a/addons/spottingscope/functions/fnc_place.sqf b/addons/spottingscope/functions/fnc_place.sqf index 4967151748..09f756c109 100644 --- a/addons/spottingscope/functions/fnc_place.sqf +++ b/addons/spottingscope/functions/fnc_place.sqf @@ -1,21 +1,22 @@ /* * Author: Rocko, Ruthberg - * * Place down spotting scope * * Arguments: * 0: unit * 1: scope class * - * Return Value: - * Nothing - * * Return value: * None + * + * Example: + * [player, "ACE_SpottingScope"] call ace_spottingscope_fnc_place + * + * Public: No */ #include "script_component.hpp" -PARAMS_2(_unit,_scopeClass); +params ["_unit", "_scopeClass"]; _unit removeItem _scopeClass; @@ -24,18 +25,17 @@ if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then { }; [{ - PARAMS_1(_unit); - + params ["_unit"]; + private ["_direction", "_position", "_spottingScope"]; _direction = getDir _unit; _position = (getPosASL _unit) vectorAdd [0.8 * sin(_direction), 0.8 * cos(_direction), 0.02]; - + _spottingScope = "ACE_SpottingScopeObject" createVehicle [0, 0, 0]; _spottingScope setDir _direction; _spottingScope setPosASL _position; if ((getPosATL _spottingScope select 2) - (getPos _spottingScope select 2) < 1E-5) then { - _spottingScope setVectorUp (surfaceNormal (position _spottingScope)); + _spottingScope setVectorUp (surfaceNormal (position _spottingScope)); }; _unit reveal _spottingScope; - }, [_unit], 1, 0] call EFUNC(common,waitAndExecute); From fa56196fe33b252e9a19d121b1ff52855f641f43 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 12:11:34 +0200 Subject: [PATCH 37/78] Code cleanup of slideshow module --- .../slideshow/functions/fnc_addSlideActions.sqf | 12 ++++++------ .../slideshow/functions/fnc_autoTransition.sqf | 13 +++++-------- .../slideshow/functions/fnc_createSlideshow.sqf | 16 ++++++++-------- addons/slideshow/functions/fnc_makeList.sqf | 9 +++++---- addons/slideshow/functions/fnc_moduleInit.sqf | 9 +++------ 5 files changed, 27 insertions(+), 32 deletions(-) diff --git a/addons/slideshow/functions/fnc_addSlideActions.sqf b/addons/slideshow/functions/fnc_addSlideActions.sqf index 80e9b387af..1ebba306b4 100644 --- a/addons/slideshow/functions/fnc_addSlideActions.sqf +++ b/addons/slideshow/functions/fnc_addSlideActions.sqf @@ -10,19 +10,19 @@ * 4: Current Slideshow * * Return Value: - * None + * List of actions * * Example: * [[object], ["image"], ["name"], controller, 1] call ace_slideshow_fnc_addSlideActions * * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" -PARAMS_5(_objects,_images,_names,_controller,_currentSlideshow); +private "_actions"; + +params ["_objects", "_images", "_names", "_controller", "_currentSlideshow"]; -private ["_actions"]; _actions = []; { _actions pushBack @@ -32,10 +32,10 @@ _actions = []; _names select _forEachIndex, "", { - EXPLODE_2_PVT(_this select 2,_objects,_image); + (_this select 2) params ["_objects", "_image"]; { _x setObjectTextureGlobal [0, _image] - } forEach _objects; + } count _objects; }, {true}, {}, diff --git a/addons/slideshow/functions/fnc_autoTransition.sqf b/addons/slideshow/functions/fnc_autoTransition.sqf index 639a0fb70b..539ecb4986 100644 --- a/addons/slideshow/functions/fnc_autoTransition.sqf +++ b/addons/slideshow/functions/fnc_autoTransition.sqf @@ -4,25 +4,23 @@ * * Arguments: * 0: Objects - * 1: Controller Objects * 2: Image Paths - * 3: Action Names + * 3: State Variable Name * 4: Duration (0 disables automatic transitions) * * Return Value: - * Parsed List + * None * * Example: - * [objects, controllers, images, actionNames, duration] call ace_slideshow_fnc_autoTransition + * [objects, images, "ace_slideshow_slideshow1", duration] call ace_slideshow_fnc_autoTransition * * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" -PARAMS_4(_objects,_images,_varString,_duration); +private "_currentSlide"; -private ["_currentSlide"]; +params ["_objects", "_images", "_varString", "_duration"]; // Get current slide number of this slideshow _currentSlide = missionNamespace getVariable [_varString, 0]; @@ -40,6 +38,5 @@ missionNamespace setVariable [_varString, _currentSlide]; TRACE_4("Auto-transition",_images select _currentSlide,_currentSlide,count _images,_duration); - // Next slide [FUNC(autoTransition), [_objects, _images, _varString, _duration], _duration] call EFUNC(common,waitAndExecute); diff --git a/addons/slideshow/functions/fnc_createSlideshow.sqf b/addons/slideshow/functions/fnc_createSlideshow.sqf index debeac3340..6781716adb 100644 --- a/addons/slideshow/functions/fnc_createSlideshow.sqf +++ b/addons/slideshow/functions/fnc_createSlideshow.sqf @@ -17,10 +17,11 @@ * * Public: Yes */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" -PARAMS_5(_objects,_controllers,_images,_names,_duration); +private ["_currentSlideshow", "_actionsObject", "_actionsClass", "_mainAction", "_slidesAction", "_varString"]; + +params ["_objects", "_controllers", "_images", "_names", "_duration"]; // Verify data if (count _images != count _names || {count _images == 0} || {count _names == 0}) exitWith { @@ -30,7 +31,8 @@ if (count _images != count _names || {count _images == 0} || {count _names == 0} // Objects synced to the module { _objects pushBack _x; -} forEach (synchronizedObjects _logic); + nil +} count (synchronizedObjects _logic); // If no controllers use objects as controllers if (count _controllers == 0) then { @@ -42,16 +44,14 @@ TRACE_4("Information",_objects,_controllers,_images,_names); // Default images on whiteboards (first image) { _x setObjectTextureGlobal [0, _images select 0]; -} forEach _objects; +} count _objects; // Number of slideshows (multiple modules support) GVAR(slideshows) = GVAR(slideshows) + 1; -private ["_currentSlideshow"]; _currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets changed during execution of below code // Add interactions if automatic transitions are disabled, else setup automatic transitions if (_duration == 0) then { - private ["_actionsObject", "_actionsClass", "_mainAction", "_slidesAction"]; { // Add MainAction if one does not already exist _actionsObject = _x getVariable [QEGVAR(interact_menu,actions), []]; @@ -65,10 +65,10 @@ if (_duration == 0) then { // Add Slides sub-action and populate with images _slidesAction = [QGVAR(Slides), localize LSTRING(Interaction), "", {}, {true}, {(_this select 2) call FUNC(addSlideActions)}, [_objects,_images,_names,_x,_currentSlideshow], [0,0,0], 2] call EFUNC(interact_menu,createAction); [_x, 0, ["ACE_MainActions"], _slidesAction] call EFUNC(interact_menu,addActionToObject); - } forEach _controllers; + nil + } count _controllers; } else { // Formatted GVAR string (multiple modules support) - private ["_varString"]; _varString = format [QGVAR(slideshow%1), _currentSlideshow]; TRACE_1("Current Slide",_varString); diff --git a/addons/slideshow/functions/fnc_makeList.sqf b/addons/slideshow/functions/fnc_makeList.sqf index 9ce4a723cc..8de87a2d96 100644 --- a/addons/slideshow/functions/fnc_makeList.sqf +++ b/addons/slideshow/functions/fnc_makeList.sqf @@ -18,7 +18,7 @@ //#define DEBUG_MODE_FULL #include "script_component.hpp" -PARAMS_3(_list,_removeWhitespace,_checkNil); +params ["_list", "_removeWhitespace", "_checkNil"]; private ["_splittedList", "_listNoWhitespace", "_nilCheckPassedList"]; @@ -30,7 +30,8 @@ _listNoWhitespace = []; if (_removeWhitespace) then { { _listNoWhitespace pushBack ([_x] call EFUNC(common,stringRemoveWhiteSpace)); - } forEach _splittedList; + nil + } count _splittedList; _list = _listNoWhitespace; }; @@ -45,7 +46,7 @@ if (_checkNil) then { _nilCheckPassedList = _nilCheckPassedList + "," + _x; }; }; - } forEach _list; + } count _list; // Add Array characters and parse into array _list = "[" + _nilCheckPassedList + "]"; @@ -54,4 +55,4 @@ if (_checkNil) then { TRACE_4("Lists",_splittedList,_listNoWhitespace,_nilCheckPassedList,_list); -_list +_list // return diff --git a/addons/slideshow/functions/fnc_moduleInit.sqf b/addons/slideshow/functions/fnc_moduleInit.sqf index 50de48693e..419cb415e3 100644 --- a/addons/slideshow/functions/fnc_moduleInit.sqf +++ b/addons/slideshow/functions/fnc_moduleInit.sqf @@ -12,18 +12,15 @@ * * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" if !(isServer) exitWith {}; -PARAMS_3(_logic,_units,_activated); - -if !(_activated) exitWith {}; - private ["_objects", "_controllers", "_images", "_names", "_duration"]; -_logic = [_this, 0, objNull, [objNull]] call BIS_fnc_param; +params [["_logic", objNull, [objNull]], "_units", "_activated"]; + +if !(_activated) exitWith {}; if (isNull _logic) exitWith {}; // Extract variables from logic From 7839224aa2a92641620a426127b28b33c742a5e7 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 13:01:36 +0200 Subject: [PATCH 38/78] Added Polish Keybind Category translations thanks to @gienkov --- addons/common/stringtable.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 0319c1d2f2..f2c767442c 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -600,21 +600,27 @@ ACE3 Equipment + ACE3 Wyposażenie ACE3 Common + ACE3 Ogólne ACE3 Weapons + ACE3 Broń ACE3 Movement + ACE3 Ruch ACE3 Scope Adjustment + ACE3 Regulacja optyki ACE3 Vehicles + ACE3 Pojazdy From 60e4c2e601dfb1efee04f0067fda30df0a9890b5 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 15:12:24 +0200 Subject: [PATCH 39/78] Code cleanup of sitting module --- addons/sitting/functions/fnc_canSit.sqf | 7 +++---- addons/sitting/functions/fnc_canStand.sqf | 4 ++-- .../sitting/functions/fnc_getRandomAnimation.sqf | 6 +++--- addons/sitting/functions/fnc_handleInterrupt.sqf | 4 ++-- addons/sitting/functions/fnc_hasChairMoved.sqf | 15 +++++++++------ addons/sitting/functions/fnc_moduleInit.sqf | 10 +++++++--- addons/sitting/functions/fnc_sit.sqf | 12 ++++++------ addons/sitting/functions/fnc_stand.sqf | 2 +- 8 files changed, 33 insertions(+), 27 deletions(-) diff --git a/addons/sitting/functions/fnc_canSit.sqf b/addons/sitting/functions/fnc_canSit.sqf index c34281e496..fef36b4bbd 100644 --- a/addons/sitting/functions/fnc_canSit.sqf +++ b/addons/sitting/functions/fnc_canSit.sqf @@ -10,17 +10,16 @@ * Can Sit Down * * Example: - * [seat, player] call ace_sitting_fnc_canSit; + * [seat, player] call ace_sitting_fnc_canSit * * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" -PARAMS_2(_seat,_player); +params ["_seat", "_player"]; // Sitting enabled, is seat object, not occupied and standing up (or not on a big slope) GVAR(enable) && {getNumber (configFile >> "CfgVehicles" >> typeOf _seat >> QGVAR(canSit)) == 1} && -{isNil{_seat getVariable QGVAR(seatOccupied)}} && +{isNil {_seat getVariable QGVAR(seatOccupied)}} && {round (vectorUp _seat select 0) == 0 && {round (vectorUp _seat select 1) == 0} && {round (vectorUp _seat select 2) == 1}} diff --git a/addons/sitting/functions/fnc_canStand.sqf b/addons/sitting/functions/fnc_canStand.sqf index 4549b9891b..c516485a82 100644 --- a/addons/sitting/functions/fnc_canStand.sqf +++ b/addons/sitting/functions/fnc_canStand.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -PARAMS_1(_player); +params ["_player"]; // Sitting -(_player getVariable [QGVAR(isSitting),false]) +(_player getVariable [QGVAR(isSitting), false]) diff --git a/addons/sitting/functions/fnc_getRandomAnimation.sqf b/addons/sitting/functions/fnc_getRandomAnimation.sqf index c83d230a90..0e1bc51852 100644 --- a/addons/sitting/functions/fnc_getRandomAnimation.sqf +++ b/addons/sitting/functions/fnc_getRandomAnimation.sqf @@ -9,13 +9,13 @@ * Random Animation * * Example: - * _animation = call ace_sitting_fnc_getRandomAnimation; + * _animation = call ace_sitting_fnc_getRandomAnimation * * Public: No */ #include "script_component.hpp" -private ["_animations"]; +private "_animations"; // Animations Pool _animations = [ @@ -46,4 +46,4 @@ _animations = [ ]; // Select random animation -(_animations select (floor (random (count _animations)))) +(_animations select floor random count _animations) diff --git a/addons/sitting/functions/fnc_handleInterrupt.sqf b/addons/sitting/functions/fnc_handleInterrupt.sqf index fb32635195..328675c172 100644 --- a/addons/sitting/functions/fnc_handleInterrupt.sqf +++ b/addons/sitting/functions/fnc_handleInterrupt.sqf @@ -9,13 +9,13 @@ * None * * Example: - * player call ace_sitting_fnc_handleInterrupt; + * player call ace_sitting_fnc_handleInterrupt * * Public: No */ #include "script_component.hpp" -PARAMS_1(_player); +params ["_player"]; if (_player getVariable [QGVAR(isSitting), false]) then { _player call FUNC(stand); diff --git a/addons/sitting/functions/fnc_hasChairMoved.sqf b/addons/sitting/functions/fnc_hasChairMoved.sqf index fe56438878..de3a38e0ce 100644 --- a/addons/sitting/functions/fnc_hasChairMoved.sqf +++ b/addons/sitting/functions/fnc_hasChairMoved.sqf @@ -10,18 +10,21 @@ * None * * Example: - * [seat, seatPos] call ace_sitting_fnc_hasChairMoved; + * [seat, seatPos] call ace_sitting_fnc_hasChairMoved * * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" -PARAMS_2(_seat,_seatPosOrig); +params ["_seat", "_seatPosOrig"]; TRACE_2("Chair position",_seatPosOrig,getPosASL _seat); +(getPosASL _seat) params ["_seatX", "_seatY", "_seatZ"]; +_seatPosOrig params ["_seatOrigX", "_seatOrigY", "_seatOrigZ"]; + // Check each coordinate due to possibility of tiny movements in simulation -(getPosASL _seat) select 0 < (_seatPosOrig select 0) - 0.01 || {(getPosASL _seat) select 0 > (_seatPosOrig select 0) + 0.01} || -{(getPosASL _seat) select 1 < (_seatPosOrig select 1) - 0.01 || {(getPosASL _seat) select 1 > (_seatPosOrig select 1) + 0.01}} || -{(getPosASL _seat) select 2 < (_seatPosOrig select 2) - 0.01 || {(getPosASL _seat) select 2 > (_seatPosOrig select 2) + 0.01}} +if (abs (_seatX - _seatOrigX) > 0.01) exitWith {true}; +if (abs (_seatY - _seatOrigY) > 0.01) exitWith {true}; +if (abs (_seatZ - _seatOrigZ) > 0.01) exitWith {true}; +false diff --git a/addons/sitting/functions/fnc_moduleInit.sqf b/addons/sitting/functions/fnc_moduleInit.sqf index 25da5be347..ae476317db 100644 --- a/addons/sitting/functions/fnc_moduleInit.sqf +++ b/addons/sitting/functions/fnc_moduleInit.sqf @@ -3,18 +3,22 @@ * Initializes the Sitting module. * * Arguments: - * Whatever the module provides. + * 0: The module logic + * 1: Units + * 2: Activated * * Return Value: * None + * + * Public: No */ #include "script_component.hpp" if !(isServer) exitWith {}; -PARAMS_3(_logic,_units,_activated); +params ["_logic", "_units", "_activated"]; -if !(_activated) exitWith {}; +if (!_activated) exitWith {}; [_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule); diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index d6b729d544..438f3d345f 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -14,12 +14,11 @@ * * Public: No */ -//#define DEBUG_MODE_FULL #include "script_component.hpp" private ["_configFile", "_sitDirection", "_sitPosition", "_sitRotation", "_sitDirectionVisual"]; -PARAMS_2(_seat,_player); +params ["_seat", "_player"]; // Set global variable for standing up GVAR(seat) = _seat; @@ -49,12 +48,13 @@ _seat setVariable [QGVAR(seatOccupied), true, true]; // To prevent multiple peop _sitDirectionVisual = getDirVisual _player; // Needed for precision and issues with using above directly _seatPosOrig = getPosASL _seat; [{ - EXPLODE_5_PVT(_this select 0,_player,_sitDirectionVisual,_sitRotation,_seat,_seatPosOrig); - + params ["_args", "_pfhId"]; + _args params ["_player", "_sitDirectionVisual", "_sitRotation", "_seat", "_seatPosOrig"]; + // Remove PFH if not sitting any more if !(_player getVariable [QGVAR(isSitting), false]) exitWith { - [_this select 1] call cba_fnc_removePerFrameHandler; - TRACE_1("Remove PFH",_player getVariable [ARR_2(QGVAR(isSitting),false)]); + [_pfhId] call cba_fnc_removePerFrameHandler; + TRACE_1("Remove PFH",_player getVariable [ARR_2(QGVAR(isSitting), false)]); }; // Stand up if chair moves diff --git a/addons/sitting/functions/fnc_stand.sqf b/addons/sitting/functions/fnc_stand.sqf index df1ee6f169..978bcaf279 100644 --- a/addons/sitting/functions/fnc_stand.sqf +++ b/addons/sitting/functions/fnc_stand.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -PARAMS_1(_player); +params ["_player"]; // Restore animation [_player, "", 2] call EFUNC(common,doAnimation); From b2e7cf04c0a913a7caee8de6930b3dd503743467 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 15:19:59 +0200 Subject: [PATCH 40/78] Fixed function argument documentation in slideshow --- addons/slideshow/functions/fnc_autoTransition.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/slideshow/functions/fnc_autoTransition.sqf b/addons/slideshow/functions/fnc_autoTransition.sqf index 539ecb4986..c754a2f6ff 100644 --- a/addons/slideshow/functions/fnc_autoTransition.sqf +++ b/addons/slideshow/functions/fnc_autoTransition.sqf @@ -4,9 +4,9 @@ * * Arguments: * 0: Objects - * 2: Image Paths - * 3: State Variable Name - * 4: Duration (0 disables automatic transitions) + * 1: Image Paths + * 2: State Variable Name + * 3: Duration (0 disables automatic transitions) * * Return Value: * None From d192f7eea4cd2f6facfe567aa744665d82209780 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 15:35:52 +0200 Subject: [PATCH 41/78] Added parentheses back --- addons/sitting/functions/fnc_getRandomAnimation.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sitting/functions/fnc_getRandomAnimation.sqf b/addons/sitting/functions/fnc_getRandomAnimation.sqf index 0e1bc51852..db3127c3d4 100644 --- a/addons/sitting/functions/fnc_getRandomAnimation.sqf +++ b/addons/sitting/functions/fnc_getRandomAnimation.sqf @@ -46,4 +46,4 @@ _animations = [ ]; // Select random animation -(_animations select floor random count _animations) +(_animations select (floor (random (count _animations)))) From 1cec4400b3957ca071c45b76bcbad149e4c7beaf Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 15:44:41 +0200 Subject: [PATCH 42/78] Missing count replacement in slideshow module --- addons/slideshow/functions/fnc_autoTransition.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/slideshow/functions/fnc_autoTransition.sqf b/addons/slideshow/functions/fnc_autoTransition.sqf index c754a2f6ff..d482c8ce58 100644 --- a/addons/slideshow/functions/fnc_autoTransition.sqf +++ b/addons/slideshow/functions/fnc_autoTransition.sqf @@ -34,7 +34,7 @@ missionNamespace setVariable [_varString, _currentSlide]; // Set slide { _x setObjectTextureGlobal [0, _images select _currentSlide]; -} forEach _objects; +} count _objects; TRACE_4("Auto-transition",_images select _currentSlide,_currentSlide,count _images,_duration); From fb32bbf8de5bb8a39d156c871807b04b222436fe Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Fri, 7 Aug 2015 16:43:06 +0200 Subject: [PATCH 43/78] Code cleanup of scopes module --- addons/scopes/functions/fnc_adjustScope.sqf | 24 ++++++++++--------- addons/scopes/functions/fnc_adjustZero.sqf | 17 ++++++------- .../functions/fnc_applyScopeAdjustment.sqf | 18 ++++++++------ addons/scopes/functions/fnc_canAdjustZero.sqf | 13 ++++++---- addons/scopes/functions/fnc_firedEH.sqf | 15 ++++++------ addons/scopes/functions/fnc_getOptics.sqf | 18 ++++++++------ .../scopes/functions/fnc_inventoryCheck.sqf | 15 +++++++----- addons/scopes/functions/fnc_showZeroing.sqf | 21 +++++++++------- 8 files changed, 81 insertions(+), 60 deletions(-) diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf index ac03046803..83a81346b6 100644 --- a/addons/scopes/functions/fnc_adjustScope.sqf +++ b/addons/scopes/functions/fnc_adjustScope.sqf @@ -10,23 +10,26 @@ * Return value: * Did we adjust anything? * + * Example: + * [player, ELEVATION_UP, false] call ace_scopes_fnc_adjustScope + * * Public: No */ #include "script_component.hpp" -PARAMS_3(_unit,_turretAndDirection,_majorStep); +private ["_weaponIndex", "_zeroing", "_optic", "_verticalIncrement", "_horizontalIncrement", "_maxVertical", "_maxHorizontal", "_adjustment"]; + +params ["_unit", "_turretAndDirection", "_majorStep"]; if (!(_unit isKindOf "Man")) exitWith {false}; if (currentMuzzle _unit != currentWeapon _unit) exitWith {false}; -private ["_weaponIndex", "_zeroing", "_optic", "_verticalIncrement", "_horizontalIncrement", "_maxVertical", "_maxHorizontal", "_elevation", "_windage", "_zero", "_adjustment"]; - _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {false}; _adjustment = _unit getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { - _adjustment = [[0,0,0], [0,0,0], [0,0,0]]; // [Windage, Elevation, Zero] + _adjustment = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]; // [Windage, Elevation, Zero] }; if (isNil QGVAR(Optics)) then { @@ -34,18 +37,17 @@ if (isNil QGVAR(Optics)) then { }; _optic = GVAR(Optics) select _weaponIndex; -_verticalIncrement = getNumber (configFile >> "CfgWeapons" >> _optic >> "ACE_ScopeAdjust_VerticalIncrement"); -_horizontalIncrement = getNumber (configFile >> "CfgWeapons" >> _optic >> "ACE_ScopeAdjust_HorizontalIncrement"); -_maxVertical = getArray (configFile >> "CfgWeapons" >> _optic >> "ACE_ScopeAdjust_Vertical"); -_maxHorizontal = getArray (configFile >> "CfgWeapons" >> _optic >> "ACE_ScopeAdjust_Horizontal"); +_opticConfig = configFile >> "CfgWeapons" >> _optic; +_verticalIncrement = getNumber (_opticConfig >> "ACE_ScopeAdjust_VerticalIncrement"); +_horizontalIncrement = getNumber (_opticConfig >> "ACE_ScopeAdjust_HorizontalIncrement"); +_maxVertical = getArray (_opticConfig >> "ACE_ScopeAdjust_Vertical"); +_maxHorizontal = getArray (_opticConfig >> "ACE_ScopeAdjust_Horizontal"); if ((count _maxHorizontal < 2) || (count _maxVertical < 2)) exitWith {false}; if ((_verticalIncrement == 0) && (_horizontalIncrement == 0)) exitWith {false}; _zeroing = _adjustment select _weaponIndex; -_elevation = _zeroing select 0; -_windage = _zeroing select 1; -_zero = _zeroing select 2; +_zeroing params ["_elevation", "_windage", "_zero"]; switch (_turretAndDirection) do { case ELEVATION_UP: { _elevation = _elevation + _verticalIncrement }; diff --git a/addons/scopes/functions/fnc_adjustZero.sqf b/addons/scopes/functions/fnc_adjustZero.sqf index 12e911b537..363407e090 100644 --- a/addons/scopes/functions/fnc_adjustZero.sqf +++ b/addons/scopes/functions/fnc_adjustZero.sqf @@ -8,29 +8,30 @@ * Return value: * true * + * Example: + * [player] call ace_scopes_fnc_adjustZero + * * Public: No */ #include "script_component.hpp" -PARAMS_1(_unit); +private ["_weaponIndex", "_adjustment", "_zeroing"]; + +params ["_unit"]; if (vehicle _unit != _unit) exitWith {false}; -private ["_weaponIndex", "_adjustment", "_zeroing", "_elevation", "_windage", "_zero"]; - _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {false}; _adjustment = _unit getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { // [Windage, Elevation, Zero] - _adjustment = [[0,0,0], [0,0,0], [0,0,0]]; + _adjustment = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]; }; -_zeroing = _adjustment select _weaponIndex; -_elevation = _zeroing select 0; -_windage = _zeroing select 1; -_zero = _zeroing select 2; +_zeroing = _adjustment select _weaponIndex; +_zeroing params ["_elevation", "_windage", "_zero"]; _zero = round((_zero + _elevation) * 10) / 10; _elevation = 0; diff --git a/addons/scopes/functions/fnc_applyScopeAdjustment.sqf b/addons/scopes/functions/fnc_applyScopeAdjustment.sqf index 4950fe9ece..fbd3e1b636 100644 --- a/addons/scopes/functions/fnc_applyScopeAdjustment.sqf +++ b/addons/scopes/functions/fnc_applyScopeAdjustment.sqf @@ -11,20 +11,23 @@ * Return value: * True * + * Example: + * [player, 1.3, 0.3, 0.1] call ace_scopes_fnc_applyScopeAdjustment + * * Public: No */ #include "script_component.hpp" -EXPLODE_4_PVT(_this,_unit,_elevation,_windage,_zero); +private ["_adjustmentDifference", "_pitchBankYaw", "_adjustment", "_weaponIndex"]; -private ["_adjustmentDifference", "_pitchbankyaw", "_pitch", "_bank", "_yaw", "_adjustment", "_weaponIndex"]; +params ["_unit", "_elevation", "_windage", "_zero"]; _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); _adjustment = _unit getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { // [Windage, Elevation, Zero] - _adjustment = [[0,0,0], [0,0,0], [0,0,0]]; + _adjustment = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]; _unit setVariable [QGVAR(Adjustment), _adjustment]; }; @@ -39,10 +42,11 @@ playSound (["ACE_Scopes_Click_1", "ACE_Scopes_Click_2", "ACE_Scopes_Click_3"] se if (cameraView == "GUNNER") then { // Convert adjustmentDifference from mils to degrees _adjustmentDifference = [_adjustmentDifference, {_this * 0.05625}] call EFUNC(common,map); - _pitchbankyaw = [_unit] call EFUNC(common,getPitchBankYaw); - _pitch = (_pitchbankyaw select 0) + (_adjustmentDifference select 0); - _bank = (_pitchbankyaw select 1); - _yaw = (_pitchbankyaw select 2) + (_adjustmentDifference select 1); + _adjustmentDifference params ["_elevationDifference", "_windageDifference"]; + _pitchBankYaw = [_unit] call EFUNC(common,getPitchBankYaw); + _pitchBankYaw params ["_pitch", "_bank", "_yaw"]; + _pitch = _pitch + _elevationDifference; + _yaw = _yaw + _windageDifference; [_unit, _pitch, _bank, _yaw] call EFUNC(common,setPitchBankYaw); } else { [] call FUNC(showZeroing); diff --git a/addons/scopes/functions/fnc_canAdjustZero.sqf b/addons/scopes/functions/fnc_canAdjustZero.sqf index 619d82cf6e..36ea4ac793 100644 --- a/addons/scopes/functions/fnc_canAdjustZero.sqf +++ b/addons/scopes/functions/fnc_canAdjustZero.sqf @@ -8,17 +8,20 @@ * Return value: * Can we update the zero reference? * + * Example: + * [player] call ace_scopes_fnc_canAdjustZero + * * Public: No */ #include "script_component.hpp" -PARAMS_1(_unit); - private ["_weaponIndex", "_adjustment", "_elevation"]; +params ["_unit"]; + if (cameraView == "GUNNER") exitWith {false}; -if !(vehicle _unit == _unit) exitWith {false}; -if !(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) exitWith {false}; +if (vehicle _unit != _unit) exitWith {false}; +if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {false}; _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {false}; @@ -26,7 +29,7 @@ if (_weaponIndex < 0) exitWith {false}; _adjustment = _unit getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { // [Windage, Elevation, Zero] - _adjustment = [[0,0,0], [0,0,0], [0,0,0]]; + _adjustment = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]; }; _elevation = (_adjustment select _weaponIndex) select 0; diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index 020431c27b..b4441df839 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi and esteldunedain + * Author: KoffeinFlummi, esteldunedain * Adjusts the flight path of the bullet according to the zeroing * * Argument: @@ -18,11 +18,11 @@ */ #include "script_component.hpp" -private ["_unit", "_adjustment", "_projectile", "_weaponIndex", "_zeroing", "_adjustment"]; -_unit = _this select 0; -_projectile = _this select 6; +private ["_adjustment", "_weaponIndex", "_zeroing", "_adjustment"]; -if !([_unit] call EFUNC(common,isPlayer)) exitWith {}; +prams ["_unit", "", "", "", "", "", "_projectile"]; + +if (!([_unit] call EFUNC(common,isPlayer))) exitWith {}; _adjustment = _unit getVariable [QGVAR(Adjustment), []]; if (_adjustment isEqualTo []) exitWith {}; @@ -32,9 +32,10 @@ if (_weaponIndex < 0) exitWith {}; _zeroing = _adjustment select _weaponIndex; -if (_zeroing isEqualTo [0,0,0]) exitWith {}; +if (_zeroing isEqualTo [0, 0, 0]) exitWith {}; // Convert zeroing from mils to degrees _zeroing = _zeroing vectorMultiply 0.05625; +_zeroing params ["_elevation", "_windage", "_zero"] -[_projectile, (_zeroing select 1), (_zeroing select 0) + (_zeroing select 2), 0] call EFUNC(common,changeProjectileDirection); +[_projectile, _elevation, _elevation + _zero, 0] call EFUNC(common,changeProjectileDirection); diff --git a/addons/scopes/functions/fnc_getOptics.sqf b/addons/scopes/functions/fnc_getOptics.sqf index 289ed5e7bd..fbd1d135f4 100644 --- a/addons/scopes/functions/fnc_getOptics.sqf +++ b/addons/scopes/functions/fnc_getOptics.sqf @@ -10,21 +10,25 @@ * 1: Optic of secondary * 2: Optic of handgun * + * Example: + * [player] call ace_scopes_fnc_getOptics + * * Public: No */ #include "script_component.hpp" -EXPLODE_1_PVT(_this,_unit); +private "_optics"; -private ["_array"]; -_array = ["", "", ""]; +params ["_unit"]; -if !(_unit isKindOf "CAManBase") exitWith {_array}; +_optics = ["", "", ""]; + +if (!(_unit isKindOf "CAManBase")) exitWith {_optics}; { if (count _x >= 2) then { - _array set [_forEachIndex, _x select 2]; + _optics set [_forEachIndex, _x select 2]; }; -} forEach [primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit]; +} count [primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit]; -_array +_optics diff --git a/addons/scopes/functions/fnc_inventoryCheck.sqf b/addons/scopes/functions/fnc_inventoryCheck.sqf index af4b347124..562bf731b4 100644 --- a/addons/scopes/functions/fnc_inventoryCheck.sqf +++ b/addons/scopes/functions/fnc_inventoryCheck.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi and Commy2 + * Author: KoffeinFlummi, Commy2 * Check if weapon optics changed and reset zeroing if needed * * Arguments: @@ -8,18 +8,21 @@ * Return Value: * None * + * Example: + * [player] call ace_scopes_fnc_inventoryCheck + * * Public: No */ #include "script_component.hpp" -EXPLODE_1_PVT(_this,_player); - private ["_newOptics", "_adjustment"]; +params ["_player"]; + _adjustment = ACE_player getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { // [Windage, Elevation, Zero] - _adjustment = [[0,0,0], [0,0,0], [0,0,0]]; + _adjustment = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]; ACE_player setVariable [QGVAR(Adjustment), _adjustment]; [ACE_player, QGVAR(Adjustment), _adjustment, 0.5] call EFUNC(common,setVariablePublic); }; @@ -32,8 +35,8 @@ _newOptics = [_player] call FUNC(getOptics); { if (_newOptics select _forEachIndex != _x) then { // The optic for this weapon changed, set adjustment to zero - if !((_adjustment select _foreachindex) isEqualTo [0,0,0]) then { - _adjustment set [_forEachIndex, [0,0,0]]; + if (!((_adjustment select _foreachindex) isEqualTo [0, 0, 0])) then { + _adjustment set [_forEachIndex, [0, 0, 0]]; [ACE_player, QGVAR(Adjustment), _adjustment, 0.5] call EFUNC(common,setVariablePublic); }; }; diff --git a/addons/scopes/functions/fnc_showZeroing.sqf b/addons/scopes/functions/fnc_showZeroing.sqf index 7cefc68563..d3d4a38a9d 100644 --- a/addons/scopes/functions/fnc_showZeroing.sqf +++ b/addons/scopes/functions/fnc_showZeroing.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi and esteldunedain + * Author: KoffeinFlummi, esteldunedain * Display the adjustment knobs, update their value and fade them out later * * Arguments: @@ -8,13 +8,16 @@ * Return Value: * None * + * Example: + * [] call ace_scopes_fnc_showZeroing + * * Public: No */ #include "script_component.hpp" -disableSerialization; +private ["_weaponIndex", "_adjustment", "_layer", "_display", "_zeroing", "_vertical", "_horizontal"]; -private ["_weaponIndex","_adjustment","_layer","_display","_zeroing","_vertical","_horizontal"]; +disableSerialization; _weaponIndex = [ACE_player, currentWeapon ACE_player] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {}; @@ -22,7 +25,7 @@ if (_weaponIndex < 0) exitWith {}; _adjustment = ACE_player getVariable QGVAR(Adjustment); if (isNil "_adjustment") then { // [Windage, Elevation, Zero] - _adjustment = [[0,0,0], [0,0,0], [0,0,0]]; + _adjustment = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]; }; // Display the adjustment knobs @@ -35,10 +38,11 @@ if (isNull _display) exitWith {}; // Update values _zeroing = _adjustment select _weaponIndex; +_zeroing params ["_elevation", "_windage"]; _vertical = _display displayCtrl 12; _horizontal = _display displayCtrl 13; -_vertical ctrlSetText (str (_zeroing select 0)); -_horizontal ctrlSetText (str (_zeroing select 1)); +_vertical ctrlSetText (str _elevation); +_horizontal ctrlSetText (str _windage); // Set the ACE_time when to hide the knobs GVAR(timeToHide) = ACE_diagTime + 3.0; @@ -47,14 +51,13 @@ if !(isNil QGVAR(fadePFH)) exitWith {}; // Launch a PFH to wait and fade out the knobs GVAR(fadePFH) = [{ - if (ACE_diagTime >= GVAR(timeToHide)) exitWith { private "_layer"; + params ["", "_pfhId"]; _layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; _layer cutFadeOut 2; GVAR(fadePFH) = nil; - [_this select 1] call cba_fnc_removePerFrameHandler; + [_pfhId] call cba_fnc_removePerFrameHandler; }; - }, 0.1, []] call CBA_fnc_addPerFrameHandler From 471e8d27dffc87dd924b8126fd7e3ac277671d28 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 7 Aug 2015 19:11:10 +0200 Subject: [PATCH 44/78] Fixed clean up --- addons/medical_menu/functions/fnc_collectActions.sqf | 2 +- addons/medical_menu/functions/fnc_updateActivityLog.sqf | 2 +- .../medical_menu/functions/fnc_updateInformationLists.sqf | 8 +++----- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/addons/medical_menu/functions/fnc_collectActions.sqf b/addons/medical_menu/functions/fnc_collectActions.sqf index 8e8f7cd10d..211de76202 100644 --- a/addons/medical_menu/functions/fnc_collectActions.sqf +++ b/addons/medical_menu/functions/fnc_collectActions.sqf @@ -33,7 +33,7 @@ _fnc_compileActionsLevel = { _actions pushBack [_displayName, _category, compile _condition, compile _statement]; }; nil - } count _config; + }count ("true" configClasses _config); _actions // return }; diff --git a/addons/medical_menu/functions/fnc_updateActivityLog.sqf b/addons/medical_menu/functions/fnc_updateActivityLog.sqf index 392359064a..335aea0c58 100644 --- a/addons/medical_menu/functions/fnc_updateActivityLog.sqf +++ b/addons/medical_menu/functions/fnc_updateActivityLog.sqf @@ -24,7 +24,7 @@ _logCtrl = _display displayCtrl 214; lbClear _logCtrl; { - _x params ["_message", "_moment", "_arguments"]; + _x params ["_message", "_moment", "_dummy", "_arguments"]; if (isLocalized _message) then { _message = localize _message; diff --git a/addons/medical_menu/functions/fnc_updateInformationLists.sqf b/addons/medical_menu/functions/fnc_updateInformationLists.sqf index c8388b2bd3..db7220065c 100644 --- a/addons/medical_menu/functions/fnc_updateInformationLists.sqf +++ b/addons/medical_menu/functions/fnc_updateInformationLists.sqf @@ -16,22 +16,20 @@ private "_lbCtrl"; -params["_display", "_genericMessages", "_allInjuryTexts"]; +params ["_display", "_genericMessages", "_allInjuryTexts"]; _lbCtrl = _display displayCtrl 213; lbClear _lbCtrl; { _lbCtrl lbAdd (_x select 0); _lbCtrl lbSetColor [_forEachIndex, _x select 1]; - nil -} count _genericMessages; +} forEach _genericMessages; _amountOfGeneric = count _genericMessages; { _lbCtrl lbAdd (_x select 0); _lbCtrl lbSetColor [_forEachIndex + _amountOfGeneric, _x select 1]; - nil -} count _allInjuryTexts; +} forEach _allInjuryTexts; if (count _allInjuryTexts == 0) then { _lbCtrl lbAdd localize ELSTRING(medical,NoInjuriesBodypart); From d7db2e159cb211d11062df7afb9dd40a98b36451 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 7 Aug 2015 19:11:27 +0200 Subject: [PATCH 45/78] Split up into activity and quick view logs --- addons/medical_menu/XEH_preInit.sqf | 1 + .../functions/fnc_updateQuickViewLog.sqf | 42 +++++++++++++++++++ .../functions/fnc_updateUIInfo.sqf | 5 ++- addons/medical_menu/ui/menu.hpp | 20 ++++----- 4 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 addons/medical_menu/functions/fnc_updateQuickViewLog.sqf diff --git a/addons/medical_menu/XEH_preInit.sqf b/addons/medical_menu/XEH_preInit.sqf index 0aa4a7ecc6..5d67d4429f 100644 --- a/addons/medical_menu/XEH_preInit.sqf +++ b/addons/medical_menu/XEH_preInit.sqf @@ -11,6 +11,7 @@ PREP(handleUI_DisplayOptions); PREP(handleUI_dropDownTriageCard); PREP(getTreatmentOptions); PREP(updateActivityLog); +PREP(updateQuickViewLog); PREP(updateBodyImage); PREP(updateInformationLists); PREP(setTriageStatus); diff --git a/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf b/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf new file mode 100644 index 0000000000..8ca81f28ed --- /dev/null +++ b/addons/medical_menu/functions/fnc_updateQuickViewLog.sqf @@ -0,0 +1,42 @@ +/* + * Author: Glowbal + * Update the quick view log + * + * Arguments: + * 0: display + * 1: log collection + * + * Return Value: + * None + * + * Example: + * [some_display, log] call ace_medical_menu_updateQuickViewLog + * + * Public: No + */ +#include "script_component.hpp" + +private "_logCtrl"; + +params ["_display", "_logs"]; + +_logCtrl = _display displayCtrl 215; +lbClear _logCtrl; + +{ + _x params ["_message", "_moment", "_dummy", "_arguments"]; + + if (isLocalized _message) then { + _message = localize _message; + }; + + { + if (typeName _x == "STRING" && {isLocalized _x}) then { + _arguments set [_foreachIndex, localize _x]; + }; + } forEach _arguments; + + _message = format ([_message] + _arguments); + _logCtrl lbAdd format ["%1 %2", _moment, _message]; + nil +} count _logs; diff --git a/addons/medical_menu/functions/fnc_updateUIInfo.sqf b/addons/medical_menu/functions/fnc_updateUIInfo.sqf index d5c3b9eed6..3810e262c8 100644 --- a/addons/medical_menu/functions/fnc_updateUIInfo.sqf +++ b/addons/medical_menu/functions/fnc_updateUIInfo.sqf @@ -133,9 +133,12 @@ if (EGVAR(medical,level) >= 2) then { [_selectionBloodLoss, _display] call FUNC(updateBodyImage); [_display, _genericMessages, _allInjuryTexts] call FUNC(updateInformationLists); -_logs = _target getVariable [QEGVAR(medical,logFile_Activity), []]; +_logs = _target getVariable [QEGVAR(medical,logFile_activity_view), []]; [_display, _logs] call FUNC(updateActivityLog); +_logs = _target getVariable [QEGVAR(medical,logFile_quick_view), []]; +[_display, _logs] call FUNC(updateQuickViewLog); + _triageStatus = [_target] call EFUNC(medical,getTriageStatus); (_display displayCtrl 2000) ctrlSetText (_triageStatus select 0); (_display displayCtrl 2000) ctrlSetBackgroundColor (_triageStatus select 2); diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp index db7e2cc3bb..60c970da70 100644 --- a/addons/medical_menu/ui/menu.hpp +++ b/addons/medical_menu/ui/menu.hpp @@ -437,10 +437,10 @@ class GVAR(medicalMenu) { class QuikViewLog: InjuryList { idc = 215; - style = 16; - type = 102; - rows=1; - colorBackground[] = {0, 0, 0, 1}; + //style = 16; + //type = 102; + //rows=1; + colorBackground[] = {0, 0, 0, 0}; x = "21.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; y = "(19.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))"; w = "18.5 * (((safezoneW / safezoneH) min 1.2) / 40)"; @@ -449,13 +449,13 @@ class GVAR(medicalMenu) { colorSelectBackground[] = {0, 0, 0, 0.0}; colorSelectBackground2[] = {0.0, 0.0, 0.0, 0.0}; - columns[] = {0.0, 0.08}; - canDrag=true; - arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; - arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; + //columns[] = {0.0, 0.08}; + //canDrag=true; + //arrowEmpty = "#(argb,8,8,3)color(1,1,1,1)"; + // arrowFull = "#(argb,8,8,3)color(1,1,1,1)"; drawSideArrows = 0; - idcLeft = -1; - idcRight = -1; + //idcLeft = -1; + //idcRight = -1; }; class selectTriageStatus: ACE_gui_buttonBase { From f21023b4eef2b49f3b71c333dd6ae39b19687739 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 7 Aug 2015 19:11:57 +0200 Subject: [PATCH 46/78] Added logs for quick view and activity view separate from the activity log for medical menu --- addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf | 1 + addons/medical/functions/fnc_actionCheckPulseLocal.sqf | 1 + addons/medical/functions/fnc_actionCheckResponse.sqf | 1 + addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf | 3 +++ addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf | 1 + .../medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf | 3 +++ addons/medical/functions/fnc_treatmentAdvanced_medication.sqf | 1 + addons/medical/functions/fnc_treatmentIV.sqf | 1 + addons/medical/functions/fnc_treatmentTourniquet.sqf | 1 + 9 files changed, 13 insertions(+) diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index 19bd75caad..82edd1749f 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -58,4 +58,5 @@ if ([_caller] call FUNC(isMedic)) then { if (_logOutPut != "") then { [_target,"activity", LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); + [_target,"quick_view", LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); }; diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index 9af18d0a6d..d759bf1bc8 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -50,4 +50,5 @@ if (_heartRate > 1.0) then { if (_logOutPut != "") then { [_unit,"activity", LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); + [_unit,"quick_view", LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); }; diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index 2d62df12f6..b5df63047e 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -28,3 +28,4 @@ if ([_target] call EFUNC(common,isAwake)) then { ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName)], 2, _caller]] call EFUNC(common,targetEvent); [_target,"activity",_output, [[_target] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target,"quick_view",_output, [[_target] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf index 61723319a5..c3151f2c90 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf @@ -31,4 +31,7 @@ if (random(1)>= 0.6) exitwith { _target setvariable [QGVAR(bloodPressure), [50,70]]; }; +[_target, "activity", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message + true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index 6b6b7adb81..1278994a11 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -38,5 +38,6 @@ if !([_target] call FUNC(hasMedicalEnabled)) exitwith { }foreach _items;*/ [_target, "activity", LSTRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf index 544ef6ae55..df7594921d 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf @@ -68,4 +68,7 @@ if (alive _target) exitwith { // Resetting damage _target setDamage 0; + + [_target, "activity", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); + [_target, "activity_view", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message }; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf index e3d07616f3..80e0afcf96 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf @@ -33,5 +33,6 @@ _items = _this select 4; }foreach _items; [_target, "activity", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), _className]] call FUNC(addToLog); // TODO expand message true; diff --git a/addons/medical/functions/fnc_treatmentIV.sqf b/addons/medical/functions/fnc_treatmentIV.sqf index fc6b91b057..e0c4d20ed6 100644 --- a/addons/medical/functions/fnc_treatmentIV.sqf +++ b/addons/medical/functions/fnc_treatmentIV.sqf @@ -30,3 +30,4 @@ _removeItem = _items select 0; [[_target, _className], QUOTE(DFUNC(treatmentIVLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); [_target, "activity", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index cab44d3295..d00f231a32 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -44,6 +44,7 @@ _removeItem = _items select 0; [_target, _removeItem] call FUNC(addToTriageCard); [_target, "activity", LSTRING(Activity_appliedTourniquet), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message true; From 256536467b680eb42a0f248f9866c8c6ace32cac Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 7 Aug 2015 19:36:10 +0200 Subject: [PATCH 47/78] Fixed no interaction menu support condition --- addons/slideshow/functions/fnc_createSlideshow.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/slideshow/functions/fnc_createSlideshow.sqf b/addons/slideshow/functions/fnc_createSlideshow.sqf index 6165453a1a..6a046ec906 100644 --- a/addons/slideshow/functions/fnc_createSlideshow.sqf +++ b/addons/slideshow/functions/fnc_createSlideshow.sqf @@ -53,7 +53,7 @@ private ["_currentSlideshow"]; _currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets changed during execution of below code // If interaction menu module is not present, set default duration value -if (["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { +if !(["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { _duration = 5; diag_log text format ["[ACE]: Slideshow: Interaction Menu module not present, defaulting duration value to %1", _duration]; }; From cd5b5f1d244aaf271816ebacb8d7017e64ac07f5 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 7 Aug 2015 20:15:09 +0200 Subject: [PATCH 48/78] clean up of the config --- addons/medical_menu/ACE_Settings.hpp | 23 ++++++++++++ addons/medical_menu/CfgVehicles.hpp | 22 ++++++++++++ addons/medical_menu/config.cpp | 54 ++-------------------------- 3 files changed, 47 insertions(+), 52 deletions(-) create mode 100644 addons/medical_menu/ACE_Settings.hpp create mode 100644 addons/medical_menu/CfgVehicles.hpp diff --git a/addons/medical_menu/ACE_Settings.hpp b/addons/medical_menu/ACE_Settings.hpp new file mode 100644 index 0000000000..fc41caa481 --- /dev/null +++ b/addons/medical_menu/ACE_Settings.hpp @@ -0,0 +1,23 @@ + +class ACE_Settings { + class GVAR(allow) { + displayName = CSTRING(allow); + description = CSTRING(allow_Descr); + typeName = "BOOL"; + value = 1; + }; + class GVAR(useMenu) { + displayName = CSTRING(useMenu); + description = CSTRING(useMenu_Descr); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(openAfterTreatment) { + displayName = CSTRING(openAfterTreatment); + description = CSTRING(openAfterTreatment_Descr); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; +}; diff --git a/addons/medical_menu/CfgVehicles.hpp b/addons/medical_menu/CfgVehicles.hpp new file mode 100644 index 0000000000..f48603b0de --- /dev/null +++ b/addons/medical_menu/CfgVehicles.hpp @@ -0,0 +1,22 @@ + +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_SelfActions { + }; + + class ACE_Actions { + // Create a consolidates medical menu for treatment while boarded + class ACE_MainActions { + class Medical_Menu { + displayName = CSTRING(OpenMenu); + runOnHover = 0; + exceptions[] = {"isNotInside"}; + condition = QUOTE(GVAR(allow) && GVAR(useMenu)); + statement = QUOTE([_target] call DFUNC(openMenu)); + icon = PATHTOEF(medical,UI\icons\medical_cross.paa); + }; + }; + }; + }; +}; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index 62edc2648e..27e0db03b9 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -11,58 +11,8 @@ class CfgPatches { VERSION_CONFIG; }; }; -class CfgAddons { - class PreloadAddons { - class ADDON { - list[] = {QUOTE(ADDON)}; - }; - }; -}; #include "CfgEventHandlers.hpp" #include "ui\menu.hpp" - -class ACE_Settings { - class GVAR(allow) { - displayName = CSTRING(allow); - description = CSTRING(allow_Descr); - typeName = "BOOL"; - value = 1; - }; - class GVAR(useMenu) { - displayName = CSTRING(useMenu); - description = CSTRING(useMenu_Descr); - typeName = "BOOL"; - value = 1; - isClientSettable = 1; - }; - class GVAR(openAfterTreatment) { - displayName = CSTRING(openAfterTreatment); - description = CSTRING(openAfterTreatment_Descr); - typeName = "BOOL"; - value = 1; - isClientSettable = 1; - }; -}; - -class CfgVehicles { - class Man; - class CAManBase: Man { - class ACE_SelfActions { - }; - - class ACE_Actions { - // Create a consolidates medical menu for treatment while boarded - class ACE_MainActions { - class Medical_Menu { - displayName = CSTRING(OpenMenu); - runOnHover = 0; - exceptions[] = {"isNotInside"}; - condition = QUOTE(GVAR(allow) && GVAR(useMenu)); - statement = QUOTE([_target] call DFUNC(openMenu)); - icon = PATHTOEF(medical,UI\icons\medical_cross.paa); - }; - }; - }; - }; -}; +#include "ACE_Settings.hpp" +#include "CfgVehicles.hpp" From a9ed1052ddb1ebc00c1fa5465e35a0ad9f8483f6 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 7 Aug 2015 13:24:47 -0500 Subject: [PATCH 49/78] vehLock - debug trace / type checking --- addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf | 5 ++++- addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf | 1 + addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf | 3 ++- addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf | 1 + addons/vehiclelock/functions/fnc_lockpick.sqf | 1 + addons/vehiclelock/functions/fnc_moduleInit.sqf | 1 + addons/vehiclelock/functions/fnc_moduleSync.sqf | 1 + addons/vehiclelock/functions/fnc_onOpenInventory.sqf | 1 + addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf | 1 + addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf | 1 + 10 files changed, 14 insertions(+), 2 deletions(-) diff --git a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf index 1adec69413..073054648e 100644 --- a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf +++ b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf @@ -20,7 +20,10 @@ private ["_previousMags","_newMags","_keyMagazine","_keyName"]; -params ["_unit", "_veh", "_useCustom"]; +if (!params [["_unit", objNull, [objNull]], ["_veh", objNull, [objNull]], ["_useCustom", false, [false]]]) exitWith { + ERROR("Input wrong type"); +}; +TRACE_3("params",_unit,_veh,_useCustom); if (isNull _unit) exitWith {ERROR("null unit");}; if (isNull _veh) exitWith {ERROR("null vehicle");}; diff --git a/addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf b/addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf index e981a16842..eda75922c4 100644 --- a/addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf +++ b/addons/vehiclelock/functions/fnc_getVehicleSideKey.sqf @@ -18,6 +18,7 @@ private ["_vehConfigSide","_vehSide","_returnValue"]; params ["_veh"]; +TRACE_1("params",_veh); if (isNull _veh) exitWith {ERROR("null vehicle"); "error"}; diff --git a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf index f252c25c93..be23dc8dd9 100644 --- a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf +++ b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf @@ -19,6 +19,7 @@ if (!isServer) exitWith {}; params ["_vehicle"]; +TRACE_1("params",_vehicle); [{ //If the module wasn't placed, just exit (needs to be in wait because objectInitEH is before moduleInit) @@ -41,4 +42,4 @@ params ["_vehicle"]; }; }; //Delay call until mission start (so everyone has the eventHandler's installed) -}, [_vehicle], 0.25, 0.25] call EFUNC(common,waitAndExecute); +}, [_vehicle], 0.25] call EFUNC(common,waitAndExecute); diff --git a/addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf b/addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf index 6b91c1cc0d..390104cefc 100644 --- a/addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf +++ b/addons/vehiclelock/functions/fnc_hasKeyForVehicle.sqf @@ -19,6 +19,7 @@ private ["_returnValue","_sideKeyName","_customKeys"]; params ["_unit", "_veh"]; +TRACE_2("params",_unit,_veh); if (isNull _unit) exitWith {ERROR("null unit"); false}; if (isNull _veh) exitWith {ERROR("null vehicle"); false}; diff --git a/addons/vehiclelock/functions/fnc_lockpick.sqf b/addons/vehiclelock/functions/fnc_lockpick.sqf index 75a7f59240..f4837c742b 100644 --- a/addons/vehiclelock/functions/fnc_lockpick.sqf +++ b/addons/vehiclelock/functions/fnc_lockpick.sqf @@ -23,6 +23,7 @@ private ["_vehLockpickStrenth","_condition","_returnValue"]; params ["_unit", "_veh", "_funcType"]; +TRACE_3("params",_unit,_veh,_funcType); if (isNull _unit) exitWith {ERROR("null unit"); false}; if (isNull _veh) exitWith {ERROR("null vehicle"); false}; diff --git a/addons/vehiclelock/functions/fnc_moduleInit.sqf b/addons/vehiclelock/functions/fnc_moduleInit.sqf index 2b0889b814..9b2c3cf182 100644 --- a/addons/vehiclelock/functions/fnc_moduleInit.sqf +++ b/addons/vehiclelock/functions/fnc_moduleInit.sqf @@ -20,6 +20,7 @@ if (!isServer) exitWith {}; params ["_logic", "_syncedUnits", "_activated"]; +TRACE_3("params",_logic,_syncedObjects,_activated); if (!_activated) exitWith {WARNING("Vehicle Lock Init Module - placed but not active");}; diff --git a/addons/vehiclelock/functions/fnc_moduleSync.sqf b/addons/vehiclelock/functions/fnc_moduleSync.sqf index a43e462113..27577e4dbe 100644 --- a/addons/vehiclelock/functions/fnc_moduleSync.sqf +++ b/addons/vehiclelock/functions/fnc_moduleSync.sqf @@ -20,6 +20,7 @@ if (!isServer) exitWith {}; params ["_logic", "_syncedObjects", "_activated"]; +TRACE_3("params",_logic,_syncedObjects,_activated); if !(_activated) exitWith {WARNING("Vehicle Lock Sync Module - placed but not active");}; diff --git a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf index 0105f5ae3f..5db2cbebe0 100644 --- a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf +++ b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf @@ -17,6 +17,7 @@ #include "script_component.hpp" params ["_unit", "_container"]; +TRACE_2("params",_unit,_container); //Only check for player: if (_unit != ace_player) exitWith {false}; diff --git a/addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf b/addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf index 6f1c2ffdbe..e959a705e0 100644 --- a/addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf +++ b/addons/vehiclelock/functions/fnc_serverSetupCustomKeyEH.sqf @@ -19,6 +19,7 @@ private ["_currentKeys"]; params ["_veh", "_key"]; +TRACE_2("params",_veh,_key); if (!isServer) exitWith {ERROR("only run on server");}; if (isNull _veh) exitWith {ERROR("null vehicle");}; diff --git a/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf b/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf index 611ce76e30..d2290ef732 100644 --- a/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf +++ b/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf @@ -19,6 +19,7 @@ private ["_lockNumber"]; params ["_veh", "_isLocked"]; +TRACE_2("params",_veh,_isLocked); _lockNumber = if (_isLocked) then {2} else {0}; TRACE_2("Setting Lock State", _veh, _lockNumber); From 6a085a679f36b1ba8601518b302c5554c01c6c40 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 7 Aug 2015 20:52:02 +0200 Subject: [PATCH 50/78] Added BI issue reference and mission-tools note about the issue --- documentation/development/arma-3-issues.md | 1 + documentation/missionmaker/mission-tools.md | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/documentation/development/arma-3-issues.md b/documentation/development/arma-3-issues.md index 4a3e9ea0fc..16f9988409 100644 --- a/documentation/development/arma-3-issues.md +++ b/documentation/development/arma-3-issues.md @@ -22,6 +22,7 @@ Keeping track of Arma 3 issues that need to be fixed. If you want to support us * [James2464: 0023725: All Environment Rocks Should Have PhysX LODs](http://feedback.arma3.com/view.php?id=23725) * [Jaynus: 0023679: Display event handler return values for mouse buttons should be respected](http://feedback.arma3.com/view.php?id=23679) * [Heisenberg: 0023741: Switching between optic modes of a sniper scope (AMS, DMS, MOS) will result in a blurred vision](http://feedback.arma3.com/view.php?id=23741) +* [AgentRev: 0022310: setObjectTextureGlobal causing "Cannot load texture" errors when used with valid mission files](http://feedback.arma3.com/view.php?id=22310) **Resolved:** diff --git a/documentation/missionmaker/mission-tools.md b/documentation/missionmaker/mission-tools.md index 9904acbeae..58c2200b40 100644 --- a/documentation/missionmaker/mission-tools.md +++ b/documentation/missionmaker/mission-tools.md @@ -78,6 +78,11 @@ Slide duration | 0 (0 = disabled, number is in seconds) - If you set a duration the remotes will be disabled. (If the remotes are disabled `ace_interaction` is not needed) - You can have multiple sets of images on different screens, see the advanced slideshow below. +
+
Note:
+

Mission MUST be in a PBO format (not bare folder) when used on a dedicated server due to an [issue](http://feedback.arma3.com/view.php?id=22310) to prevent errors.

+
+ ### 3.2 Basic slideshow *A set of 4 images that are swapped via a remote* From cc34a16e4709e706605229d4dfde2a58288df93c Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 7 Aug 2015 21:07:33 +0200 Subject: [PATCH 51/78] Added images size note to slideshow mission-tools documentation --- documentation/missionmaker/mission-tools.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/missionmaker/mission-tools.md b/documentation/missionmaker/mission-tools.md index 58c2200b40..d721b3117f 100644 --- a/documentation/missionmaker/mission-tools.md +++ b/documentation/missionmaker/mission-tools.md @@ -77,6 +77,7 @@ Slide duration | 0 (0 = disabled, number is in seconds) - Only objects with hiddenSelection 0 can be used as "screens". - If you set a duration the remotes will be disabled. (If the remotes are disabled `ace_interaction` is not needed) - You can have multiple sets of images on different screens, see the advanced slideshow below. +- It is advisable images resolution sizes are powers of 2 (eg. 512x512) to avoid graphical glitches in them.
Note:
From d125b9ad9cb2d7586b6125a66aba0fa96880e4e6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 7 Aug 2015 21:14:45 +0200 Subject: [PATCH 52/78] Add category to options menu. Initial work. --- .../functions/fnc_setSettingFromConfig.sqf | 6 ++- addons/interact_menu/ACE_Settings.hpp | 12 ++++++ addons/medical/ACE_Settings.hpp | 38 +++++++++++++++++ addons/optionsmenu/CfgEventHandlers.hpp | 11 +++-- addons/optionsmenu/XEH_postInit.sqf | 11 +++++ addons/optionsmenu/XEH_preInit.sqf | 3 ++ .../functions/fnc_onCategorySelectChanged.sqf | 27 ++++++++++++ .../functions/fnc_onSettingsMenuOpen.sqf | 7 ++++ .../fnc_serverSettingsMenuUpdateKeyView.sqf | 6 +-- .../fnc_serverSettingsMenuUpdateList.sqf | 8 ++-- .../fnc_settingsMenuUpdateKeyView.sqf | 15 ++++++- .../functions/fnc_settingsMenuUpdateList.sqf | 42 ++++++++++--------- .../functions/fnc_updateSetting.sqf | 10 ++--- addons/optionsmenu/gui/settingsMenu.hpp | 12 +++++- 14 files changed, 169 insertions(+), 39 deletions(-) create mode 100644 addons/optionsmenu/XEH_postInit.sqf create mode 100644 addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 9a95819996..f45f6736bf 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -65,7 +65,8 @@ if (isNil _name) then { localizedDescription, possibleValues, isForced, - defaultValue + defaultValue, + category ];*/ _settingData = [ _name, @@ -75,7 +76,8 @@ if (isNil _name) then { getText (_optionEntry >> "description"), getArray (_optionEntry >> "values"), getNumber (_optionEntry >> "force") > 0, - _value + _value, + getText (_optionEntry >> "category") ]; //Strings in the values array won't be localized from the config, so just do that now: diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp index ea4d4699ed..966b919ad0 100644 --- a/addons/interact_menu/ACE_Settings.hpp +++ b/addons/interact_menu/ACE_Settings.hpp @@ -3,12 +3,14 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(AlwaysUseCursorSelfInteraction); }; class GVAR(cursorKeepCentered) { value = 0; typeName = "BOOL"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(cursorKeepCentered); description = CSTRING(cursorKeepCenteredDescription); }; @@ -16,18 +18,21 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(AlwaysUseCursorInteraction); }; class GVAR(UseListMenu) { value = 0; typeName = "BOOL"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(UseListMenu); }; class GVAR(colorTextMax) { value[] = {1, 1, 1, 1}; typeName = "COLOR"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(ColorTextMax); }; class GVAR(colorTextMin) { @@ -40,18 +45,21 @@ class ACE_Settings { value[] = {0, 0, 0, 1}; typeName = "COLOR"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(ColorShadowMax); }; class GVAR(colorShadowMin) { value[] = {0, 0, 0, 0.25}; typeName = "COLOR"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(ColorShadowMin); }; class GVAR(textSize) { value = 2; typeName = "SCALAR"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(textSize); values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"}; }; @@ -59,6 +67,7 @@ class ACE_Settings { value = 2; typeName = "SCALAR"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(shadowSetting); description = CSTRING(shadowSettingDescription); values[] = {"$STR_A3_OPTIONS_DISABLED", "$STR_A3_OPTIONS_ENABLED", CSTRING(shadowOutline)}; @@ -67,12 +76,14 @@ class ACE_Settings { value = 1; typeName = "BOOL"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(ActionOnKeyRelease); }; class GVAR(menuBackground) { value = 0; typeName = "SCALAR"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(background); values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(backgroundBlur), CSTRING(backgroundBlack)}; }; @@ -80,6 +91,7 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; + category = "Interaction Menu"; displayName = CSTRING(addBuildingActions); description = CSTRING(addBuildingActionsDescription); }; diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index fcaba03aa0..46b1f04e57 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -1,94 +1,116 @@ class ACE_Settings { class GVAR(level) { + category = "medical"; value = 1; typeName = "SCALAR"; values[] = {"Disabled", "Basic", "Advanced"}; }; class GVAR(medicSetting) { + category = "medical"; value = 1; typeName = "SCALAR"; values[] = {"Disabled", "Normal", "Advanced"}; }; class GVAR(enableFor) { + category = "medical"; value = 0; typeName = "SCALAR"; values[] = {"Players only", "Players and AI"}; }; class GVAR(enableOverdosing) { + category = "medical"; typeName = "BOOL"; value = 1; }; class GVAR(bleedingCoefficient) { + category = "medical"; typeName = "SCALAR"; value = 1; }; class GVAR(painCoefficient) { + category = "medical"; typeName = "SCALAR"; value = 1; }; class GVAR(enableAirway) { + category = "medical"; typeName = "BOOL"; value = false; }; class GVAR(enableFractures) { + category = "medical"; typeName = "BOOL"; value = false; }; class GVAR(enableAdvancedWounds) { + category = "medical"; typeName = "BOOL"; value = false; }; class GVAR(enableVehicleCrashes) { + category = "medical"; typeName = "BOOL"; value = 1; }; class GVAR(enableScreams) { + category = "medical"; typeName = "BOOL"; value = 1; }; class GVAR(playerDamageThreshold) { + category = "medical"; typeName = "SCALAR"; value = 1; }; class GVAR(AIDamageThreshold) { + category = "medical"; typeName = "SCALAR"; value = 1; }; class GVAR(enableUnconsciousnessAI) { + category = "medical"; value = 1; typeName = "SCALAR"; values[] = {"Disabled", "50/50", "Enabled"}; }; class GVAR(remoteControlledAI) { + category = "medical"; typeName = "BOOL"; value = 1; }; class GVAR(preventInstaDeath) { + category = "medical"; typeName = "BOOL"; value = 0; }; class GVAR(enableRevive) { + category = "medical"; typeName = "SCALAR"; value = 0; values[] = {"Disabled", "Players only", "Players and AI"}; }; class GVAR(maxReviveTime) { + category = "medical"; typeName = "SCALAR"; value = 120; }; class GVAR(amountOfReviveLives) { + category = "medical"; typeName = "SCALAR"; value = -1; }; class GVAR(allowDeadBodyMovement) { + category = "medical"; typeName = "BOOL"; value = 0; }; class GVAR(allowLitterCreation) { + category = "medical"; typeName = "BOOL"; value = 1; }; class GVAR(litterSimulationDetail) { + category = "medical"; displayName = CSTRING(litterSimulationDetail); description = CSTRING(litterSimulationDetail_Desc); typeName = "SCALAR"; @@ -100,40 +122,48 @@ class ACE_Settings { isClientSettable = 1; }; class GVAR(litterCleanUpDelay) { + category = "medical"; typeName = "SCALAR"; value = 0; }; class GVAR(medicSetting_PAK) { + category = "medical"; typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(medicSetting_SurgicalKit) { + category = "medical"; typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(consumeItem_PAK) { + category = "medical"; typeName = "SCALAR"; value = 0; values[] = {"No", "Yes"}; }; class GVAR(consumeItem_SurgicalKit) { + category = "medical"; typeName = "SCALAR"; value = 0; values[] = {"No", "Yes"}; }; class GVAR(useLocation_PAK) { + category = "medical"; typeName = "SCALAR"; value = 3; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; }; class GVAR(useLocation_SurgicalKit) { + category = "medical"; typeName = "SCALAR"; value = 2; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; }; class GVAR(useCondition_PAK) { + category = "medical"; displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName); description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description); typeName = "SCALAR"; @@ -141,6 +171,7 @@ class ACE_Settings { values[] = {"Anytime", "Stable"}; }; class GVAR(useCondition_SurgicalKit) { + category = "medical"; displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); typeName = "SCALAR"; @@ -148,20 +179,24 @@ class ACE_Settings { values[] = {"Anytime", "Stable"}; }; class GVAR(keepLocalSettingsSynced) { + category = "medical"; typeName = "BOOL"; value = 1; }; class GVAR(healHitPointAfterAdvBandage) { + category = "medical"; displayName = CSTRING(healHitPointAfterAdvBandage); typeName = "BOOL"; value = 0; }; class GVAR(painIsOnlySuppressed) { + category = "medical"; displayName = CSTRING(painIsOnlySuppressed); typeName = "BOOL"; value = 1; }; class GVAR(painEffectType) { + category = "medical"; displayName = CSTRING(painEffectType); typeName = "SCALAR"; value = 0; @@ -169,15 +204,18 @@ class ACE_Settings { isClientSettable = 1; }; class GVAR(allowUnconsciousAnimationOnTreatment) { + category = "medical"; typeName = "BOOL"; value = 0; }; class GVAR(moveUnitsFromGroupOnUnconscious) { + category = "medical"; typeName = "BOOL"; value = 0; }; class GVAR(menuTypeStyle) { + category = "medical"; displayName = CSTRING(menuTypeDisplay); description = CSTRING(menuTypeDescription); typeName = "SCALAR"; diff --git a/addons/optionsmenu/CfgEventHandlers.hpp b/addons/optionsmenu/CfgEventHandlers.hpp index b97829836e..917a0acbd7 100644 --- a/addons/optionsmenu/CfgEventHandlers.hpp +++ b/addons/optionsmenu/CfgEventHandlers.hpp @@ -1,5 +1,10 @@ class Extended_PreInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_preInit)); - }; + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_postInit)); + }; }; diff --git a/addons/optionsmenu/XEH_postInit.sqf b/addons/optionsmenu/XEH_postInit.sqf new file mode 100644 index 0000000000..fdf9075b99 --- /dev/null +++ b/addons/optionsmenu/XEH_postInit.sqf @@ -0,0 +1,11 @@ + +#include "script_component.hpp" + +["SettingsInitialized", { + { + if !(_x select 8 in GVAR(categories)) then { + GVAR(categories) pushback (_x select 8); + diag_log format["Category: %1", _x]; + }; + }foreach EGVAR(common,settings); +}] call EFUNC(common,addEventHandler); diff --git a/addons/optionsmenu/XEH_preInit.sqf b/addons/optionsmenu/XEH_preInit.sqf index e35784560a..7bd86af1fd 100644 --- a/addons/optionsmenu/XEH_preInit.sqf +++ b/addons/optionsmenu/XEH_preInit.sqf @@ -10,6 +10,7 @@ PREP(onSliderPosChanged); PREP(onServerSaveInputField); PREP(onServerSettingsMenuOpen); PREP(onServerListBoxShowSelectionChanged); +PREP(onCategorySelectChanged); PREP(resetSettings); PREP(serverResetSettings); PREP(settingsMenuUpdateKeyView); @@ -29,5 +30,7 @@ GVAR(ClientSettingsExportIncluded) = false; GVAR(serverSideOptions) = []; GVAR(serverSideColors) = []; GVAR(serverSideValues) = []; +GVAR(categories) = []; +GVAR(currentCategorySelection) = 0; ADDON = true; diff --git a/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf b/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf new file mode 100644 index 0000000000..974587b36a --- /dev/null +++ b/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf @@ -0,0 +1,27 @@ +/* + * Author: Glowbal + * Changes which category is selected + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * [] call ACE_optionsmenu_fnc_onCategorySelectChanged + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_settingsMenu"]; + +disableSerialization; +_settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; + +_ctrlComboBox = (_settingsMenu displayCtrl 14); +GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox; + +[false] call ACE_optionsmenu_fnc_settingsMenuUpdateList; diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf index 050abcf295..9b6c33eda8 100644 --- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf @@ -52,3 +52,10 @@ if (GVAR(serverConfigGeneration) == 0) then { (_menu displayCtrl 1102) ctrlEnable false; (_menu displayCtrl 1102) ctrlShow false; }; + +{ + if (_x == "") then { + _x = "All Categories"; + }; + (_menu displayCtrl 14) lbAdd _x; +} forEach GVAR(categories); diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf index 9daee053bb..15806a2e9b 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf @@ -52,7 +52,7 @@ if (count _collection > 0) then { switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_SERVER_OPTIONS): { _possibleValues = _setting select 5; - _settingsValue = _setting select 8; + _settingsValue = _setting select 9; // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { lbClear 400; @@ -66,14 +66,14 @@ if (count _collection > 0) then { (_settingsMenu displayCtrl 400) lbSetCurSel _settingsValue; }; case (MENU_TAB_SERVER_COLORS): { - _currentColor = _setting select 8; + _currentColor = _setting select 9; { sliderSetPosition [_x, (255 * (_currentColor select _forEachIndex))]; } forEach [410, 411, 412, 413]; }; case (MENU_TAB_SERVER_VALUES): { // TODO implement - _settingsValue = _setting select 8; + _settingsValue = _setting select 9; // Created disable/enable options for bools _expectedType = switch (_setting select 1) do { diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf index f3e393bbfd..f21ca8abc8 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf @@ -33,7 +33,7 @@ switch (GVAR(optionMenu_openTab)) do { _ctrlList lbadd (_x select 0); }; - _settingsValue = _x select 8; + _settingsValue = _x select 9; // Created disable/enable options for bools _settingsText = if ((_x select 1) == "BOOL") then { @@ -47,7 +47,7 @@ switch (GVAR(optionMenu_openTab)) do { }; case (MENU_TAB_SERVER_COLORS): { { - _color = +(_x select 8); + _color = +(_x select 9); { _color set [_forEachIndex, ((round (_x * 100))/100)]; } forEach _color; @@ -58,7 +58,7 @@ switch (GVAR(optionMenu_openTab)) do { _ctrlList lbadd (_x select 0); }; _ctrlList lbadd (_settingsColor); - _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 8)]; + _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)]; }foreach GVAR(serverSideColors); }; case (MENU_TAB_SERVER_VALUES): { @@ -68,7 +68,7 @@ switch (GVAR(optionMenu_openTab)) do { } else { _ctrlList lbadd (_x select 0); }; - _settingsValue = _x select 8; + _settingsValue = _x select 9; if (typeName _settingsValue != "STRINg") then { _settingsValue = format["%1", _settingsValue]; }; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf index 3777093ccd..7ed7a4e487 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf @@ -37,8 +37,19 @@ if (count _collection > 0) then { if (_settingIndex < 0) then { _settingIndex = 0; }; + diag_log format["_collection: %1", _collection]; _setting = _collection select _settingIndex; + _selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); + if !(_selectedCategory == "All Categories" || _selectedCategory == (_setting select 8)) exitwith { + systemChat format["INCORRECT CATEGORY: %1 != %2", _selectedCategory, _setting]; + diag_log format["INCORRECT CATEGORY: %1 != %2", _selectedCategory, _setting]; + lbClear 400; + (_settingsMenu displayCtrl 250) ctrlSetText "No settings available"; + (_settingsMenu displayCtrl 251) ctrlSetText "No settings available"; + (_settingsMenu displayCtrl 300) ctrlSetText "No settings available"; + }; + _entryName = _setting select 0; _localizedName = _setting select 3; _localizedDescription = _setting select 4; @@ -51,7 +62,7 @@ if (count _collection > 0) then { switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_OPTIONS): { _possibleValues = _setting select 5; - _settingsValue = _setting select 8; + _settingsValue = _setting select 9; // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { @@ -66,7 +77,7 @@ if (count _collection > 0) then { (_settingsMenu displayCtrl 400) lbSetCurSel _settingsValue; }; case (MENU_TAB_COLORS): { - _currentColor = _setting select 8; + _currentColor = _setting select 9; { sliderSetPosition [_x, (255 * (_currentColor select _forEachIndex))]; } forEach [410, 411, 412, 413]; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf index fdd9128ca3..5f067e45c4 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf @@ -25,33 +25,37 @@ _ctrlList = _settingsMenu displayCtrl 200; lbclear _ctrlList; +_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); + switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_OPTIONS): { { - _ctrlList lbadd (_x select 3); + if (_selectedCategory == "All Categories" || _selectedCategory == (_X select 8)) then { + _ctrlList lbadd (_x select 3); + _settingsValue = _x select 9; - _settingsValue = _x select 8; - - // Created disable/enable options for bools - _settingsText = if ((_x select 1) == "BOOL") then { - [(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue; - } else { - (_x select 5) select _settingsValue; + // Created disable/enable options for bools + _settingsText = if ((_x select 1) == "BOOL") then { + [(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue; + } else { + (_x select 5) select _settingsValue; + }; + _ctrlList lbadd (_settingsText); }; - - _ctrlList lbadd (_settingsText); }foreach GVAR(clientSideOptions); }; case (MENU_TAB_COLORS): { - { - _color = +(_x select 8); - { - _color set [_forEachIndex, ((round (_x * 100))/100)]; - } forEach _color; - _settingsColor = str _color; - _ctrlList lbadd (_x select 3); - _ctrlList lbadd (_settingsColor); - _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 8)]; + { + if (_selectedCategory == "All Categories" || _selectedCategory == (_X select 8)) then { + _color = +(_x select 9); + { + _color set [_forEachIndex, ((round (_x * 100))/100)]; + } forEach _color; + _settingsColor = str _color; + _ctrlList lbadd (_x select 3); + _ctrlList lbadd (_settingsColor); + _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)]; + }; }foreach GVAR(clientSideColors); }; }; diff --git a/addons/optionsmenu/functions/fnc_updateSetting.sqf b/addons/optionsmenu/functions/fnc_updateSetting.sqf index 3fe1682614..89f4a0f1a3 100644 --- a/addons/optionsmenu/functions/fnc_updateSetting.sqf +++ b/addons/optionsmenu/functions/fnc_updateSetting.sqf @@ -32,7 +32,7 @@ switch (_type) do { _newValue = [false, true] select _newValue; }; - if !((_x select 8) isEqualTo _newValue) then { + if !((_x select 9) isEqualTo _newValue) then { _changed = true; _x set [8, _newValue]; } ; @@ -42,7 +42,7 @@ switch (_type) do { }; case (MENU_TAB_COLORS): { { - if (((_x select 0) == _name) && {!((_x select 8) isEqualTo _newValue)}) then { + if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; _x set [8, _newValue]; }; @@ -56,7 +56,7 @@ switch (_type) do { _newValue = [false, true] select _newValue; }; - if !((_x select 8) isEqualTo _newValue) then { + if !((_x select 9) isEqualTo _newValue) then { _changed = true; _x set [8, _newValue]; } ; @@ -66,7 +66,7 @@ switch (_type) do { }; case (MENU_TAB_SERVER_COLORS): { { - if (((_x select 0) == _name) && {!((_x select 8) isEqualTo _newValue)}) then { + if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; _x set [8, _newValue]; }; @@ -74,7 +74,7 @@ switch (_type) do { }; case (MENU_TAB_SERVER_VALUES): { { - if (((_x select 0) == _name) && {!((_x select 8) isEqualTo _newValue)}) then { + if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; _x set [8, _newValue]; }; diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp index 665db1f17a..2c3185e234 100644 --- a/addons/optionsmenu/gui/settingsMenu.hpp +++ b/addons/optionsmenu/gui/settingsMenu.hpp @@ -77,10 +77,20 @@ class ACE_settingsMenu { idc = 13; x = X_PART(2); y = Y_PART(3.4); - w = W_PART(30); + w = W_PART(15); h = H_PART(1); text = ""; }; + class categorySelection: ACE_gui_comboBoxBase { + idc = 14; + x = X_PART(15); + y = Y_PART(3.4); + w = W_PART(9); + h = H_PART(1); + text = ""; + onLBSelChanged = QUOTE( call FUNC(onCategorySelectChanged)); + SizeEx = H_PART(0.9); + }; class selectionAction_1: ACE_gui_buttonBase { idc = 1000; text = CSTRING(TabOptions); From 9e64e8c2aabe86fbb6abc2e37d6a6c26de0e80ac Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 7 Aug 2015 21:41:07 +0200 Subject: [PATCH 53/78] Increased sitting interaction distance - fixes #1950 --- addons/sitting/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index ac690e2dcd..a156d5e87e 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -39,7 +39,7 @@ class CfgVehicles { class ACE_MainActions { \ displayName = ECSTRING(interaction,MainAction); \ selection = ""; \ - distance = 1.25; \ + distance = 1.5; \ condition = "true"; \ class GVAR(Sit) { \ displayName = CSTRING(Sit); \ From a3a481f96d929ff6f018d128b4c79355464050b7 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 7 Aug 2015 15:08:52 -0500 Subject: [PATCH 54/78] Some fixes --- addons/optionsmenu/XEH_postInit.sqf | 1 + .../functions/fnc_onSettingsMenuOpen.sqf | 4 +++ .../fnc_settingsMenuUpdateKeyView.sqf | 27 +++++++++---------- .../functions/fnc_settingsMenuUpdateList.sqf | 4 +-- .../functions/fnc_updateSetting.sqf | 10 +++---- 5 files changed, 24 insertions(+), 22 deletions(-) diff --git a/addons/optionsmenu/XEH_postInit.sqf b/addons/optionsmenu/XEH_postInit.sqf index fdf9075b99..65e0f9fde2 100644 --- a/addons/optionsmenu/XEH_postInit.sqf +++ b/addons/optionsmenu/XEH_postInit.sqf @@ -2,6 +2,7 @@ #include "script_component.hpp" ["SettingsInitialized", { + GVAR(categories) pushback ""; //Ensure All Catagories is at top { if !(_x select 8 in GVAR(categories)) then { GVAR(categories) pushback (_x select 8); diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf index 9b6c33eda8..eaceadc56b 100644 --- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf @@ -59,3 +59,7 @@ if (GVAR(serverConfigGeneration) == 0) then { }; (_menu displayCtrl 14) lbAdd _x; } forEach GVAR(categories); + +(_menu displayCtrl 14) lbSetCurSel 0; //All Catagoies + + diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf index 7ed7a4e487..359f7c93af 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf @@ -28,27 +28,24 @@ _collection = switch (GVAR(optionMenu_openTab)) do { default {[]}; }; -if (count _collection > 0) then { +_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); +_filteredCollection = []; +{ + if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then { + _filteredCollection pushBack _x; + }; +} forEach _collection; + +if (count _filteredCollection > 0) then { _settingIndex = (lbCurSel _ctrlList); - if (_settingIndex > (count _collection)) then { - _settingIndex = count _collection - 1; + if (_settingIndex > (count _filteredCollection)) then { + _settingIndex = count _filteredCollection - 1; }; if (_settingIndex < 0) then { _settingIndex = 0; }; - diag_log format["_collection: %1", _collection]; - _setting = _collection select _settingIndex; - - _selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); - if !(_selectedCategory == "All Categories" || _selectedCategory == (_setting select 8)) exitwith { - systemChat format["INCORRECT CATEGORY: %1 != %2", _selectedCategory, _setting]; - diag_log format["INCORRECT CATEGORY: %1 != %2", _selectedCategory, _setting]; - lbClear 400; - (_settingsMenu displayCtrl 250) ctrlSetText "No settings available"; - (_settingsMenu displayCtrl 251) ctrlSetText "No settings available"; - (_settingsMenu displayCtrl 300) ctrlSetText "No settings available"; - }; + _setting = _filteredCollection select _settingIndex; _entryName = _setting select 0; _localizedName = _setting select 3; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf index 5f067e45c4..b2ec6392e8 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf @@ -30,7 +30,7 @@ _selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_OPTIONS): { { - if (_selectedCategory == "All Categories" || _selectedCategory == (_X select 8)) then { + if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { _ctrlList lbadd (_x select 3); _settingsValue = _x select 9; @@ -46,7 +46,7 @@ switch (GVAR(optionMenu_openTab)) do { }; case (MENU_TAB_COLORS): { { - if (_selectedCategory == "All Categories" || _selectedCategory == (_X select 8)) then { + if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { _color = +(_x select 9); { _color set [_forEachIndex, ((round (_x * 100))/100)]; diff --git a/addons/optionsmenu/functions/fnc_updateSetting.sqf b/addons/optionsmenu/functions/fnc_updateSetting.sqf index 89f4a0f1a3..25fa06c604 100644 --- a/addons/optionsmenu/functions/fnc_updateSetting.sqf +++ b/addons/optionsmenu/functions/fnc_updateSetting.sqf @@ -34,7 +34,7 @@ switch (_type) do { if !((_x select 9) isEqualTo _newValue) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; } ; }; @@ -44,7 +44,7 @@ switch (_type) do { { if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; }; } foreach GVAR(clientSideColors); }; @@ -58,7 +58,7 @@ switch (_type) do { if !((_x select 9) isEqualTo _newValue) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; } ; }; @@ -68,7 +68,7 @@ switch (_type) do { { if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; }; } foreach GVAR(serverSideColors); }; @@ -76,7 +76,7 @@ switch (_type) do { { if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; }; } foreach GVAR(serverSideValues); }; From 4895c5b57edc93e7873d0b8d90b3aad1705e4f42 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 7 Aug 2015 22:09:59 +0200 Subject: [PATCH 55/78] fixed wrong index used --- addons/optionsmenu/functions/fnc_updateSetting.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/optionsmenu/functions/fnc_updateSetting.sqf b/addons/optionsmenu/functions/fnc_updateSetting.sqf index 89f4a0f1a3..25fa06c604 100644 --- a/addons/optionsmenu/functions/fnc_updateSetting.sqf +++ b/addons/optionsmenu/functions/fnc_updateSetting.sqf @@ -34,7 +34,7 @@ switch (_type) do { if !((_x select 9) isEqualTo _newValue) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; } ; }; @@ -44,7 +44,7 @@ switch (_type) do { { if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; }; } foreach GVAR(clientSideColors); }; @@ -58,7 +58,7 @@ switch (_type) do { if !((_x select 9) isEqualTo _newValue) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; } ; }; @@ -68,7 +68,7 @@ switch (_type) do { { if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; }; } foreach GVAR(serverSideColors); }; @@ -76,7 +76,7 @@ switch (_type) do { { if (((_x select 0) == _name) && {!((_x select 9) isEqualTo _newValue)}) then { _changed = true; - _x set [8, _newValue]; + _x set [9, _newValue]; }; } foreach GVAR(serverSideValues); }; From 8355558db1fbebc5fcec496174e4ea4264738864 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Sat, 8 Aug 2015 01:18:48 +0200 Subject: [PATCH 56/78] Small readability improvement in slideshow --- addons/slideshow/functions/fnc_autoTransition.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/slideshow/functions/fnc_autoTransition.sqf b/addons/slideshow/functions/fnc_autoTransition.sqf index d482c8ce58..c8b03a707a 100644 --- a/addons/slideshow/functions/fnc_autoTransition.sqf +++ b/addons/slideshow/functions/fnc_autoTransition.sqf @@ -36,7 +36,6 @@ missionNamespace setVariable [_varString, _currentSlide]; _x setObjectTextureGlobal [0, _images select _currentSlide]; } count _objects; +// Log current slide and execute Next slide TRACE_4("Auto-transition",_images select _currentSlide,_currentSlide,count _images,_duration); - -// Next slide [FUNC(autoTransition), [_objects, _images, _varString, _duration], _duration] call EFUNC(common,waitAndExecute); From 52ac13273c8bd5a1486daf2215c03007496fdea6 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 8 Aug 2015 02:13:14 +0200 Subject: [PATCH 57/78] Fixed #1937 - Made use of CfgMoves to make free-look head movement visible, Fixed grenade throwing while sitting --- addons/sitting/CfgMoves.hpp | 105 ++++++++++++++++++ addons/sitting/config.cpp | 3 +- .../functions/fnc_getRandomAnimation.sqf | 48 ++++---- addons/sitting/functions/fnc_sit.sqf | 3 +- 4 files changed, 133 insertions(+), 26 deletions(-) create mode 100644 addons/sitting/CfgMoves.hpp diff --git a/addons/sitting/CfgMoves.hpp b/addons/sitting/CfgMoves.hpp new file mode 100644 index 0000000000..fc902032e2 --- /dev/null +++ b/addons/sitting/CfgMoves.hpp @@ -0,0 +1,105 @@ +// Enable visual head movement while free-looking +#define MACRO_ANIMATION \ + head = "headDefault"; + +class CfgMovesBasic; +class CfgMovesMaleSdr: CfgMovesBasic { + class States { + class HubSittingChairA_idle1; + class GVAR(HubSittingChairA_idle1): HubSittingChairA_idle1 { + MACRO_ANIMATION + }; + class HubSittingChairA_idle2; + class GVAR(HubSittingChairA_idle2): HubSittingChairA_idle2 { + MACRO_ANIMATION + }; + class HubSittingChairA_idle3; + class GVAR(HubSittingChairA_idle3): HubSittingChairA_idle3 { + MACRO_ANIMATION + }; + class HubSittingChairA_move1; + class GVAR(HubSittingChairA_move1): HubSittingChairA_move1 { + MACRO_ANIMATION + }; + class HubSittingChairB_idle1; + class GVAR(HubSittingChairB_idle1): HubSittingChairB_idle1 { + MACRO_ANIMATION + }; + class HubSittingChairB_idle2; + class GVAR(HubSittingChairB_idle2): HubSittingChairB_idle2 { + MACRO_ANIMATION + }; + class HubSittingChairB_idle3; + class GVAR(HubSittingChairB_idle3): HubSittingChairB_idle3 { + MACRO_ANIMATION + }; + class HubSittingChairB_move1; + class GVAR(HubSittingChairB_move1): HubSittingChairB_move1 { + MACRO_ANIMATION + }; + class HubSittingChairC_idle1; + class GVAR(HubSittingChairC_idle1): HubSittingChairC_idle1 { + MACRO_ANIMATION + }; + class HubSittingChairC_idle2; + class GVAR(HubSittingChairC_idle2): HubSittingChairC_idle2 { + MACRO_ANIMATION + }; + class HubSittingChairC_idle3; + class GVAR(HubSittingChairC_idle3): HubSittingChairC_idle3 { + MACRO_ANIMATION + }; + class HubSittingChairC_move1; + class GVAR(HubSittingChairC_move1): HubSittingChairC_move1 { + MACRO_ANIMATION + }; + class HubSittingChairUA_idle1; + class GVAR(HubSittingChairUA_idle1): HubSittingChairUA_idle1 { + MACRO_ANIMATION + }; + class HubSittingChairUA_idle2; + class GVAR(HubSittingChairUA_idle2): HubSittingChairUA_idle2 { + MACRO_ANIMATION + }; + class HubSittingChairUA_idle3; + class GVAR(HubSittingChairUA_idle3): HubSittingChairUA_idle3 { + MACRO_ANIMATION + }; + class HubSittingChairUA_move1; + class GVAR(HubSittingChairUA_move1): HubSittingChairUA_move1 { + MACRO_ANIMATION + }; + class HubSittingChairUB_idle1; + class GVAR(HubSittingChairUB_idle1): HubSittingChairUB_idle1 { + MACRO_ANIMATION + }; + class HubSittingChairUB_idle2; + class GVAR(HubSittingChairUB_idle2): HubSittingChairUB_idle2 { + MACRO_ANIMATION + }; + class HubSittingChairUB_idle3; + class GVAR(HubSittingChairUB_idle3): HubSittingChairUB_idle3 { + MACRO_ANIMATION + }; + class HubSittingChairUB_move1; + class GVAR(HubSittingChairUB_move1): HubSittingChairUB_move1 { + MACRO_ANIMATION + }; + class HubSittingChairUC_idle1; + class GVAR(HubSittingChairUC_idle1): HubSittingChairUC_idle1 { + MACRO_ANIMATION + }; + class HubSittingChairUC_idle2; + class GVAR(HubSittingChairUC_idle2): HubSittingChairUC_idle2 { + MACRO_ANIMATION + }; + class HubSittingChairUC_idle3; + class GVAR(HubSittingChairUC_idle3): HubSittingChairUC_idle3 { + MACRO_ANIMATION + }; + class HubSittingChairUC_move1; + class GVAR(HubSittingChairUC_move1): HubSittingChairUC_move1 { + MACRO_ANIMATION + }; + }; +}; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index f12fa530fa..96d3edab7b 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -12,6 +12,7 @@ class CfgPatches { }; }; -#include "CfgEventHandlers.hpp" #include "ACE_Settings.hpp" +#include "CfgEventHandlers.hpp" +#include "CfgMoves.hpp" #include "CfgVehicles.hpp" diff --git a/addons/sitting/functions/fnc_getRandomAnimation.sqf b/addons/sitting/functions/fnc_getRandomAnimation.sqf index c83d230a90..b4d6455694 100644 --- a/addons/sitting/functions/fnc_getRandomAnimation.sqf +++ b/addons/sitting/functions/fnc_getRandomAnimation.sqf @@ -19,30 +19,30 @@ private ["_animations"]; // Animations Pool _animations = [ - "HubSittingChairUA_idle1", - "HubSittingChairUA_idle2", - "HubSittingChairUA_idle3", - "HubSittingChairUA_move1", - "HubSittingChairUB_idle1", - "HubSittingChairUB_idle2", - "HubSittingChairUB_idle3", - "HubSittingChairUB_move1", - "HubSittingChairUC_idle1", - "HubSittingChairUC_idle2", - "HubSittingChairUC_idle3", - "HubSittingChairUC_move1", - "HubSittingChairA_idle1", - "HubSittingChairA_idle2", - "HubSittingChairA_idle3", - "HubSittingChairA_move1", - "HubSittingChairB_idle1", - "HubSittingChairB_idle2", - "HubSittingChairB_idle3", - "HubSittingChairB_move1", - "HubSittingChairC_idle1", - "HubSittingChairC_idle2", - "HubSittingChairC_idle3", - "HubSittingChairC_move1" + QGVAR(HubSittingChairA_idle1), + QGVAR(HubSittingChairA_idle2), + QGVAR(HubSittingChairA_idle3), + QGVAR(HubSittingChairA_move1), + QGVAR(HubSittingChairB_idle1), + QGVAR(HubSittingChairB_idle2), + QGVAR(HubSittingChairB_idle3), + QGVAR(HubSittingChairB_move1), + QGVAR(HubSittingChairC_idle1), + QGVAR(HubSittingChairC_idle2), + QGVAR(HubSittingChairC_idle3), + QGVAR(HubSittingChairC_move1), + QGVAR(HubSittingChairUA_idle1), + QGVAR(HubSittingChairUA_idle2), + QGVAR(HubSittingChairUA_idle3), + QGVAR(HubSittingChairUA_move1), + QGVAR(HubSittingChairUB_idle1), + QGVAR(HubSittingChairUB_idle2), + QGVAR(HubSittingChairUB_idle3), + QGVAR(HubSittingChairUB_move1), + QGVAR(HubSittingChairUC_idle1), + QGVAR(HubSittingChairUC_idle2), + QGVAR(HubSittingChairUC_idle3), + QGVAR(HubSittingChairUC_move1) ]; // Select random animation diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index d6b729d544..b8cbcfc56b 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -34,7 +34,8 @@ _sitPosition = getArray (_configFile >> QGVAR(sitPosition)); _sitRotation = if (isNumber (_configFile >> QGVAR(sitRotation))) then {getNumber (_configFile >> QGVAR(sitRotation))} else {45}; // Apply default if config entry not present // Get random animation and perform it (before moving player to ensure correct placement) -[_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation); +[_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation); // Correctly places when using non-transitional animations +[_player, "", 1] call EFUNC(common,doAnimation); // Correctly applies animation's config values (such as disallow throwing of grenades, intercept keybinds... etc). // Set direction and position _player setDir _sitDirection; From 680bbebc02f4ffc34f80e5df7d6cb254df4f4ed3 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Sat, 8 Aug 2015 11:25:45 +0200 Subject: [PATCH 58/78] Fixed missing private in scopes --- addons/scopes/functions/fnc_adjustScope.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf index 83a81346b6..42e0f17818 100644 --- a/addons/scopes/functions/fnc_adjustScope.sqf +++ b/addons/scopes/functions/fnc_adjustScope.sqf @@ -17,7 +17,7 @@ */ #include "script_component.hpp" -private ["_weaponIndex", "_zeroing", "_optic", "_verticalIncrement", "_horizontalIncrement", "_maxVertical", "_maxHorizontal", "_adjustment"]; +private ["_weaponIndex", "_zeroing", "_optic", "_opticConfig", "_verticalIncrement", "_horizontalIncrement", "_maxVertical", "_maxHorizontal", "_adjustment"]; params ["_unit", "_turretAndDirection", "_majorStep"]; From 38b9fdab4db692238731f5822b7a45c881924786 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 11:51:31 +0200 Subject: [PATCH 59/78] fixes #1948 --- addons/optionsmenu/functions/fnc_exportSettings.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/optionsmenu/functions/fnc_exportSettings.sqf b/addons/optionsmenu/functions/fnc_exportSettings.sqf index fa76b8752a..32ce922350 100644 --- a/addons/optionsmenu/functions/fnc_exportSettings.sqf +++ b/addons/optionsmenu/functions/fnc_exportSettings.sqf @@ -40,7 +40,8 @@ private ["_compiledConfig", "_name", "_typeName", "_isClientSetable", "_localize if (GVAR(ClientSettingsExportIncluded) || !_isClientSetable) then { _value = missionNamespace getvariable [_name, _defaultValue]; - if (_typeName == "STRING") then { // I dont think we have string values, but just in case + if (_typeName == "STRING") then { + _value = [_value, '"', "'"] call CBA_fnc_replace; // TODO improve the quotation replacement _value = format['"%1"', _value]; }; if (_typeName == "BOOL") then { From 0601aa80bbbf5a00f9430592e231ea26211f270d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 11:52:23 +0200 Subject: [PATCH 60/78] Localized All categories string Enabled categories for config export menu --- .../fnc_onServerCategorySelectChanged.sqf | 27 +++++++++++++++++++ .../fnc_onServerSettingsMenuOpen.sqf | 9 +++++++ .../functions/fnc_onSettingsMenuOpen.sqf | 4 +-- addons/optionsmenu/gui/settingsMenu.hpp | 24 ++++++++++++----- addons/optionsmenu/stringtable.xml | 3 +++ 5 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf diff --git a/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf b/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf new file mode 100644 index 0000000000..e3e977e6fe --- /dev/null +++ b/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf @@ -0,0 +1,27 @@ +/* + * Author: Glowbal + * Changes which category is selected + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * [] call ACE_optionsmenu_fnc_onCategorySelectChanged + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_settingsMenu"]; + +disableSerialization; +_settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; + +_ctrlComboBox = (_settingsMenu displayCtrl 14); +GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox; + +[false] call FUNC(serverSettingsMenuUpdateList); diff --git a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf index 4f96438042..fa3084c608 100644 --- a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf @@ -65,3 +65,12 @@ if (GVAR(ClientSettingsExportIncluded)) then { } else { (_settingsMenu displayCtrl 1102) ctrlSetText localize (LSTRING(inClientSettings)); }; + +{ + if (_x == "") then { + _x = localize "STR_ACE_OptionsMenu_category_all"; + }; + (_menu displayCtrl 14) lbAdd if (isLocalized _x) then {localize _x} else {_x}; +} forEach GVAR(categories); + +(_menu displayCtrl 14) lbSetCurSel 0; //All Catagoies diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf index eaceadc56b..2142dc1a5b 100644 --- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf @@ -55,9 +55,9 @@ if (GVAR(serverConfigGeneration) == 0) then { { if (_x == "") then { - _x = "All Categories"; + _x = localize "STR_ACE_OptionsMenu_category_all"; }; - (_menu displayCtrl 14) lbAdd _x; + (_menu displayCtrl 14) lbAdd if (isLocalized _x) then {localize _x} else {_x}; } forEach GVAR(categories); (_menu displayCtrl 14) lbSetCurSel 0; //All Catagoies diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp index 2c3185e234..2c79bdab1d 100644 --- a/addons/optionsmenu/gui/settingsMenu.hpp +++ b/addons/optionsmenu/gui/settingsMenu.hpp @@ -1,9 +1,3 @@ -class ACE_settingsMenu { - idd = 145246; - movingEnable = false; - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', _this select 0)]; [] call FUNC(onSettingsMenuOpen);); - onUnload = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', nil)]; saveProfileNamespace;); - #define SIZEX (((safezoneW / safezoneH) min 1.2)) #define SIZEY (SIZEX / 1.2) #define X_ORIGINAL(num) (num * (SIZEX / 40) + (safezoneX + (safezoneW - SIZEX)/2)) @@ -21,6 +15,12 @@ class ACE_settingsMenu { #define W_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), W_ORIGINAL(num), W_MAKEITBIGGA(num))]) #define H_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), H_ORIGINAL(num), H_MAKEITBIGGA(num))]) +class ACE_settingsMenu { + idd = 145246; + movingEnable = false; + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', _this select 0)]; [] call FUNC(onSettingsMenuOpen);); + onUnload = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', nil)]; saveProfileNamespace;); + class controlsBackground { class HeaderBackground: ACE_gui_backgroundBase { idc = -1; @@ -83,7 +83,7 @@ class ACE_settingsMenu { }; class categorySelection: ACE_gui_comboBoxBase { idc = 14; - x = X_PART(15); + x = X_PART(14); y = Y_PART(3.4); w = W_PART(9); h = H_PART(1); @@ -301,6 +301,16 @@ class ACE_serverSettingsMenu: ACE_settingsMenu { h = H_PART(1); text = ""; }; + class categorySelection: ACE_gui_comboBoxBase { + idc = 14; + x = X_PART(14); + y = Y_PART(3.4); + w = W_PART(9); + h = H_PART(1); + text = ""; + onLBSelChanged = QUOTE( call FUNC(onServerCategorySelectChanged)); + SizeEx = H_PART(0.9); + }; class selectionAction_1: ACE_gui_buttonBase { idc = 1000; text = CSTRING(TabOptions); diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 376935297e..da978da763 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -367,5 +367,8 @@ Pokazuj wiadomości ACE w menu głównym Zobrazit novinky v hlavním menu + + All Categories + From e9151d921c9aa15e5a23f6d036b6663bde03ee6e Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 11:52:37 +0200 Subject: [PATCH 61/78] Localized category names for medical settings --- addons/medical/ACE_Settings.hpp | 76 ++++++++++++++++----------------- addons/medical/stringtable.xml | 12 ++++++ 2 files changed, 50 insertions(+), 38 deletions(-) diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index 46b1f04e57..910f152292 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -1,116 +1,116 @@ class ACE_Settings { class GVAR(level) { - category = "medical"; + category = CSTRING(Category_Medical); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "Basic", "Advanced"}; }; class GVAR(medicSetting) { - category = "medical"; + category = CSTRING(Category_Medical); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "Normal", "Advanced"}; }; class GVAR(enableFor) { - category = "medical"; + category = CSTRING(Category_Medical); value = 0; typeName = "SCALAR"; values[] = {"Players only", "Players and AI"}; }; class GVAR(enableOverdosing) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(bleedingCoefficient) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 1; }; class GVAR(painCoefficient) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 1; }; class GVAR(enableAirway) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = false; }; class GVAR(enableFractures) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = false; }; class GVAR(enableAdvancedWounds) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = false; }; class GVAR(enableVehicleCrashes) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(enableScreams) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(playerDamageThreshold) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 1; }; class GVAR(AIDamageThreshold) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 1; }; class GVAR(enableUnconsciousnessAI) { - category = "medical"; + category = CSTRING(Category_Medical); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "50/50", "Enabled"}; }; class GVAR(remoteControlledAI) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(preventInstaDeath) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 0; }; class GVAR(enableRevive) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 0; values[] = {"Disabled", "Players only", "Players and AI"}; }; class GVAR(maxReviveTime) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 120; }; class GVAR(amountOfReviveLives) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = -1; }; class GVAR(allowDeadBodyMovement) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 0; }; class GVAR(allowLitterCreation) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(litterSimulationDetail) { - category = "medical"; + category = CSTRING(Category_Medical); displayName = CSTRING(litterSimulationDetail); description = CSTRING(litterSimulationDetail_Desc); typeName = "SCALAR"; @@ -122,48 +122,48 @@ class ACE_Settings { isClientSettable = 1; }; class GVAR(litterCleanUpDelay) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 0; }; class GVAR(medicSetting_PAK) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(medicSetting_SurgicalKit) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(consumeItem_PAK) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 0; values[] = {"No", "Yes"}; }; class GVAR(consumeItem_SurgicalKit) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 0; values[] = {"No", "Yes"}; }; class GVAR(useLocation_PAK) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 3; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; }; class GVAR(useLocation_SurgicalKit) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "SCALAR"; value = 2; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; }; class GVAR(useCondition_PAK) { - category = "medical"; + category = CSTRING(Category_Medical); displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName); description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description); typeName = "SCALAR"; @@ -171,7 +171,7 @@ class ACE_Settings { values[] = {"Anytime", "Stable"}; }; class GVAR(useCondition_SurgicalKit) { - category = "medical"; + category = CSTRING(Category_Medical); displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); typeName = "SCALAR"; @@ -179,24 +179,24 @@ class ACE_Settings { values[] = {"Anytime", "Stable"}; }; class GVAR(keepLocalSettingsSynced) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(healHitPointAfterAdvBandage) { - category = "medical"; + category = CSTRING(Category_Medical); displayName = CSTRING(healHitPointAfterAdvBandage); typeName = "BOOL"; value = 0; }; class GVAR(painIsOnlySuppressed) { - category = "medical"; + category = CSTRING(Category_Medical); displayName = CSTRING(painIsOnlySuppressed); typeName = "BOOL"; value = 1; }; class GVAR(painEffectType) { - category = "medical"; + category = CSTRING(Category_Medical); displayName = CSTRING(painEffectType); typeName = "SCALAR"; value = 0; @@ -204,18 +204,18 @@ class ACE_Settings { isClientSettable = 1; }; class GVAR(allowUnconsciousAnimationOnTreatment) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 0; }; class GVAR(moveUnitsFromGroupOnUnconscious) { - category = "medical"; + category = CSTRING(Category_Medical); typeName = "BOOL"; value = 0; }; class GVAR(menuTypeStyle) { - category = "medical"; + category = CSTRING(Category_Medical); displayName = CSTRING(menuTypeDisplay); description = CSTRING(menuTypeDescription); typeName = "SCALAR"; diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 9f161d032d..e85e5b6816 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3648,5 +3648,17 @@ Estable Po stabilizacji + + Medical + Zdravotní + Médical + Sanitäter + Medico + Medyczne + Médico + Медик + Médico + Orvosi + From c6af8aaeb63b9706caa5fc35dddc3e7bd7c6c887 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 11:52:53 +0200 Subject: [PATCH 62/78] Localized category name for interaction menu related settings --- addons/interact_menu/ACE_Settings.hpp | 25 +++++++++++++------------ addons/interact_menu/stringtable.xml | 3 +++ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp index 966b919ad0..381405987c 100644 --- a/addons/interact_menu/ACE_Settings.hpp +++ b/addons/interact_menu/ACE_Settings.hpp @@ -3,14 +3,14 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(AlwaysUseCursorSelfInteraction); }; class GVAR(cursorKeepCentered) { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(cursorKeepCentered); description = CSTRING(cursorKeepCenteredDescription); }; @@ -18,48 +18,49 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(AlwaysUseCursorInteraction); }; class GVAR(UseListMenu) { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(UseListMenu); }; class GVAR(colorTextMax) { value[] = {1, 1, 1, 1}; typeName = "COLOR"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(ColorTextMax); }; class GVAR(colorTextMin) { value[] = {1, 1, 1, 0.25}; typeName = "COLOR"; isClientSettable = 1; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(ColorTextMin); }; class GVAR(colorShadowMax) { value[] = {0, 0, 0, 1}; typeName = "COLOR"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(ColorShadowMax); }; class GVAR(colorShadowMin) { value[] = {0, 0, 0, 0.25}; typeName = "COLOR"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(ColorShadowMin); }; class GVAR(textSize) { value = 2; typeName = "SCALAR"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(textSize); values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"}; }; @@ -67,7 +68,7 @@ class ACE_Settings { value = 2; typeName = "SCALAR"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(shadowSetting); description = CSTRING(shadowSettingDescription); values[] = {"$STR_A3_OPTIONS_DISABLED", "$STR_A3_OPTIONS_ENABLED", CSTRING(shadowOutline)}; @@ -76,14 +77,14 @@ class ACE_Settings { value = 1; typeName = "BOOL"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(ActionOnKeyRelease); }; class GVAR(menuBackground) { value = 0; typeName = "SCALAR"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(background); values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(backgroundBlur), CSTRING(backgroundBlack)}; }; @@ -91,7 +92,7 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = "Interaction Menu"; + category = CSTRING(Category_InteractionMenu); displayName = CSTRING(addBuildingActions); description = CSTRING(addBuildingActionsDescription); }; diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index b55e8483a1..1c9a59ac4e 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -267,5 +267,8 @@ Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades) + + Interaction Menu + From e7a607ca351b6f4ef0e4f0bdb09fd346a596b4be Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 13:07:22 +0200 Subject: [PATCH 63/78] Finalized server export category select --- addons/interact_menu/stringtable.xml | 2 +- .../functions/fnc_exportSettings.sqf | 1 - .../functions/fnc_onCategorySelectChanged.sqf | 2 +- .../fnc_onServerCategorySelectChanged.sqf | 8 +- .../fnc_onServerSettingsMenuOpen.sqf | 11 ++- .../functions/fnc_onSettingsMenuOpen.sqf | 6 +- .../fnc_serverSettingsMenuUpdateKeyView.sqf | 18 ++-- .../fnc_serverSettingsMenuUpdateList.sqf | 84 +++++++++++-------- .../functions/fnc_settingsMenuUpdateList.sqf | 2 +- .../functions/fnc_stringEscape.sqf | 59 +++++++++++++ 10 files changed, 136 insertions(+), 57 deletions(-) create mode 100644 addons/optionsmenu/functions/fnc_stringEscape.sqf diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 1c9a59ac4e..00e244588b 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -267,7 +267,7 @@ Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades) - + Interaction Menu diff --git a/addons/optionsmenu/functions/fnc_exportSettings.sqf b/addons/optionsmenu/functions/fnc_exportSettings.sqf index 32ce922350..9d6437495d 100644 --- a/addons/optionsmenu/functions/fnc_exportSettings.sqf +++ b/addons/optionsmenu/functions/fnc_exportSettings.sqf @@ -41,7 +41,6 @@ private ["_compiledConfig", "_name", "_typeName", "_isClientSetable", "_localize if (GVAR(ClientSettingsExportIncluded) || !_isClientSetable) then { _value = missionNamespace getvariable [_name, _defaultValue]; if (_typeName == "STRING") then { - _value = [_value, '"', "'"] call CBA_fnc_replace; // TODO improve the quotation replacement _value = format['"%1"', _value]; }; if (_typeName == "BOOL") then { diff --git a/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf b/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf index 974587b36a..3b97892cdb 100644 --- a/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf +++ b/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf @@ -24,4 +24,4 @@ _settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; _ctrlComboBox = (_settingsMenu displayCtrl 14); GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox; -[false] call ACE_optionsmenu_fnc_settingsMenuUpdateList; +[false] call FUNC(settingsMenuUpdateList); diff --git a/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf b/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf index e3e977e6fe..57d9f94991 100644 --- a/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf +++ b/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf @@ -16,12 +16,8 @@ #include "script_component.hpp" -private ["_settingsMenu"]; +GVAR(currentCategorySelection) = lbCurSel 14; -disableSerialization; -_settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; - -_ctrlComboBox = (_settingsMenu displayCtrl 14); -GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox; +systemChat format["Current selection: %1", GVAR(currentCategorySelection)]; [false] call FUNC(serverSettingsMenuUpdateList); diff --git a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf index fa3084c608..73a6653dd2 100644 --- a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf @@ -61,16 +61,19 @@ _menu = uiNamespace getvariable "ACE_serverSettingsMenu"; (_menu displayCtrl 1003) ctrlEnable false; if (GVAR(ClientSettingsExportIncluded)) then { - (_settingsMenu displayCtrl 1102) ctrlSetText localize (LSTRING(exClientSettings)); + (_settingsMenu displayCtrl 1102) ctrlSetText localize (CSTRING(exClientSettings)); } else { - (_settingsMenu displayCtrl 1102) ctrlSetText localize (LSTRING(inClientSettings)); + (_settingsMenu displayCtrl 1102) ctrlSetText localize (CSTRING(inClientSettings)); }; + +lbClear (_menu displayCtrl 14); { if (_x == "") then { _x = localize "STR_ACE_OptionsMenu_category_all"; }; - (_menu displayCtrl 14) lbAdd if (isLocalized _x) then {localize _x} else {_x}; + if (isLocalized _x) then {_x = localize _x}; + (_menu displayCtrl 14) lbAdd _x; } forEach GVAR(categories); -(_menu displayCtrl 14) lbSetCurSel 0; //All Catagoies +(_menu displayCtrl 14) lbSetCurSel GVAR(currentCategorySelection); //All Catagoies diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf index 2142dc1a5b..af3e2232f3 100644 --- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf @@ -53,13 +53,15 @@ if (GVAR(serverConfigGeneration) == 0) then { (_menu displayCtrl 1102) ctrlShow false; }; +lbClear (_menu displayCtrl 14); { if (_x == "") then { _x = localize "STR_ACE_OptionsMenu_category_all"; }; - (_menu displayCtrl 14) lbAdd if (isLocalized _x) then {localize _x} else {_x}; + if (isLocalized _x) then {_x = localize _x}; + (_menu displayCtrl 14) lbAdd _x; } forEach GVAR(categories); -(_menu displayCtrl 14) lbSetCurSel 0; //All Catagoies +(_menu displayCtrl 14) lbSetCurSel GVAR(currentCategorySelection); //All Catagoies diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf index 15806a2e9b..93c5b9d9a4 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -private ["_settingsMenu", "_ctrlList", "_collection", "_settingIndex", "_setting", "_entryName", "_localizedName", "_localizedDescription", "_possibleValues", "_settingsValue", "_currentColor", "_expectedType"]; +private ["_settingsMenu", "_ctrlList", "_collection", "_settingIndex", "_setting", "_entryName", "_localizedName", "_localizedDescription", "_possibleValues", "_settingsValue", "_currentColor", "_expectedType", "_filteredCollection", "_selectedCategory"]; disableSerialization; _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu'; @@ -29,16 +29,24 @@ _collection = switch (GVAR(optionMenu_openTab)) do { default {[]}; }; -if (count _collection > 0) then { +_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); +_filteredCollection = []; +{ + if (_selectedCategory == "" || {_selectedCategory == (_x select 8)}) then { + _filteredCollection pushBack _x; + }; +} forEach _collection; + +if (count _filteredCollection > 0) then { _settingIndex = (lbCurSel _ctrlList); - if (_settingIndex > (count _collection)) then { - _settingIndex = count _collection - 1; + if (_settingIndex > (count _filteredCollection)) then { + _settingIndex = count _filteredCollection - 1; }; if (_settingIndex < 0) then { _settingIndex = 0; }; - _setting = _collection select _settingIndex; + _setting = _filteredCollection select _settingIndex; _entryName = _setting select 0; _localizedName = _setting select 3; diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf index f21ca8abc8..69f610655a 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue"]; +private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue", "_selectedCategory"]; DEFAULT_PARAM(0,_updateKeyView,true); disableSerialization; @@ -24,55 +24,67 @@ _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu'; _ctrlList = _settingsMenu displayCtrl 200; lbclear _ctrlList; + +_selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); + +systemChat format["_selectedCategory: %1", _selectedCategory]; + + switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_SERVER_OPTIONS): { { - if ((_x select 3) != "") then { - _ctrlList lbadd (_x select 3); - } else { - _ctrlList lbadd (_x select 0); + if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { + if ((_x select 3) != "") then { + _ctrlList lbadd (_x select 3); + } else { + _ctrlList lbadd (_x select 0); + }; + + _settingsValue = _x select 9; + + // Created disable/enable options for bools + _settingsText = if ((_x select 1) == "BOOL") then { + [(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue; + } else { + (_x select 5) select _settingsValue; + }; + + _ctrlList lbadd (_settingsText); }; - - _settingsValue = _x select 9; - - // Created disable/enable options for bools - _settingsText = if ((_x select 1) == "BOOL") then { - [(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue; - } else { - (_x select 5) select _settingsValue; - }; - - _ctrlList lbadd (_settingsText); }foreach GVAR(serverSideOptions); }; case (MENU_TAB_SERVER_COLORS): { { - _color = +(_x select 9); - { - _color set [_forEachIndex, ((round (_x * 100))/100)]; - } forEach _color; - _settingsColor = str _color; - if ((_x select 3) != "") then { - _ctrlList lbadd (_x select 3); - } else { - _ctrlList lbadd (_x select 0); + if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { + _color = +(_x select 9); + { + _color set [_forEachIndex, ((round (_x * 100))/100)]; + } forEach _color; + _settingsColor = str _color; + if ((_x select 3) != "") then { + _ctrlList lbadd (_x select 3); + } else { + _ctrlList lbadd (_x select 0); + }; + _ctrlList lbadd (_settingsColor); + _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)]; }; - _ctrlList lbadd (_settingsColor); - _ctrlList lnbSetColor [[_forEachIndex, 1], (_x select 9)]; }foreach GVAR(serverSideColors); }; case (MENU_TAB_SERVER_VALUES): { { - if ((_x select 3) != "") then { - _ctrlList lbadd (_x select 3); - } else { - _ctrlList lbadd (_x select 0); + if (_selectedCategory == "" || _selectedCategory == (_X select 8)) then { + if ((_x select 3) != "") then { + _ctrlList lbadd (_x select 3); + } else { + _ctrlList lbadd (_x select 0); + }; + _settingsValue = _x select 9; + if (typeName _settingsValue != "STRINg") then { + _settingsValue = format["%1", _settingsValue]; + }; + _ctrlList lbadd (_settingsValue); }; - _settingsValue = _x select 9; - if (typeName _settingsValue != "STRINg") then { - _settingsValue = format["%1", _settingsValue]; - }; - _ctrlList lbadd (_settingsValue); }foreach GVAR(serverSideValues); }; }; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf index b2ec6392e8..786d08ecfe 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue"]; +private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue", "_selectedCategory"]; DEFAULT_PARAM(0,_updateKeyView,true); disableSerialization; diff --git a/addons/optionsmenu/functions/fnc_stringEscape.sqf b/addons/optionsmenu/functions/fnc_stringEscape.sqf new file mode 100644 index 0000000000..fe3930f68c --- /dev/null +++ b/addons/optionsmenu/functions/fnc_stringEscape.sqf @@ -0,0 +1,59 @@ +/* + * Author: Glowbal + * Parse the string for quotation marks, so it can be used for config export. + * + * Arguments: + * 0: string + * + * Return Value: + * parsed string + * + * Example: + * [] call ACE_optionsmenu_fnc_stringEscape + * + * Public: No + */ + +private ["_str", "_array", "_maxIndex"]; +_str = _this; + +_isEven = { + params ["_array", "_index"]; + private [ "_count"]; + _count = 0; + { + if (_forEachIndex <= _index && {_x == 39}) then { + _count = _count + 1; + }; + }foreach _array; + + _count %2 == 0; +}; + +// reg: 34 +// single: 39 +_array = toArray _str; +{ + if (_x == 34) then { + _array set [_foreachIndex, 39]; + }; +}foreach _array; + +_maxIndex = count _array; +for "_i" from 0 to _maxIndex /* step +1 */ do { + if (((_i + 1) < _maxIndex - 1) && {_array select _i == 39 && (_array select (_i + 1)) == 39}) then { + if ([_array, _i] call _isEven) then { + _array deleteAt _i; + _i = _i - 1; + _maxIndex = _maxIndex - 1; + }; + }; +}; + +{ + if (_x == 34) then { + _array set [_foreachIndex, 39]; + }; +}foreach _array; + +toString _array; From 25597704edca5824a3b6ba617eea2da0d70e3880 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 13:07:40 +0200 Subject: [PATCH 64/78] Added fail save for incorrect string value input --- addons/optionsmenu/XEH_preInit.sqf | 2 ++ addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/optionsmenu/XEH_preInit.sqf b/addons/optionsmenu/XEH_preInit.sqf index 7bd86af1fd..21f64c4f46 100644 --- a/addons/optionsmenu/XEH_preInit.sqf +++ b/addons/optionsmenu/XEH_preInit.sqf @@ -17,10 +17,12 @@ PREP(settingsMenuUpdateKeyView); PREP(settingsMenuUpdateList); PREP(serverSettingsMenuUpdateKeyView); PREP(serverSettingsMenuUpdateList); +PREP(onServerCategorySelectChanged); PREP(updateSetting); PREP(exportSettings); PREP(toggleIncludeClientSettings); PREP(moduleAllowConfigExport); +PREP(stringEscape); GVAR(clientSideOptions) = []; GVAR(clientSideColors) = []; diff --git a/addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf b/addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf index b8eb630f85..11aadc76e4 100644 --- a/addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf +++ b/addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf @@ -29,7 +29,10 @@ switch (GVAR(optionMenu_openTab)) do { _settingName = _setting select 0; _convertedValue = switch (toUpper (_setting select 1)) do { - case "STRING": {format ['"%1"', _inputText]}; + case "STRING": { + ctrlSetText [414, _inputText call FUNC(stringEscape)]; + format ['%1', _inputText call FUNC(stringEscape)]; + }; case "ARRAY": {format [call compile "[%1]", _inputText]}; case "SCALAR": {parseNumber _inputText;}; default {throw "Error"}; From 872c257901673b984204ad2ea485f021aebdba64 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 13:21:13 +0200 Subject: [PATCH 65/78] Used the wrong string macro. --- addons/interact_menu/ACE_Settings.hpp | 26 ++++----- addons/medical/ACE_Settings.hpp | 76 +++++++++++++-------------- 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp index 381405987c..48f32ed13b 100644 --- a/addons/interact_menu/ACE_Settings.hpp +++ b/addons/interact_menu/ACE_Settings.hpp @@ -3,14 +3,14 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(AlwaysUseCursorSelfInteraction); }; class GVAR(cursorKeepCentered) { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(cursorKeepCentered); description = CSTRING(cursorKeepCenteredDescription); }; @@ -18,49 +18,49 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(AlwaysUseCursorInteraction); }; class GVAR(UseListMenu) { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(UseListMenu); }; class GVAR(colorTextMax) { value[] = {1, 1, 1, 1}; typeName = "COLOR"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(ColorTextMax); }; class GVAR(colorTextMin) { value[] = {1, 1, 1, 0.25}; typeName = "COLOR"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(ColorTextMin); }; class GVAR(colorShadowMax) { value[] = {0, 0, 0, 1}; typeName = "COLOR"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(ColorShadowMax); }; class GVAR(colorShadowMin) { value[] = {0, 0, 0, 0.25}; typeName = "COLOR"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(ColorShadowMin); }; class GVAR(textSize) { value = 2; typeName = "SCALAR"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(textSize); values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"}; }; @@ -68,7 +68,7 @@ class ACE_Settings { value = 2; typeName = "SCALAR"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(shadowSetting); description = CSTRING(shadowSettingDescription); values[] = {"$STR_A3_OPTIONS_DISABLED", "$STR_A3_OPTIONS_ENABLED", CSTRING(shadowOutline)}; @@ -77,14 +77,14 @@ class ACE_Settings { value = 1; typeName = "BOOL"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(ActionOnKeyRelease); }; class GVAR(menuBackground) { value = 0; typeName = "SCALAR"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(background); values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(backgroundBlur), CSTRING(backgroundBlack)}; }; @@ -92,7 +92,7 @@ class ACE_Settings { value = 0; typeName = "BOOL"; isClientSettable = 1; - category = CSTRING(Category_InteractionMenu); + category = LSTRING(Category_InteractionMenu); displayName = CSTRING(addBuildingActions); description = CSTRING(addBuildingActionsDescription); }; diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index 910f152292..23b7cf8a4f 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -1,116 +1,116 @@ class ACE_Settings { class GVAR(level) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "Basic", "Advanced"}; }; class GVAR(medicSetting) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "Normal", "Advanced"}; }; class GVAR(enableFor) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); value = 0; typeName = "SCALAR"; values[] = {"Players only", "Players and AI"}; }; class GVAR(enableOverdosing) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(bleedingCoefficient) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 1; }; class GVAR(painCoefficient) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 1; }; class GVAR(enableAirway) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = false; }; class GVAR(enableFractures) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = false; }; class GVAR(enableAdvancedWounds) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = false; }; class GVAR(enableVehicleCrashes) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(enableScreams) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(playerDamageThreshold) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 1; }; class GVAR(AIDamageThreshold) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 1; }; class GVAR(enableUnconsciousnessAI) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "50/50", "Enabled"}; }; class GVAR(remoteControlledAI) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(preventInstaDeath) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 0; }; class GVAR(enableRevive) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 0; values[] = {"Disabled", "Players only", "Players and AI"}; }; class GVAR(maxReviveTime) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 120; }; class GVAR(amountOfReviveLives) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = -1; }; class GVAR(allowDeadBodyMovement) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 0; }; class GVAR(allowLitterCreation) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(litterSimulationDetail) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); displayName = CSTRING(litterSimulationDetail); description = CSTRING(litterSimulationDetail_Desc); typeName = "SCALAR"; @@ -122,48 +122,48 @@ class ACE_Settings { isClientSettable = 1; }; class GVAR(litterCleanUpDelay) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 0; }; class GVAR(medicSetting_PAK) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(medicSetting_SurgicalKit) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(consumeItem_PAK) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 0; values[] = {"No", "Yes"}; }; class GVAR(consumeItem_SurgicalKit) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 0; values[] = {"No", "Yes"}; }; class GVAR(useLocation_PAK) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 3; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; }; class GVAR(useLocation_SurgicalKit) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "SCALAR"; value = 2; values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; }; class GVAR(useCondition_PAK) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName); description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description); typeName = "SCALAR"; @@ -171,7 +171,7 @@ class ACE_Settings { values[] = {"Anytime", "Stable"}; }; class GVAR(useCondition_SurgicalKit) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName); description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description); typeName = "SCALAR"; @@ -179,24 +179,24 @@ class ACE_Settings { values[] = {"Anytime", "Stable"}; }; class GVAR(keepLocalSettingsSynced) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 1; }; class GVAR(healHitPointAfterAdvBandage) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); displayName = CSTRING(healHitPointAfterAdvBandage); typeName = "BOOL"; value = 0; }; class GVAR(painIsOnlySuppressed) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); displayName = CSTRING(painIsOnlySuppressed); typeName = "BOOL"; value = 1; }; class GVAR(painEffectType) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); displayName = CSTRING(painEffectType); typeName = "SCALAR"; value = 0; @@ -204,18 +204,18 @@ class ACE_Settings { isClientSettable = 1; }; class GVAR(allowUnconsciousAnimationOnTreatment) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 0; }; class GVAR(moveUnitsFromGroupOnUnconscious) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); typeName = "BOOL"; value = 0; }; class GVAR(menuTypeStyle) { - category = CSTRING(Category_Medical); + category = LSTRING(Category_Medical); displayName = CSTRING(menuTypeDisplay); description = CSTRING(menuTypeDescription); typeName = "SCALAR"; From e8961e3d0e56aea258c7648577e420cb68428eb5 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 13:41:25 +0200 Subject: [PATCH 66/78] Use display instead of just idc --- .../functions/fnc_onServerCategorySelectChanged.sqf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf b/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf index 57d9f94991..f294e27a5e 100644 --- a/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf +++ b/addons/optionsmenu/functions/fnc_onServerCategorySelectChanged.sqf @@ -16,8 +16,11 @@ #include "script_component.hpp" -GVAR(currentCategorySelection) = lbCurSel 14; +private ["_settingsMenu", "_ctrlComboBox"]; +disableSerialization; +_settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu'; -systemChat format["Current selection: %1", GVAR(currentCategorySelection)]; +_ctrlComboBox = (_settingsMenu displayCtrl 14); +GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox; [false] call FUNC(serverSettingsMenuUpdateList); From e4a4a942d09e0b5386d92ff824e00fcacff86b9d Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Sat, 8 Aug 2015 14:40:23 +0200 Subject: [PATCH 67/78] Updated function documentation of Weaponselect --- .../fnc_countMagazinesForGrenadeMuzzle.sqf | 17 +++++++++++------ .../fnc_displayGrenadeTypeAndNumber.sqf | 16 ++++++++++------ .../functions/fnc_findNextGrenadeMagazine.sqf | 10 +++++++--- .../functions/fnc_findNextGrenadeMuzzle.sqf | 10 +++++++--- .../functions/fnc_fireSmokeLauncher.sqf | 10 +++++++--- .../functions/fnc_getSelectedGrenade.sqf | 12 ++++++++---- .../functions/fnc_playChangeFiremodeSound.sqf | 10 +++++++--- .../functions/fnc_putWeaponAway.sqf | 10 +++++++--- .../functions/fnc_selectGrenadeAll.sqf | 10 +++++++--- .../functions/fnc_selectGrenadeFrag.sqf | 10 +++++++--- .../functions/fnc_selectGrenadeOther.sqf | 10 +++++++--- .../functions/fnc_selectWeaponMode.sqf | 10 +++++++--- .../functions/fnc_selectWeaponMuzzle.sqf | 10 +++++++--- .../functions/fnc_selectWeaponVehicle.sqf | 10 +++++++--- .../functions/fnc_setNextGrenadeMuzzle.sqf | 10 +++++++--- .../weaponselect/functions/fnc_throwGrenade.sqf | 10 +++++++--- 16 files changed, 120 insertions(+), 55 deletions(-) diff --git a/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf index 44a60b8f13..572a83edf1 100644 --- a/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf @@ -1,14 +1,19 @@ /* * Author: esteldunedain - * * Count how many grenade magazines the unit has on the uniform and vest. * - * Argument: - * 0: Muzzle name + * Arguments: + * 0: Unit + * 1: Muzzle Class * - * Return value: - * 0: Number of magazines - * 1: First magazine name + * Return Value: + * 0: Number of magazines + * 1: First magazine name + * + * Example: + * [player, currentMuzzle player] call ace_weaponselect_fnc_countMagazinesForGrenadeMuzzle + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf index 19120ce9cd..37956d2121 100644 --- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf +++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf @@ -1,14 +1,18 @@ /* * Author: esteldunedain - * * Display a grenade type and quantity. * - * Argument: - * 0: magazine class - * 1: number of magazines + * Arguments: + * 0: magazine class + * 1: number of magazines * - * Return value: + * Return Value: * None + * + * Example: + * [currentMagazine player, 3] call ace_weaponselect_fnc_displayGrenadeTypeAndNumber + * + * Public: No */ #include "script_component.hpp" @@ -18,7 +22,7 @@ private ["_color", "_name", "_text", "_picture"]; params ["_magazine", "_numberofMagazines"]; -_color = [[1,0,0], [1,1,1]] select (_numberofMagazines > 0); +_color = [[1, 0, 0], [1, 1, 1]] select (_numberofMagazines > 0); _name = getText (configFile >> "CfgMagazines" >> _magazine >> "displayNameShort"); _text = [format["%1 x%2", _name, _numberofMagazines], _color] call EFUNC(common,stringToColoredText); diff --git a/addons/weaponselect/functions/fnc_findNextGrenadeMagazine.sqf b/addons/weaponselect/functions/fnc_findNextGrenadeMagazine.sqf index 244f85b5ab..2b2370260a 100644 --- a/addons/weaponselect/functions/fnc_findNextGrenadeMagazine.sqf +++ b/addons/weaponselect/functions/fnc_findNextGrenadeMagazine.sqf @@ -1,13 +1,17 @@ /* * Author: commy2 - * * Find the next Grenade Magazine. * - * Argument: + * Arguments: * 0: Grenade Type ("All", "Frag", "NonFrag") * - * Return value: + * Return Value: * Magazine classname + * + * Example: + * ["All"] call ace_weaponselect_fnc_findNextGrenadeMagazine + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_findNextGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_findNextGrenadeMuzzle.sqf index 39c4e84d1c..5aa096f44e 100644 --- a/addons/weaponselect/functions/fnc_findNextGrenadeMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_findNextGrenadeMuzzle.sqf @@ -1,13 +1,17 @@ /* * Author: commy2 - * * Find the next Grenade Muzzle. * - * Argument: + * Arguments: * 0: Grenade Type ("All", "Frag", "NonFrag") * - * Return value: + * Return Value: * Class name of next throw muzzle + * + * Example: + * ["All"] call ace_weaponselect_fnc_findNextGrenadeMuzzle + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf b/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf index 9e9369ce26..20ef674dae 100644 --- a/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf +++ b/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf @@ -1,13 +1,17 @@ /* * Author: commy2 - * * Fire Vehicle Smoke Launcher. * - * Argument: + * Arguments: * 0: Vehicle * - * Return value: + * Return Value: * None + * + * Example: + * [vehicle player] call ace_weaponselect_fnc_fireSmokeLauncher + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_getSelectedGrenade.sqf b/addons/weaponselect/functions/fnc_getSelectedGrenade.sqf index 53fabde032..aa89a13c98 100644 --- a/addons/weaponselect/functions/fnc_getSelectedGrenade.sqf +++ b/addons/weaponselect/functions/fnc_getSelectedGrenade.sqf @@ -1,13 +1,17 @@ /* * Author: commy2 - * * Returns the selected Grenade Muzzle. * - * Argument: + * Arguments: * None * - * Return value: - * Class name of selected throw muzzle. + * Return Value: + * Class name of selected throw muzzle + * + * Example: + * [] call ace_weaponselect_fnc_getSelectedGrenade + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf b/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf index a64203fda8..c79f03c6f2 100644 --- a/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf +++ b/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf @@ -1,14 +1,18 @@ /* * Author: commy2 - * * Play the change firemode sound for specified weapon at units position. * - * Argument: + * Arguments: * 0: Unit * 1: Weapon * - * Return value: + * Return Value: * None + * + * Example: + * [player, currentWeapon player] call ace_weaponselect_fnc_playChangeFiremodeSound + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_putWeaponAway.sqf b/addons/weaponselect/functions/fnc_putWeaponAway.sqf index 4c55bd04fc..faddb4d869 100644 --- a/addons/weaponselect/functions/fnc_putWeaponAway.sqf +++ b/addons/weaponselect/functions/fnc_putWeaponAway.sqf @@ -1,13 +1,17 @@ /* * Author: commy2 - * * The unit will put its current weapon away. * - * Argument: + * Arguments: * 0: Unit * - * Return value: + * Return Value: * None + * + * Example: + * [player] call ace_weaponselect_fnc_putWeaponAway + * + * Public: NO */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf index c5a8032d84..a68670184a 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf @@ -1,13 +1,17 @@ /* * Author: esteldunedain, commy2 - * * Cycle through all grenades. * - * Argument: + * Arguments: * 0: Unit * - * Return value: + * Return Value: * None + * + * Example: + * [player] call ace_weaponselect_fnc_selectGrenadeAll + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf index d1dc4e3442..c221b6cc30 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf @@ -1,13 +1,17 @@ /* * Author: esteldunedain, commy2 - * * Cycle through frags. * - * Argument: + * Arguments: * 0: Unit * - * Return value: + * Return Value: * None + * + * Example: + * [player] call ace_weaponselect_fnc_selectGrenadeFrag + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf index 5c7b712aa8..2f219989eb 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf @@ -1,13 +1,17 @@ /* * Author: esteldunedain, commy2 - * * Cycle through non explosive grenades. * - * Argument: + * Arguments: * 0: Unit * - * Return value: + * Return Value: * None + * + * Example: + * [player] call ace_weaponselect_fnc_selectGrenadeOther + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_selectWeaponMode.sqf b/addons/weaponselect/functions/fnc_selectWeaponMode.sqf index 37f4a125e0..815b8d28cf 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponMode.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponMode.sqf @@ -1,14 +1,18 @@ /* * Author: commy2 - * * The player will select the specified weapon or will change to the next firing mode if the weapon was already selected. * - * Argument: + * Arguments: * 0: Unit * 1: Weapon * - * Return value: + * Return Value: * None + * + * Example: + * [player, currentWeapon player] call ace_weaponselect_fnc_selectWeaponMode + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf b/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf index 11c360817e..71c9cfc7b4 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf @@ -1,14 +1,18 @@ /* * Author: commy2 - * * The player will select the specified weapon and change to the first additional muzzle. E.g. the grenade launcher of a assault rifle. * - * Argument: + * Arguments: * 0: Unit * 1: Weapon * - * Return value: + * Return Value: * None + * + * Example: + * [player, currentWeapon player] call ace_weaponselect_fnc_selectWeaponMuzzle + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf b/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf index 952b28c5ef..9695079da5 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf @@ -1,15 +1,19 @@ /* * Author: commy2 - * * Select weapon for unit in vehicle. * - * Argument: + * Arguments: * 0: Unit * 1: Vehicle * 2: Weapon index * - * Return value: + * Return Value: * None + * + * Example: + * [player, vehicle player, 1] call ace_weaponselect_fnc_selectWeaponVehicle + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf index f89b690e5e..ce7ec55393 100644 --- a/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf @@ -1,14 +1,18 @@ /* * Author: esteldunedain - * * Select the next grenade muzzle to throw. * - * Argument: + * Arguments: * 0: Unit * 1: Muzzlename * - * Return value: + * Return Value: * None + * + * Example: + * [player, currentMuzzle player] call ace_weaponselect_fnc_setNextGrenadeMuzzle + * + * Public: No */ #include "script_component.hpp" diff --git a/addons/weaponselect/functions/fnc_throwGrenade.sqf b/addons/weaponselect/functions/fnc_throwGrenade.sqf index d3aa46cff8..2cdc8e63dc 100644 --- a/addons/weaponselect/functions/fnc_throwGrenade.sqf +++ b/addons/weaponselect/functions/fnc_throwGrenade.sqf @@ -1,9 +1,8 @@ /* * Author: commy2 - * * Display Grenade information on grenade throw. * - * Argument: + * Arguments: * 0: unit - Object the event handler is assigned to * 1: weapon - Fired weapon * 2: muzzle - Muzzle that was used @@ -12,8 +11,13 @@ * 5: magazine - magazine name which was used * 6: projectile - Object of the projectile that was shot * - * Return value: + * Return Value: * None + * + * Example: + * [_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile] call ace_weaponselect_fnc_throwGrenade + * + * Public: No */ #include "script_component.hpp" From bd0593f8f489dd683d4c527c209a8b730e25a66a Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 17:49:43 +0200 Subject: [PATCH 68/78] fixed missing semi-column --- addons/viewdistance/functions/fnc_returnValue.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/viewdistance/functions/fnc_returnValue.sqf b/addons/viewdistance/functions/fnc_returnValue.sqf index c5ff3b12bd..d374d69d60 100644 --- a/addons/viewdistance/functions/fnc_returnValue.sqf +++ b/addons/viewdistance/functions/fnc_returnValue.sqf @@ -19,7 +19,7 @@ private ["_return"]; -params ["_index"] +params ["_index"]; _return = switch (_index) do { case 0: {-1}; From 1aecd54fc35222b95efda319c6c70b78eb055541 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 8 Aug 2015 18:02:20 +0200 Subject: [PATCH 69/78] Removed duplicated Enabled/Disabled/Yes/No/DoNotForce strings as they were moved to common --- addons/interaction/CfgVehicles.hpp | 4 +- addons/interaction/stringtable.xml | 24 --------- addons/medical/CfgVehicles.hpp | 12 ++--- addons/medical/stringtable.xml | 51 ------------------- addons/nametags/ACE_Settings.hpp | 4 +- addons/nametags/CfgVehicles.hpp | 6 +-- addons/nametags/stringtable.xml | 24 --------- .../fnc_serverSettingsMenuUpdateKeyView.sqf | 4 +- .../fnc_serverSettingsMenuUpdateList.sqf | 2 +- .../fnc_settingsMenuUpdateKeyView.sqf | 4 +- .../functions/fnc_settingsMenuUpdateList.sqf | 2 +- addons/optionsmenu/stringtable.xml | 24 --------- 12 files changed, 19 insertions(+), 142 deletions(-) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 17c271f372..41567b4bc1 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -351,7 +351,7 @@ class CfgVehicles { hotkey = "7"; }; class ACE_Gesture_Yes { - displayName = CSTRING(Gestures_Yes); + displayName = ECSTRING(common,Yes); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2);); showDisabled = 1; @@ -359,7 +359,7 @@ class CfgVehicles { hotkey = "8"; }; class ACE_Gesture_No { - displayName = CSTRING(Gestures_No); + displayName = ECSTRING(common,No); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureNo';); showDisabled = 1; diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 5bd3282872..4f1df733b7 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -385,30 +385,6 @@ Olá Ciao - - Yes - Ja - Si - Tak - Ano - Oui - Да - Igen - Sim - Si - - - No - Nein - No - Nie - Ne - Non - Нет - Nem - Não - No - Put weapon on back Waffe wegstecken diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index a693d180bd..5e50596cc9 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -92,7 +92,7 @@ class CfgVehicles { typeName = "NUMBER"; class values { class disable { - name = CSTRING(disabled); + name = ECSTRING(common,Disabled); value = 0; }; class normal { @@ -101,7 +101,7 @@ class CfgVehicles { default = 1; }; class full { - name = CSTRING(enabled); + name = ECSTRING(common,Enabled); value = 2; }; }; @@ -198,8 +198,8 @@ class CfgVehicles { description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description); typeName = "NUMBER"; class values { - class keep { name = CSTRING(No); value = 0; }; - class remove { name = CSTRING(Yes); value = 1; default = 1; }; + class keep { name = ECSTRING(common,No); value = 0; }; + class remove { name = ECSTRING(common,Yes); value = 1; default = 1; }; }; }; class useCondition_PAK { @@ -220,7 +220,7 @@ class CfgVehicles { class vehicle { name = CSTRING(AdvancedMedicalSettings_vehicle); value = 1; }; class facility { name = CSTRING(AdvancedMedicalSettings_facility); value = 2; }; class vehicleAndFacility { name = CSTRING(AdvancedMedicalSettings_vehicleAndFacility); value = 3; default = 1; }; - class disabled { name = CSTRING(AdvancedMedicalSettings_disabled); value = 4;}; + class disabled { name = ECSTRING(common,Disabled); value = 4;}; }; }; class medicSetting_SurgicalKit: medicSetting_PAK { @@ -280,7 +280,7 @@ class CfgVehicles { typeName = "NUMBER"; defaultValue = 0; class values { - class disable { name = CSTRING(disabled); value = 0; default = 1;}; + class disable { name = ECSTRING(common,Disabled); value = 0; default = 1;}; class playerOnly { name = CSTRING(playeronly); value = 1; }; class playerAndAI { name = CSTRING(playersandai); value = 2; }; }; diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 9f161d032d..f3575b4eda 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -2928,24 +2928,6 @@ Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče? - - Disabled - Отключено - Wyłączone - Desactivado - Deaktiviert - Zakázáno - Desativado - - - Enabled - Включено - Włączone - Activado - Aktiviert - Povoleno - Ativado - Prevent instant death Отключить мгновенную смерть @@ -3237,15 +3219,6 @@ Vozidla a zařízení Veículos e instalações - - Disabled - Отключено - Wyłączone - Desactivado - Deaktiviert - Zakázáno - Desativado - Allow Surgical kit (Adv) Разрешить хирургический набор (усл.) @@ -3612,30 +3585,6 @@ [ACE] Zdravotnické zásoby (pokročilé) [ACE] Caixa com suprimentos médicos (Avançados) - - Yes - Ja - Si - Tak - Ano - Oui - Да - Igen - Sim - Si - - - No - Nein - No - Nie - Ne - Non - Нет - Nem - Não - No - Anytime Kdykoli diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp index e976c4adc8..6a37fa161c 100644 --- a/addons/nametags/ACE_Settings.hpp +++ b/addons/nametags/ACE_Settings.hpp @@ -11,7 +11,7 @@ class ACE_Settings { isClientSettable = 1; displayName = CSTRING(ShowPlayerNames); description = CSTRING(ShowPlayerNames_Desc); - values[] = {CSTRING(Disabled), CSTRING(Enabled), CSTRING(OnlyCursor), CSTRING(OnlyKeypress), CSTRING(OnlyCursorAndKeypress)}; + values[] = {ECSTRING(common,Disabled), CSTRING(Enabled), CSTRING(OnlyCursor), CSTRING(OnlyKeypress), CSTRING(OnlyCursorAndKeypress)}; }; class GVAR(showPlayerRanks) { value = 1; @@ -42,7 +42,7 @@ class ACE_Settings { isClientSettable = 1; displayName = CSTRING(ShowSoundWaves); description = CSTRING(ShowSoundWaves_Desc); - values[] = {CSTRING(Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)}; + values[] = {ECSTRING(common,Disabled), CSTRING(NameTagSettings), CSTRING(AlwaysShowAll)}; }; class GVAR(playerNamesViewDistance) { value = 5; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index 6c0c148e47..f6e28095b4 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -16,7 +16,7 @@ class CfgVehicles { class values { class DoNotForce { default = 1; - name = CSTRING(DoNotForce); + name = ECSTRING(common,DoNotForce); value = -1; }; class ForceHide { @@ -54,7 +54,7 @@ class CfgVehicles { class values { class DoNotForce { default = 1; - name = CSTRING(DoNotForce); + name = ECSTRING(common,DoNotForce); value = -1; }; class ForceHide { @@ -74,7 +74,7 @@ class CfgVehicles { class values { class DoNotForce { default = 1; - name = CSTRING(DoNotForce); + name = ECSTRING(common,DoNotForce); value = -1; }; class ForceHide { diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index e811b3447c..a0048c4076 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -149,14 +149,6 @@ Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar - - Do Not Force - Nie wymuszaj - No forzar - Nicht erzwingen - Nevynucovat - Não forçar - Force Hide Wymuś ukrycie @@ -213,22 +205,6 @@ Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky. Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. - - Disabled - Wyłączone - Desactivado - Deaktiviert - Zakázáno - Desativado - - - Enabled - Włączone - Activado - Aktiviert - Povoleno - Ativado - Only on Cursor Tylko pod kursorem diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf index 9daee053bb..67a2fe6415 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf @@ -56,8 +56,8 @@ if (count _collection > 0) then { // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { lbClear 400; - lbAdd [400, (localize LSTRING(Disabled))]; - lbAdd [400, (localize LSTRING(Enabled))]; + lbAdd [400, (localize ELSTRING(common,No))]; + lbAdd [400, (localize ELSTRING(common,Yes))]; _settingsValue = [0, 1] select _settingsValue; } else { lbClear 400; diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf index f3e393bbfd..a8400580dd 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf @@ -37,7 +37,7 @@ switch (GVAR(optionMenu_openTab)) do { // Created disable/enable options for bools _settingsText = if ((_x select 1) == "BOOL") then { - [(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue; + [(localize ELSTRING(common,No)), (localize ELSTRING(common,Yes))] select _settingsValue; } else { (_x select 5) select _settingsValue; }; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf index 3777093ccd..8c4b1735a1 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateKeyView.sqf @@ -56,8 +56,8 @@ if (count _collection > 0) then { // Created disable/enable options for bools if ((_setting select 1) == "BOOL") then { lbClear 400; - lbAdd [400, (localize LSTRING(Disabled))]; - lbAdd [400, (localize LSTRING(Enabled))]; + lbAdd [400, (localize ELSTRING(common,No))]; + lbAdd [400, (localize ELSTRING(common,Yes))]; _settingsValue = [0, 1] select _settingsValue; } else { lbClear 400; diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf index fdd9128ca3..0b45692499 100644 --- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf @@ -34,7 +34,7 @@ switch (GVAR(optionMenu_openTab)) do { // Created disable/enable options for bools _settingsText = if ((_x select 1) == "BOOL") then { - [(localize LSTRING(Disabled)), (localize LSTRING(Enabled))] select _settingsValue; + [(localize ELSTRING(common,No)), (localize ELSTRING(common,Yes))] select _settingsValue; } else { (_x select 5) select _settingsValue; }; diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 376935297e..6d4cde543e 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -73,30 +73,6 @@ Valori Valores - - Yes - Ja - Si - Tak - Ano - Oui - Да - Igen - Sim - Si - - - No - Nein - No - Nie - Ne - Non - Нет - Nem - Não - No - Setting: Nastavení: From 8e3a961ee3f10f7f8101c47933472901af0b06cc Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 8 Aug 2015 18:11:28 +0200 Subject: [PATCH 70/78] Fixed missing string --- addons/medical/CfgVehicles.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 5e50596cc9..aef45b115d 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -373,11 +373,11 @@ class CfgVehicles { typeName = "NUMBER"; class values { class none { - name = CSTRING(No); + name = ECSTRING(common,No); value = 0; }; class medic { - name = CSTRING(Yes); + name = ECSTRING(common,Yes); value = 1; default = 1; }; From bb79feeaf1807c4f8f3f44bbb50292b5ba2786f6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 18:16:11 +0200 Subject: [PATCH 71/78] Clean up duplicate files --- addons/medical/ui/body_background.png | Bin 53334 -> 0 bytes .../medical_menu/data/ACE_medical_module.paa | Bin 5625 -> 0 bytes addons/medical_menu/data/body_arm_left.paa | Bin 25755 -> 0 bytes addons/medical_menu/data/body_arm_right.paa | Bin 25747 -> 0 bytes addons/medical_menu/data/body_arms.paa | Bin 26657 -> 0 bytes addons/medical_menu/data/body_background.paa | Bin 56863 -> 0 bytes addons/medical_menu/data/body_head.paa | Bin 24927 -> 0 bytes addons/medical_menu/data/body_img-arms.paa | Bin 29430 -> 0 bytes addons/medical_menu/data/body_img-head.paa | Bin 24746 -> 0 bytes addons/medical_menu/data/body_img-legs.paa | Bin 28658 -> 0 bytes addons/medical_menu/data/body_img-torso.paa | Bin 25596 -> 0 bytes addons/medical_menu/data/body_leg_left.paa | Bin 26259 -> 0 bytes addons/medical_menu/data/body_leg_right.paa | Bin 26293 -> 0 bytes addons/medical_menu/data/body_legs.paa | Bin 27312 -> 0 bytes addons/medical_menu/data/body_torso.paa | Bin 25527 -> 0 bytes addons/medical_menu/data/border_arm_left.paa | Bin 26291 -> 0 bytes addons/medical_menu/data/border_arm_right.paa | Bin 26239 -> 0 bytes addons/medical_menu/data/border_head.paa | Bin 25181 -> 0 bytes addons/medical_menu/data/border_leg_left.paa | Bin 26970 -> 0 bytes addons/medical_menu/data/border_leg_right.paa | Bin 27005 -> 0 bytes addons/medical_menu/data/border_torso.paa | Bin 26036 -> 0 bytes .../data/buttonDisabled_gradient.paa | Bin 1816 -> 0 bytes .../data/buttonNormal_gradient.paa | Bin 1989 -> 0 bytes .../data/buttonNormal_gradient2.paa | Bin 2035 -> 0 bytes .../data/buttonNormal_gradient3.paa | Bin 2044 -> 0 bytes .../data/buttonNormal_gradient_top.paa | Bin 1995 -> 0 bytes addons/medical_menu/ui/menu.hpp | 18 +++++++++--------- 27 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 addons/medical/ui/body_background.png delete mode 100644 addons/medical_menu/data/ACE_medical_module.paa delete mode 100644 addons/medical_menu/data/body_arm_left.paa delete mode 100644 addons/medical_menu/data/body_arm_right.paa delete mode 100644 addons/medical_menu/data/body_arms.paa delete mode 100644 addons/medical_menu/data/body_background.paa delete mode 100644 addons/medical_menu/data/body_head.paa delete mode 100644 addons/medical_menu/data/body_img-arms.paa delete mode 100644 addons/medical_menu/data/body_img-head.paa delete mode 100644 addons/medical_menu/data/body_img-legs.paa delete mode 100644 addons/medical_menu/data/body_img-torso.paa delete mode 100644 addons/medical_menu/data/body_leg_left.paa delete mode 100644 addons/medical_menu/data/body_leg_right.paa delete mode 100644 addons/medical_menu/data/body_legs.paa delete mode 100644 addons/medical_menu/data/body_torso.paa delete mode 100644 addons/medical_menu/data/border_arm_left.paa delete mode 100644 addons/medical_menu/data/border_arm_right.paa delete mode 100644 addons/medical_menu/data/border_head.paa delete mode 100644 addons/medical_menu/data/border_leg_left.paa delete mode 100644 addons/medical_menu/data/border_leg_right.paa delete mode 100644 addons/medical_menu/data/border_torso.paa delete mode 100644 addons/medical_menu/data/buttonDisabled_gradient.paa delete mode 100644 addons/medical_menu/data/buttonNormal_gradient.paa delete mode 100644 addons/medical_menu/data/buttonNormal_gradient2.paa delete mode 100644 addons/medical_menu/data/buttonNormal_gradient3.paa delete mode 100644 addons/medical_menu/data/buttonNormal_gradient_top.paa diff --git a/addons/medical/ui/body_background.png b/addons/medical/ui/body_background.png deleted file mode 100644 index 65791a01c06da265c1f3cddc1fd2ec32a9eabd24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53334 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 a|K-is7e9Z_9zKBq2s~Z=T-G@yGywoCRwzXP diff --git a/addons/medical_menu/data/ACE_medical_module.paa b/addons/medical_menu/data/ACE_medical_module.paa deleted file mode 100644 index 9cb6c4782deae77909fe9d0f1dc4fdd11dfec8ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5625 zcmeHLe{5Sv9lzK5u@+L|rhA$?t4i8hsuWhHw#-ri;mcT?L|NMx_TIJ*2}n0Uh{Z-i zsz4~SvsLq|O*o4fQ_wmKrmB;sK?>nbz#n!gR8fYMDFc+$RcN{_sZydkcndM{%kA^M zdrmSZOB%t-{@BUCK7M!KpLd`8-sz&gzRvn`{rz=5#@OuaY>UJX)*T`&&Hm&3#I#OS^n^F3#n;tL08aq$??t7ZluWRh^NG~}n8wE3Pntta0NYBxDQ!ece zcDG9ZP1Ca1@0+`xLCEO2R%Zi?)<1ce12^TSqvKACe6H(;9e5ey3ek5wdD`KTSWYU# z2Pp`SIES*8#ajs3Ca1strw#I3b{>z+k$gkfwBd;YsjsFFQdHX`@^3!BN!rV}X$4tB zXRxs|NKY->wkck0V~3pYHu4F)j>buQ>3bO*k8}lW|8aqnz49MI4S|K{;L;_N~ zrW?Z(A}>Ue%#rp4N4mESCfzrsesk^XsUqRD2AqfAlJ*&f-ZVOslEOXtY$Eo~r>ae9 zKlw|(tkeWK@A(h+b!DX@I2yMEGdS=05BJTLWXtjFwvP3U&psmMARbMlVk+zzOwZxZ zrtI0aLFtcWttzj1ayl}8Au98YbZdcv$fsgC8Bd7g<@qHYE42^X|MK|}C=~idud*L@ zY0Z-T5p+xm`aJ+ z8}~miQlhxPClyVvwGCnlQ8X+B;3MyULnv|$OPK8S{LiOFq54MizrPFXX9m*;jb_P# z9yp(N&l57SfTaH(ziS%tJDP{70$3J%{6`iksf*^j9IyzJJdgiK}>qpZAzlas9#jK15$3XB6_P58?{$$(# zcm7xQbo$6&Y>!5uFqSM9Q_@~4nje@9yXTW_9)Iyw`M)9&ihQ9|e;9^+cod=v3+sW6 z>p3l*t0#Td4b&SSHvh8;_Q`*~@hh2c)F-T&>=pTH`lLKpBof=QrTWXVz|d=J!GW>p zznzBzBn^B@^~RI{MU>>%_H?%mh23x|9^1?2hv&bXFIbOieXtIRVaYO>_J37Bfo|;b z{O;~?TCR zoJ9PUe&h6=#V`R_!y){@B0yR7#(#6oXRD76j z?;3`oh3GTNTBcq23t7GpuM7Qz7yOa^#rbnye-3%#+fR7@G1IOX@7k0toflAGm)r9( zURwleSPf%z!=PFXz9=6aq=yoJNg(D<%U$%uwsjUi8H&8M=P|F$@cH5=6K#Wu?_({} zrsem`{@thgRR0CmEy*jFUygU>otDr1J^4i%PqcRQvMcIS-Z2aFoW*b1$r>J)mijDB zWAW{u=8d^(>hCu=f9Q&Mr8w;!lbB}g%6D%YO1~hFiHm8wWKS6WebxEyPN~n(b@Pfl z)$eT^RQHzKx1A<(GKzS`Fu-{i9`mJ8$}EFnm<-@`oHX0xuq}k*yqpu=x5Yl_xt@P#}jQAlj>Rm zG;2P6702#SbiQn?>igW+^Lt{l?1Oq$hAg3Nb&Ugcbd5u;M*0WlQ+R>qxAdL);qT9= zV2j{U*;rlbuV`;8+b&!gtNB=foW6k7u&2oluX*fmnAzj?)p zj1MQ%(tk{syDwo|{I#MLRQ2=QM5+Id$=;~z91BQ)u(EX7T z%`(tz`>3cK^JtJ(Wc%Af_!r^5L&=H~P0~HYYV!Sb6{xWXi*lLEWq@Kz-Qo~ zo#YlaBepej_SELDyx1kf0DP4Cmsng0UI)=Pi3)-7EFsaLNm;{kGr!yz`}n@uG4RA_!CU9H)Rngu*8D?Hj1we4nHV z8gCUt^Sco)kL-pwe)FG-uSLAwhyg#Bc)S16d2AKi=XVoaPT3pS2Dxiz;v0Tid$-J{ zj)}%Hw`Qv9-t8c@CI?$)9{J^tZ)|)@n&H=UmZ{uo-BBkm#h8zqJ}@dq-Tp$&xfAzp NsDiuFe)55__W*bWJKg{Q diff --git a/addons/medical_menu/data/body_arm_left.paa b/addons/medical_menu/data/body_arm_left.paa deleted file mode 100644 index 245cc4ba316cb50521e9c9141492aa8bd28f81af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25755 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 F{|P=z3L5|b diff --git a/addons/medical_menu/data/body_arm_right.paa b/addons/medical_menu/data/body_arm_right.paa deleted file mode 100644 index 2023d1e0b4c6c121d5fa73240ae378682aacf8bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25747 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%0De$9Wt;Jf}3*9-3v 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 roRyZQ^;(^agjyjzk8yKyqIp#`yd{Ke3=C diff --git a/addons/medical_menu/data/body_head.paa b/addons/medical_menu/data/body_head.paa deleted file mode 100644 index 77ddd995bc771273482fa1a315756ca10268fa03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24927 zcmeHPZ%kX)6+idAXB%T#D8!Kq$^8?|4|mh3*01IrYKTFu+5gxrdiT` zVA1LTp{-b2X);z+i3VD_M4BpX5~Hp6VJ0C=n#R-*(XT4!eDxO!n|;k?PX#`X+Hiba%Atec{W`ZANEfGAyx}^1VL&h>a1JM_%$pnd(z_X z*rXFH%Fee6r`tVYR~y2QrxYwlU_S`-Du(*OrQ!VC!Yb1}s3`^$iQR4c{!iU_Ag6?= zj+K}fB=wDJMTDT`y{J0vX4+3)SBwpT%5`w`%YEf+JUmo6=W2$m6 zD%e0xf8@{oNkT#tcE|$$v8J?+Cykh1>>F@y&3!1t)Ro|(fk0Q5OI7P1R1LtsG5_V1+JC0!RkqVeF%}@Pcp$tcy&A z`j^u1%wqTR9_@liBB+znAaH#|i2Fj|v^r2-{?!F`;ZtZ;kd4u(WFXnZ)uYSa!i_!h z$&0v4HcTld16dm0cz6E0o10AkYpW4@utv0!_NEjG*5~Yx$re1LZBjUfrbAP;(IS$p zEnRn(*o?h>i(i5Dokr0mrjN7-p$~qR{>Ym;(OL-o(sKa@#zC&dH3ip@j!Q5x4vSA0 zP|aJG12_FeG?nrO1)-L_Yppn6ueKQuQJ;r|KZlVmaBS2caXl4`%TlyO5JIW|)Me4G zy?>4SQ-F+)ufD)=Nd^`6@e2zFKnGt;M}gyjODJ$09wi+5f>2M*ei6_e;Xl?LKc^W3 zS@pW%Osj?r{h(&t>jV{%Ff<}I%wMLpMB{|PxuJvi=5@QVW8#O2o>En@??ohd^$H=7 z0~&jU2I8Cl=D;gO)YLa(UMgqh*EGAqLb{V3@CFqq}8K z=hB(da=}hREg87GD>mASJ@nEtQQwfv3#GjO8qJ2y`)LZ-^PY=@FQ3Qef?W;d6iFbn z&W-nX>r1?@9V+M09cjy@bPYD=A|hD#9TQ3^^vcTQ;1k8O-wXH(XU}1ac2=k%=J`gS zcJ^)aa=DOtU7Hk1eA)fm=e>mv+c=~TQUnJ>q0Y8B)a40+D1sP2{C7`SmZ0U{h+3)z zUeHFu5lrg_KgFTeb!;@B^=c=)2aoL~7}`p1KBbrF(b7Nk zKYBf15xC6p*rxsiJ;hh!9dS(w z_seFI-JSoyxxw^H%J=DWxs1S8!KaoMQth$i*V%pvd2s)ql}%)J;r6BZRi@AF{UBaj z4G)QYlDwKdMTZYDPp_3|IpbVV-fPgi7)=Yx1|H9VS0HtC=x9<#TNsB7--ctr-HX0A2dR}VmZ z%|l&=>2J03^8IdYf93Y$_R|sI@n?J7e{w!^K65_vc*f&7kLN5G@OZ%E0gnef9`JZj zMS$~x^P%buJU?(ga6WK8R1x5O;C!fh1J4hf51bF24^;#>A2=VX-oWz%=L6>h=R*|% z&IitisyFcb!1=)W!1+)`fb)U#q3R7hKX5*9K5#x%5#W5_e5iWE_Q?-Xy$1km@AKsy z3)PpqXE0g`4W-AhADPE)MH2f<+sW!Zk?A2=U)JmB$w z$Ac;Y|0_PwF3~`{OtSHLw_(t`Ytc@XOrN&R&bZG{?_%=9uJ^F|b+o(Fue(oHx_Q)- zi^KVstG87TyB^msBk*O}kK_ISg}1E#6o{BrD%Cpb%qDuWr=MkRQP-7q=0DiJO|ojB mM*msVTBjeo8cph8V4C)l`rN&NBpOjEo+hZ*TTp#w+P?sl;L-H} diff --git a/addons/medical_menu/data/body_img-arms.paa b/addons/medical_menu/data/body_img-arms.paa deleted file mode 100644 index f469a59359a5b7968ce55e97ba6a3793fe212e7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29430 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 diff --git a/addons/medical_menu/data/body_img-head.paa b/addons/medical_menu/data/body_img-head.paa deleted file mode 100644 index 2f7d15e1cafca74e1437d2c2e03a736edc3dc025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24746 zcmeI4e{57$7RS$>nMYgNGNtC3NNMISOv{RaYK-+qht6xHGi?-@?#|ODqAjIhP$^^+ z%5I=cY1G|KAVq`_O-pwZ6F2+E1{I$s4lVxH^$*-7tF41pgQ9rcoL&df9Z`O@KugG z%ToTaV@7Nq-0D;qi4fU1Nr&ybE5P)2k+rO^U>Y zsr-`UM7t;XeN8P)SvQ5iTX^xr`2qbW*eQ&Xzc|II-RV!Zi>8$^>D~ySs*N!})f- zY3hw423{%eNCv7xAkxP@5(i|QhSe_y8+w);)+?v`AGIuB>j7uo4(HK6?K92!=J?d5 zMZbGU$p#fzhK*L8+g(0#C_S=G#H?xDA}V0)J>aabaW<7DwJ_)FsZLKf$ouhn_nzML z@bg{6xt^_70bg{7v;H;bVWkaIe+@T-Q6ii1a@Dzk@{y;?b2Zms>v>hq`Z5eoQs>$A zJ3gHp)v8y^hIBx6!d$6@uk^#+<*Aof49t(kS57w!eO{@CjN4CM`c8ec<>H|+A&g+C zRo+=^-St|L5Me#`@hOk6OlT;5T?7*%e%WzRHMAUOYthHmZIvObz-QLmRsYgMD$?=w z;J6SnFc^66-*}I_aQXw4_FVU>Ka@IEEUZ|)y|i{wd^!L)9=wmymh9{pcREh*9217m zFk}G76n-wDP7bLz`_h*^*qL;z-#=O1w%BRAsb3rN7gK>-H~dDccbBU`Ze+UvJkL*5 zcT`n|S`7?1T+jo-B@YH{SrP)zA1{RaJ{&EuEHhVsdor9m{mEGYD6T+WU_VIL3+#tk z;|DLme2mF%5Jx?@+`kTT73j;U<4kBe56|fIEzIhLnFZ0e!E4j5Vlxz$HiQV0R1 zM_R-}6~^;!5LGP#*S$}TR`SlXQ~stsecKJwIOnu|_07M2NuSE-!;;^x!;K4X9{xI{-mD{q#1?ks%vJ12;FY_v}@6*T}k{)ACEI7 zaOveT`-6GNctGNT=L63No)0`9$O96M^8x1rVu2*lm=3(~n;LU!irk>fh zZ8rZ6zg0VXS7yslI;aqgWh3LpPdeDOhA@qfo(3~O~_NFAr^ z7K&m`l4uE{2fYvXZx zl_b$}b-2v_U>ciN-uI55xjVqA?H51F=AoXv_oiKrE0X8uP$B5DO%U#yl_&!~#j8F%QfG zu|Se&%med4ERZA`^T0e13nYogJTMQ$0!gAV56lCxK$2+81M@&EkR%%Oz&sEOB#Fj6 zFb~86Nun_i*B%cR?Ez4N!OckGfx~?5g*h8up2o9;?}8ubXJ?xh6KOW?Q35Z)5s^6G z;+C!Bxo};x@d}=Hw$wNq%4oa>{tlyXLQmxBQ-9amdjtLOCg%W&C!CKsA2AOZ5Ab~8 ze8BmT^C9O$&WGdyiN^VW^8v9yl4vvGK~hWF5<4S_hnd_a+kD2|xYG6;f3%y2X)fA^ zU#pI!hY1MVj>WF@epgz*tShqp~cawxl+VT~5cXy`=?z;0FG|*P>ZW*_2opsYBAM)w3 z=v*9jJNBHqjSp$;1vlc3@Gopmx#c)+^qrN&R6 z?RgY=sfZ#XhaezsRXO~Ef!Py>oEVjmASdTiQn+YjdokViBHQu#VlBS|H>USt$IP}A z2WfJtIGp2Io$RT)+m#rr)h?c__3nx5c~0N$!q`z%Vh{Hs8Q8R^J*%JctZ(b*5MqV% zaWBwu>P9XVJ9*z8Ii3!`gkLy!Y#C}E+~vZtB~Aeqx;<4r9(@;d<#cETvZR-3j$@o! zN7B}Mb=B-<9HVt&)p<|VqA5qEW*o&~l>M9HlayvzRNTB%4f^hux)Uu)f*=s|xP3x! zD9aGygfBen-!xZVuKye^L74iH+k4r2ZZBGBLD(~}Y$)5MXBL0{v~2w|uD#4m|D8ua zp$|J(VXTc)q3IUHOicAuW%c6J+5*Px^gKU*x(hLDpY_Deh7Vbd{9KnL`nO{&@?DqM z86x9H%*=c+5%4KD^+c|8=!kSwnv`uZVu#b|49Vy(l7X9c)?71MTrGPqHB z6I?T8#5$BHjyxh`JiTp=<8Q|1u%#lyTgo{LdruDd4>$elbBsx=*N_W?*n*gyC`ynp z$1U44v*#UsPcJ3gTu+B?re#oaNou=m_1zhgD@t2Om%g2T?`P@cJ+C3pimsr0)z)7y zrZyT@-~q|X^UYd`v>&ea#A;W(Dc$vjfcCWpL+S@rJptH#+ojZ58+V}812CwbYs zKX@kzq2BH&t>MFK)x*WrXHDJ~a@cE~1x#h0rqWSyXvtj5P96oypWKK`xU&4pxzlRD zN%E4DAQAe2n>mCgxFwA5AfC8PiyOe;CD=6 zVp&y)ctTdl_|w$9ovbMz&3)dOxAWb0>In0+%i?BdAlr`L*k0LAxl+n){%ov+N-dN; zqLv`nGc`uAU!|msg)955ct?w{DiZo8+!gcW+4s<}qa3#x6xB$$)QQ9xX*=iAB#P zd`3r?h$D#-&Tcn2OZZq{85e(cdG)#Cn!(9J>ZF1~p8OCx)I8rL`_z(emgRJ)&+Raw zR{zwq=6x^&FvMY5K1Iig%~hwep0~|#{Cg}^a4osnRM?PoJLDW z5J3#Fc?;Rn;TQB>4f@cq{vegJQx|yFyyjVN@*DoxZyaj5L4F_^_$Xf+YaMCO_q5)Z z0bs=Wvc{a+o?6x8)ne!3H?EXvC6ec53J?p5y?|;N(_?R#!t#?1I-?}wwYD8+y_cdm zEnUS`plF^ftZTcNP<>ML1HRdbkGJOa?1|%NySH=ECvNPfV*^s}MBcW)@CITuANKqF zIQ93&Ve7m1^>}Hh=UpXv7TopyUs2!V$M9~XDwbkn(2)#q}gm1MfBj+@{Y zhbE0nN9MJ6I32nyx1P&Cu&H|3Q{CT2kpF2KF!fXOs+L?a;i_-+8LxFNY zAes4jIR`YOEydL%B+HUlKZF<)Ok=*cN$SjXb?(K)=yxR^HO}*S)<4y*<+$x}F(liv zlg)E8Sw1FbZd+gKXR?B9!R1a!G$~(RaU4)Z+=Nfq|cagh!k_GVtX07(un`+MLkw7L(;$*iWabHTj=3h&@8}8$Ip@ZZyNMFw52BOgv zrv2l7LBr1#7I8@)QBDLw{jD1@Q!3@A4HegnfQ^OaKqH@OoBDd`#H=>4G`n52JID_$ zs)Rz7rd9JaIn*Q(9azX8_?Rqr{7xCi>6pUP&aetQkUORE#*6GUUk6L48ng#gol@48Bs`8YKIZ;{L2Lr(N6)%o*P4SI;Y_H%$4eRqZ#UO~A^bH_B&@@YvUgXOy&-@ff@9;n~T!)xS4>WxZI# z&%yekS24+wKz;j~1yU#(jQ;X%A7on6l8W9`&ppF7`@Hq-w`_EFWm6T4*nzEgZ? zV88RWKubIiF+%T|1eLyaL{2DZlPunptaeeoC)=AsR@ZwMHBW6^vo1N^lBRiDb(OX2 zCO0e^D?x7X3R%mghO(Z$dDGlsv*Gc!m=&w)R;flmZt|bclw5q0P{Aaee_7v6Hq`ab zO>SKC>kka>ex`*HP}D-db=8GbZ;KB5tegccJ(Ird#dQ7=lolFd6@#LCjnoxYGf;O5 z69zc#LBDvz1j`6{1c>-t#R-1oZdiU*Z^7~#B`k!6D$~v6Al037rN$6?KLRO7Gic!# z#(6uN`cHE91s&r2%SRIAw9e4g=X{2I22I>G zwUBIh%}{_wHFf2xg)sLuzFl%>uH@5+?q04f=+32>C^LpDFhdqn#;caf5<5fMJLjX| zw6fEj%HsaWWFgO3=<|J%v`@ayYYOugUgkAEi9G1<$m~fjSTv&@7WMhw4p;!00rY5N z=Cr4&-42>tc`-I9oAnq?Nt2tKP2j6PH+Ew;KgsRpQm%q4EDj}ta7tPA;I+!(;u@Vs zcvE#9#q2~A4UHX!{RxfYeLbNuedrd62_e_#taI^V=d9k3ODPPdui*65&gQ{rexlF9 zZ(xM9!%60}<<)vYH3!z?eiQ>fLWLhM-k{l6xktP2OxWfeaZ_bc<>Gt6#WFuSBSR`@ z@GfxA`ALOs4_wTV4B3`xz@n?@Omad0SzSV7CsP4Vyh?xS+3nq?bh*+_Dy1-%)F zzNt)kOqQ!Jda+i+J#&1lg;L(g$hI>JWvi3l(CN+V$&(Coz^COIF!HE}<*{in<_YYu z^CA5oL#MUA<|wWHy=&EHPd54MF^AhfN0>MInz8PHII;lD&BJJCs$We0xSrOGnxqy! zv+zyy$IN^I@*))LrsoMIAxQ7a6Ii25(y0*POno1B(2F&*kDbD!$=OKd|AE&c^qbl( z@#hn+bx4Q!IG zzWV5@9B*`V5{kWO-gxK^Ik6r$6pnC;u1Y2Kgrut{Yy4N5BuY!R;4O?-^(DtWMK5iG zltntlQAJ7jaytYu;TG@=kmbP zx~R>79{f2ZJ=UsXe(7{-@Bb2FL%Ai(8$VN0liASCQLrgWK(F8GiBsb1$FU=*pF&B^ zCG>gLz2^Bz+FBKxk-^1MKZc+}ou@P(cvs)`vfTYMjO`Wn3WW*fg4y6JUWOQXtqLM` zjL9;uS_zWLUv|q~R_POHEx46L211LZT=pyQ1|gb$SOqOLaCPcA@%oVtY5!gvEeMUD zd{lG6T+`nUJrQ+2F8w{C_=qSUO!XHCK7@ju7}&cG3`mCuB$5anRG(>rTuEJ5^VMjf z!am{CYt@&{)oJ;2VmYGmtKa)jO%ICFD)D$*)`&s5-Xf`4a@XM+|FIgPqw1_nFEg~Y zEX{j=Y=zyv!rH0?Uh9%w7+f`N29+LXc@mS4f9J#Wc$&rN5|uuR{J9CIjl;Rc)uSXv zR*%0I4OSuNc?ga7R5gpNV}-+!fNU9JEkatOu$q11tMOCxMiX?jy7>Ra)1x#!Z;m_6 zj+)Ef4AIQB>i%YtFy2|*{DZ*&d6u_6qpr!3orkmn6RW28G^STqW>T7bY6W9;X}I)3 zwRB>4-3etx_ejgQgbNTvm^Zu+5lDV?(nWFbI7G3Ou5%%)E1pUH>&Y59!)3$_#!Nnd z%D$~h&a@O5^X3H73Wa|4uD4U$^4F(#A;BxM+bKq8)tM7h9 zg=1r_^_n{umE7@ihiDJtU=axQpARe1{`&1d%?LOT`GcGFJ$q;Ncz;S5*A7)HV%&&r zjxpYC*V3auQ!TXE*}O-oaJ((e0`b?6UK@wdv}1wAu2S`aU!YF+H&p}>Rs>>be#29JVN-Sg0$MI12Br<0 z*$H{1y?T?k9QbCLd{0%fXI)yo@t2TGdiB}^;y7L4SKn!cMMd79ZfQ`)Q{-P(xOKW* z9y% zbuc%l_F^vcI;2#N)tt?+)?zB>)Ek%d8|S|MPTY=vw66%TDGfmTmBY>jXN+&}I6Po- zP2)DcDoXpU(s5Yz@|j7;AzaV){z>%!V%=z>$**Q6&8RajS1!IsQu}e?Yj!as&&LQO z+;3@Y^P!KLKlO@W;gagHzC51F=d-+j;-W_tpM5Ct&ivOMfu!LBk{VC={8)|2;#(yq zT{F^LdR3h3iYJr&xvswHlG^z2>ic$OwRHrh{9^C!d{CqIw7F)u_{t>49vjPEx4vA$5Ws ztZ+jc5L}_G=BKy$ryIR~eD5odR%ZIk(A0@4T=uGQBc%I&?<7X+te5PnOnEj_8jCl) zW?OBl!~X;=@Z5$fiYtB;5aNT!9xTO3Ko8B zC|FPmff~U>1P=-pltQ3J@DRa+f(4}zs1ZCw@StEpDFo{6fQKo{gL$5+G)41HC&$I@ zQ0VRZg7iZIh#^o2{8r?_ulQzrXI#QDpr6~`9cW)>w+CC_KJvTO`7L_aTs^R<8Z-;f zGIMeG<1uki(X&z%-WpzRxE`c}bn_>N!erp{*r8qW3AOZz@@Z{_Al&Nmxb4PI?Tr}~ zjqrFR?6Xi|nBzeSg!TWQ(MhMMbX=4Sl-ln3TKkdtPe6=e87dO}uF_M#INU^GyJ~o> z-`021(1pj|YyHtvf%o~@Dc}Bl;kw|{gyHKIUX?S zP+yofz1q4Y`R%G6Meiw-Cp!-MX$zIV#!F5)JO&E8lEdu-S1TPr{pNcS`nxHQNB%AF zNI&Qww$s7_P;@-_5dAlG2dYH2d*GRTIJ@AEL1llUvh^Zp3Euijl#Wtqe~|JCN?WB6 zsNpsd`nxL+=cC7Jq+`nbhxH$d_9$$6w#os24*9-b(Zl*I9=S50Y()>~8y>8FwZbI=wTpY$J zH(;9)Y@+xkueTEa%2<^`pnj8w+lBtI@9=>CWKCfHD*=H1Jj~}N`9xqo3j*xK3YM@u zcv@V!z`Q0mXfNX8_^aaJLD)f~;0J-h2sOWL<$0^|&;AS8f7nJB(kGWsU)6Uv=(`lU z)_!w7CuInZ4}r63l+QV(T%yt^uysqJ!Cc&gms?F9x7&D4XB2(b{7s(^?GBuo5zxQg zUVBqMPxGi5Hi`z0;0i2fA`5U3ISE30O(5cm_3$9GR20um77gF1rW1ZqT0-#s;j6%^4=1fP-l8JV9E zdk~aB#2((7_D~q~RQb;L2h#FRIIwl<0XTfi<_FUTkLk?^kL0K)ucx&xkfw7wO22n$ zH0Qb(AsxNG+ zfwY?{NlCnyz6EI-IKA)t%74m}*WWCc`V3+IC-=hFj-E9)6n;5wK6n3?&2?S7zQ6jP zc;UwD2cP`wXF+`n1+J0c`HBJl=WDg-f@u&Z@(_!BKk@(MxoK5@F8=ZZg};J=eZCKn z?N>$cZwwS#tCV3lOCL^?RcMF9@x7b>gx*u-gD0yM{(OSdIq7Zq9|<8^t93fl{-Ftu zKn#9vw>u+g*O0^aKjrTbCGuxOH;JSH{-?wo7V!6_e}2EYVqnwP-N0*t`{v>?= zcaibMS?edw4ecQpC`%zJ0<`Zz1HuMMA-z26O6r-d? z!-c?$u%o8D7p6;*?IqUs%GvO+COpwv2LA*pu&BYJ?O?&8f;@RMEM(OieM&Q@GYrcA E03#*DCIA2c diff --git a/addons/medical_menu/data/body_img-torso.paa b/addons/medical_menu/data/body_img-torso.paa deleted file mode 100644 index cc5ecb9d609161b7515762b13718f41931dffdf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25596 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�PUh6ItgVs&hSbSINTt9^a`ZmtWSy#c`G=T~6}UwK zwd8lPEtqJk8+04DHO{Z*r^?v2IIsPiuS2y27i17}U|sm^e)wR{r&`d_Z6lGXUYdQ< zr6FY=f^i|GTC%<#a9)pBx^*9h(8$LvdX%D^*KJk2JZ)Dkeobu0gzDAEn~%raI1vW& zA#6@RCkeYh3kBsE9V;;uU}{+y-p5yCX7W#7{c8eg0Tsk9|AMfcL}q_>iz2+IpKJ5C zIYU!bQ`{5!i(GqL@YDP0oXt7K%hhp}_mfG-C-mO;(mB-@08`Z~YWwMtuFwKTL0N!( z6!w1Bwu3m^M!Q4tjbxfSp1;?86x-qq#yk6Ppr`-(gwpn8unn= zgJBOP4jA@e*h5JhjQC*KgJBPbJ(M_L*n?pYC2cU`gJBPbJs9>-;(%cfhCP(D!H5rr zJs9@zRj>#A+Y)zBRyP^?_-N>(1^2tW(lJt$H&0q-w8@#9hWyv3{44UCn~$_H`4X;n zFZDaDy$Sd5(#;dB&3uy4ULX2E9;4g;-fP!i{q_G^{yy>#j!)h);{SS;zX{J0(eqY} zKH`KnJa1L>Z|3}IFGK!}KWpu0y|oEfI624Y?bwq)ySKvH>y2K6o&pD$d_(v?py|;4 zqCeQaXDMG0g~1JeeV$+IjUQcj+R}CEf%idppxC7epBnOCpZWh<{k0DE#ddbYO3wqm zzyrt&O#c1w%%VHI=wj`){f%~k1M7u9g7b~&3Kl$AFZ3AtxxV!Ci^?-hYXHzv1BJ^_ z^G74h8S*ytopQjicf;P9FZe3y1DD@+n=C$tvo)?)eYIgp(ks8a-^}Ra$!m@~kI>(a zjbu;0?kJ<5z$ov=!d|Ss-sMk({A8tQPmE z$RA5E=L^*_dOHS}2ra0`+Us5aE9h(2)3HuQZ|fkIyZxZzk)gjCi$7z5=i)Y`+GbiF z_245zKbF|W;@5vs&*Wb_^nv4!dFD22uXp`lOP>`+Y2o(&xBN%NLW)=eon4PA+aGrN zExq`v^5 z-d4->RUpT#pqP!a8-FUYYV%KbeDP`Le>;A~Q_~0UzDEAfn{vxN)8x(%{`gD%awvbG jG-{Cz*8k?Aw6c}f=r1KLB6?KhXAO4qo6om@o_qfZv{K#Y diff --git a/addons/medical_menu/data/body_leg_right.paa b/addons/medical_menu/data/body_leg_right.paa deleted file mode 100644 index 02ce66ba7065ddc175b1e5f52813fa01fbbb5a64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26293 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 Zhh?#7h_px5U#%8KyY;Sh-b}jOzX9(t>QDdx diff --git a/addons/medical_menu/data/border_arm_left.paa b/addons/medical_menu/data/border_arm_left.paa deleted file mode 100644 index eae1d751cfe41437619b815fde20dfd5a5bca3d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26291 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 Qg5JZl{O}AY@7wl&05}peegFUf diff --git a/addons/medical_menu/data/border_arm_right.paa b/addons/medical_menu/data/border_arm_right.paa deleted file mode 100644 index 0aea4ce20e4d83762f28b4518bfa1f275de90568..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26239 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 NQea1hq2aS?{|A>}2VDRF diff --git a/addons/medical_menu/data/border_head.paa b/addons/medical_menu/data/border_head.paa deleted file mode 100644 index 3b2e7aaf10ebd8a139a1841d6e3aad3edddc54a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25181 zcmeHQYfMvV8h*dib10QdOGU(i(vP-yS_JXh(Rd0)-C|u3b~KKe73l>P(K;?Fy7WR} z9J9EiQ}7mVtQ%)yHt`2CGiNfHir~)fh?yVmWHXBrlO1DrvlsuEy=0S??sve`n*Fh> z$z*oG?<9r3e3$cm@B2K@`<|1W1DB|&sou1vW^*+Q0R8>_Flle8u9NHpIV8KLy4E4t zhTJQylr#%C?Uga}>6rFTY|{ybZ#c3iQNuMa@@2 z=9Ww~8W%5($mkL6`vI+=!;MLyJ z0B~h~r+b;WecTeoXpoP1<+++{nBN*l1>)`svZ7A-Rky9sbglDn>q>KBrpnY*kWzv$)#JD1yWU3brNEf=o~bpAm7sS3Ymj#e=(-F)p6c|BFp zs!D;7B)GX{frJY`)EoGQB?9JyNSib4M*e?zj+g@o9nH4+JLLmDrDGX2m%<5cS0j%kAcn<8plODtsHWN&ne?@%Vh_`Vn&+UCqi2XcUa=7m&5UCoj7O zhOycPDovU_gz}wRyroq|o0?q12`@s2}j87pNazCO@nZAcus#3y?|iUn{0-MEOy!=p!l2NHp$%RQ!zAp$Vi2G%2(f zPmxNeIK+|sPG&nlq@Gn9I^-Br|b4pys4e)&F~}i~`#XD_>dRXp@?E z2dc2T67;UnKi#BSV>SC6@7(Fl!s)Rhg=Sy&o;jj<;>{wrG5+RcVbl>-8*JNHODx2u zgeC0ln(wq*`bduHfCo?Y}6h~8Cl zJT=QQwvyC8F54Bb_|y?n0?4-7F51SgH;&0R#lw^brmH`4Dy^;i9eaNF-0NRy8fMbF zW<7WRrvRb-zngmDfS&$B=b1-xe3nY}etmb6@5ZT{pRC+I$9AG|?0R`pA1ME)H~-83 zBfi)cc{~q!7rD&Vq zovH`4b;s()p6O5HKfU8m<45Bsc|g{8iU*1ZiU-OEst4cA>ouy+RG+CnQ+=lTO!ZmL z1ym2H9#B1?dO-CcH(C?6;vQfQ$0f%1X!f$|~c0m=u;hZGuUexQ7ye3*`WuuJa%kYDKY z?a>$&N{?Opj52MQBFWahG>_fRhfj)1s@qEB{g=SmlV(-l7qTrwX{Op4rW3x=cHdoj ze+E!#E2_0CWqYRYUsaa9^V!GJ%0c&#yn`?KSn5pQKi%Jy2VNGu(|FT(OCF$jr)9FN z1r!gI4^$7R9#B0ndO|Fqf0CQZX7p4XO60Ba-dY p+)jsd>9!~f&Qt6&H)U8@-~A#tX;?A?@h1aF`u_?^k(zSOzX7Y8QBME> diff --git a/addons/medical_menu/data/border_leg_left.paa b/addons/medical_menu/data/border_leg_left.paa deleted file mode 100644 index 7ff3b170fac5bcd37d0995859ac6a91fd26ba611..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26970 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 diff --git a/addons/medical_menu/data/border_torso.paa b/addons/medical_menu/data/border_torso.paa deleted file mode 100644 index 2b700769390938c197fe6231be8bccdea77512df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26036 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 diff --git a/addons/medical_menu/data/buttonNormal_gradient.paa b/addons/medical_menu/data/buttonNormal_gradient.paa deleted file mode 100644 index 2210f987411ee2a407ba63733091384a6fb00e35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1989 zcmdT_&ubGw6n^i`>}H#8eh^j&A%;x|A%qxmh@liI-2~c*5iQ10LMW01ky1oTD5XdV zW(tceWsx8rJv350dF)9HfMs1s%Rgz@S6EqX&-6k##14 zoqg<%uDQg!h@x`jT$ZvVP^8AfZX~)Q<)jrU`sF??U2l4Fcy+05DM}( z&Ok(-$1)Y5%6J9aPzb{(o~0I6I6Q#_JY$7J%7?~5p3Z4N9-Au?1Uv~(bAlQvL`y-= z0$k-GjAI%)ZmKdbOOTE#3!t^p2tYAI3z(6UXqD2miYgR!%s{aNum*mR(ZT?}hAgzX z9>(X8r8+FJ#v-l*HdDAjRmjsizCsge2b&?j;y~mm!$NpYlSIB_#BPq(b$70-QEPYZ zqfMZqEdso2mm@4sb}K>&Y^kWEX$s=dN;!L8CND~&1fmAhSaMR@f)Zg8?_pPAZ4i?n ziA63R;tE6{NEIpf7++$yPAz*16AWrtpc<{AO&ZCp0-)12EWswz@CCeQkHEi)%b2DP zi3ze%_Ct*P{GbAd-(x!dpTL_V9g5Po2U~W(*SAIQ(uM*XJ0(s_hs zm{V41B~CIAvph?V=RN;at|wLdKDg#=kusim_6LV*6<1V@RG-Xyi+pa$Io8~AOqNV7 zHJ(Fb5(;q)Qwk#ijEaJJTCCFEkDj9Dd8MW`44=%TGn!_<_Xww4f4SvO ZgP=MCJpJCmus=_!xITRSF&N#$KLJ6wth)dJ diff --git a/addons/medical_menu/data/buttonNormal_gradient2.paa b/addons/medical_menu/data/buttonNormal_gradient2.paa deleted file mode 100644 index cabe6c7feda6907aca65b3aad4ee27ce6c91f491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2035 zcmd5-L1^1%6n^jhzkVyR9C@A=jOV$w2__g}JTRflN{Qr=1lBRud07adnAnUG(rz>% zgfdE&sNfAzL@;6Ov_dk%PCM=}#&#P$-uHj+ zz3+eif9a#wW@e05b7s!q0AQNt(Xl^oyyy8x?&bL(PEWr-<@%qwzb)b3{`a*DMMw%@ zZ~aATI3P5AE9*VP5N!HxY(4@gOus;C1Q-zFF{XUnzZbQ{msUYmIC3teI$1+l9m)?Q z(Iu%NtxLa_ZqhBB7i(mZ1(KCx#U6ZuGG0mSyva&dG}qwLzN`USJm@6ElXX6W)POU% ziXZKBUd-4LLuE~+5kph8RPQIjWyvyn#v&MR_sSZSdqxH;{2hgDFmsXGl8xn@fQx8~ z1Du9}n8zz*f;`7sxCUk(9`ZVMvEAZ3P=T-MoBL+(`Pzb&#Q=ptu%>_$SN>u~*qQS> z7|j!_lJ+9?3t4Ou6qD)H$7Zi%(oz*|8G*A5S9lJ`P={ffW9<=Ep&}|QgZ5GeO3fNw z!r! z3hHEChB4??-SaPK1TC5cD-TmR>o&CugnQ$79k*q+2G%54w9Ku~aUBYfrIz#+=Dx@6 zMd~`2vBDM*Oj@AZ=#WN&wV+6F04s2hY4{!d#JfcA!B|FFYPSLq)(Lby#8xkIxnL%p>cs?>YPZ{ZAdM ze^-XPea`OhD=deU7ze8edr;&BR$~p)A1?aDy-JhVWoOrVF?C4$hymS%NKOSCv5X`g#qmSMv;8bQ(4{*>Mc=!4LLaG}> zY5*wA=xge*C=01qO*YWjngnwU^Hg<@=yJ(K_oWpbZnYrPhuv%;z?03Ert+k%u_Ybt z5hiq_V~6n@zIpY*>fxxbBb@6b?A60CRo$Q2l`O}zPOZ{o#Q;}GICfL}*biOLDv-K* Y`1H|}lIQ#qnM*x=^yiI#kNmIpe=FM30RR91 diff --git a/addons/medical_menu/data/buttonNormal_gradient3.paa b/addons/medical_menu/data/buttonNormal_gradient3.paa deleted file mode 100644 index 7da9fbcf8a7bea39e3108f236c4322101bac95a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2044 zcmd5--)kF35dLO%Z*`VWKM>atgb-)d2qA=!gD}PoMkf_J(3Fx^5ymwk$fAT0LI}nL zQ-Z12pq3+CgIv-+g%XtzD3p>wDQ#)rO5d6XKjfci9|C=8QCD$Qx#U4$3dtUKyK}qq z%{Q|%yXRk7S@D~Vm6k67%+1XWp2@5Jn?reE+E9LHdHJoHk*}HeGi5%uNV^DcPDz}r!xe1Q@Zo-Xqzf;n-wBPmD;lI|+ zxyW_>6y@dXj<_M}>wM7)D3?}Ppt`zG%gCx#I?Hv~EzzV+)H8S@E8HP8jimt46~oBsRknz%f~hrxXnchY?2}+9hs(CLJ3iBiMYtKM~+C*bkI(rQRWL&Rt5Sv zDDe$)(D0~?26nKGBoqadq90H}ZBu6GE-Ji^E24dw_$D@rbb(u#=bQ8u$u50E8)>;^ zAgWvzNYl}*dWrMu?uh5pbGt5gzJ7WxWH=P+l-&I^%!+vqJ6Xnj0tJj0aJl4(XK5vp`(k?m!*E6wvfe1zSOinq6f6Q&Yf_HkQZxI=QZA@ zkX=>+O?Z4CS8z+X^aXwv-Uqlv*Nwp))(adGR5Hg&IpX>f$8&Px?u@-Kr=r~-g!jUJ zuOI4ndwVwadQ$WqQ7{P<6br4i66;Q!g$ZEL6oRNo)V{qk`E+yF`oB;{8*+MB6m@ z^^d_Drku_b#Fvkb(tdU^#A$Rf{5YPA(~O=RN^hhPwahUXRsEc@y2a@#`HQIkK1&&M z3Zx8Dy*nAJHo`J}tl=ge$mzfp?GgoXYlDI#vnDi?;hZ6i4o7N}6)ujJa;)Eb&O)5T UZ{PpBV#FX$-~Rd6;PCqX8=e`$(*OVf diff --git a/addons/medical_menu/data/buttonNormal_gradient_top.paa b/addons/medical_menu/data/buttonNormal_gradient_top.paa deleted file mode 100644 index 904e1a62f7a1cf7e03644d5a965fbe3b177b23b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1995 zcmd5--Afxm5TBXdyPWaz!Epr%A)G;u5JK=lg4iOtOHrYg);0}dMZ|<6B2pxXNRiO2 zkd{NPBBgzkVu}cbQV{x3O8Zv&C$#@W9|WIDdeMdi`Vh!Nb(g)}*}3`62Q#w|u1!u_ z`P^i|;s9WpX5*ZmwQe`*hBun@{fUV?S&x3~tu@*E^gLdI0cR4hd*3P4p3pvCoCcbk z;)BWs`47K`i)>qmUov#xGZ9l%j-1QVFo`})_C@_jbVC}EHl(kEYqXBDa+w4P*bxzC z)Zh^+IPC)_2HQ{+>cNyt64?twTn|yu(nETn_DSZ7B&?b>57zZsT!(ng($M5LRkq3O zd0Lblj7MY`MO!|?35dzFI88Pv1(wG$*irbwhpB{+=X+qnD`x+7>yo_dLG2s4FGrvS z%s_FJmMDpif}Ckwg9>ax z7-V!%!_P1b*)osf0SwbTtg@vQq-`iBae)eup>2GRyoMjK7~vZp#0aGsM6fffu5ex* zwCp^csp?eva601>sOSofS6{m^mLazkBNIzu6;m`0Lr_Y3RWFl2h++!F9At6I3#nTI z!UQg3Rbgci{xJ|MTs*-Ih`|6Y=cVU(jMaH6x#I{Xn?sxCXbWA^NoJ4-gN|SocA1WE z;Ttoa!Y;0R3M(W=$wiREaSHR6tyegn-4nOc_QLCmO1z rltL#c718P7dJj~0IJF5Q+?H5(fyLIZ6sYfa*P!_Ne*SJ;yvBb36MwL| diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp index 60c970da70..c0c32cac8b 100644 --- a/addons/medical_menu/ui/menu.hpp +++ b/addons/medical_menu/ui/menu.hpp @@ -274,7 +274,7 @@ class GVAR(medicalMenu) { colorBackground[] = {1,1,1,1}; colorPicture[] = {1,1,1,1}; colorText[] = {1,1,1,1}; - text = QUOTE(PATHTOF(data\body_background.paa)); + text = QUOTE(PATHTOEF(medical,ui\body_background.paa)); }; class bodyImgHead: bodyImgBackground { idc = 50; @@ -284,30 +284,30 @@ class GVAR(medicalMenu) { h = "12.33 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1.4)"; colorBackground[] = {1,1,1,1}; - colorPicture[] = {1,1,1,1}; - colorText[] = {1,1,1,1}; - text = QUOTE(PATHTOF(data\body_head.paa)); + colorPicture[] = {1,1,1,0.75}; + colorText[] = {1,1,1,0.75}; + text = QUOTE(PATHTOEF(medical,ui\body_head.paa)); }; class bodyImgTorso: bodyImgHead { idc = 51; - text = QUOTE(PATHTOF(data\body_torso.paa)); + text = QUOTE(PATHTOEF(medical,ui\body_torso.paa)); }; class bodyImgArms_l: bodyImgHead { idc = 52; - text = QUOTE(PATHTOF(data\body_arm_left.paa)); + text = QUOTE(PATHTOEF(medical,ui\body_arm_left.paa)); }; class bodyImgArms_r: bodyImgHead { idc = 53; - text = QUOTE(PATHTOF(data\body_arm_right.paa)); + text = QUOTE(PATHTOEF(medical,ui\body_arm_right.paa)); }; class bodyImgLegs_l: bodyImgHead { idc = 54; - text = QUOTE(PATHTOF(data\body_leg_left.paa)); + text = QUOTE(PATHTOEF(medical,ui\body_leg_left.paa)); }; class bodyImgLegs_r: bodyImgHead { idc = 55; - text = QUOTE(PATHTOF(data\body_leg_right.paa)); + text = QUOTE(PATHTOEF(medical,ui\body_leg_right.paa)); }; From 31a5f8899b4a7ed9b3c0398fc9a63012e0d574ef Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 18:16:25 +0200 Subject: [PATCH 72/78] Changed default keybinding value to be H --- addons/medical_menu/XEH_postInit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index bc33ddce1b..33733ab091 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -13,7 +13,7 @@ if (!hasInterface) exitwith {}; }] call EFUNC(common,addEventhandler); -["ACE3 Common", QGVAR(DisplayMenuKey), localize LSTRING(DisplayMenuKey), +["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey), { _target = cursorTarget; if (!(_target isKindOf "CAManBase") || ACE_player distance _target > 10) then {_target = ACE_player}; @@ -29,4 +29,4 @@ if (!hasInterface) exitwith {}; [ObjNull] call FUNC(openMenu); }; }, -[0, [true, false, false]], false, 0] call CBA_fnc_addKeybind; +[35, [false, false, false]], false, 0] call CBA_fnc_addKeybind; From 4c7bcbb6fe2aa774657ce97dd3eab874107b4844 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 18:29:30 +0200 Subject: [PATCH 73/78] Added triage card display --- .../functions/fnc_handleUI_DisplayOptions.sqf | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf index b156435839..d795b0128c 100644 --- a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf +++ b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf @@ -60,14 +60,32 @@ GVAR(LatestDisplayOptionMenu) = _name; // The triage card has no options available lbClear 212; if (_name isEqualTo "triage") exitwith { + ctrlEnable [212, true]; - _card = [GVAR(INTERACTION_TARGET)] call FUNC(getTriageList); + private ["_log", "_triageCardTexts", "_message"]; + _log = GVAR(INTERACTION_TARGET) getvariable [QEGVAR(medical,triageCard), []]; + _triageCardTexts = []; { - lbAdd [212, format["%1 x%2", getText(configFile >> "CfgWeapons" >> (_x select 0) >> "displayName"), _x select 1]]; - } forEach _card; - if (count _card == 0) then { - lbAdd [212, "No Entries"]; + _x params ["_item", "_amount", "_time"]; + _message = _item; + if (isClass(configFile >> "CfgWeapons" >> _item)) then { + _message = getText(configFile >> "CfgWeapons" >> _item >> "DisplayName"); + } else { + if (isLocalized _message) then { + _message = localize _message; + }; + }; + _triageCardTexts pushback format["%1x - %2 (%3m)", _amount, _message, round((ACE_time - _time) / 60)]; + nil; + }count _log; + + if (count _triageCardTexts == 0) exitwith { + lbAdd [212,(localize ELSTRING(medical,TriageCard_NoEntry))]; }; + { + lbAdd [212,_x]; + nil; + }count _triageCardTexts; }; ctrlEnable [212, false]; From feceff274623a4d97e5e8ebcd4f9220657a0a73f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 8 Aug 2015 12:36:42 -0500 Subject: [PATCH 74/78] Polish the stringtable --- addons/interact_menu/stringtable.xml | 3 ++- addons/optionsmenu/stringtable.xml | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 00e244588b..5bd8aefe21 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -269,6 +269,7 @@ Interaction Menu + Menu interakcji - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index da978da763..9f7e6ec33d 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -345,10 +345,10 @@ Protokolliert Debug-Informationen im RPT und speichert sie in der Zwischenablage. Envia informação de depuração para RPT e área de transferência. - + Headbug Fix - + Resets your animation state. @@ -369,6 +369,7 @@ All Categories + Wszystkie kategorie - + \ No newline at end of file From 696546de5ca0617bbc5894fd858e7b77a6a48e28 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 20:22:19 +0200 Subject: [PATCH 75/78] Finalized ACE medical menu settings --- addons/common/stringtable.xml | 3 ++ addons/medical/ACE_Medical_Treatments.hpp | 6 +-- addons/medical_menu/ACE_Settings.hpp | 8 +-- addons/medical_menu/CfgVehicles.hpp | 50 ++++++++++++++++++- addons/medical_menu/XEH_postInit.sqf | 2 + addons/medical_menu/XEH_preInit.sqf | 2 + .../functions/fnc_canOpenMenu.sqf | 24 +++++++++ addons/medical_menu/functions/fnc_module.sqf | 22 ++++++++ addons/medical_menu/stringtable.xml | 7 ++- 9 files changed, 116 insertions(+), 8 deletions(-) create mode 100644 addons/medical_menu/functions/fnc_canOpenMenu.sqf create mode 100644 addons/medical_menu/functions/fnc_module.sqf diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 441d40b114..d0034d2c04 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -644,6 +644,9 @@ Não No + + Vehicles only + Do Not Force Nie wymuszaj diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index d50d2a59cb..f7bcb88828 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -856,9 +856,9 @@ class ACE_Medical_Advanced { // specific details for the ACE_Morphine treatment action class Morphine { painReduce = 15; - hrIncreaseLow[] = {-10, -30, 35}; - hrIncreaseNormal[] = {-10, -50, 40}; - hrIncreaseHigh[] = {-10, -40, 50}; + hrIncreaseLow[] = {-10, -20, 35}; + hrIncreaseNormal[] = {-10, -30, 35}; + hrIncreaseHigh[] = {-10, -35, 50}; timeInSystem = 900; maxDose = 4; inCompatableMedication[] = {}; diff --git a/addons/medical_menu/ACE_Settings.hpp b/addons/medical_menu/ACE_Settings.hpp index fc41caa481..1f2b9cc3ea 100644 --- a/addons/medical_menu/ACE_Settings.hpp +++ b/addons/medical_menu/ACE_Settings.hpp @@ -3,14 +3,16 @@ class ACE_Settings { class GVAR(allow) { displayName = CSTRING(allow); description = CSTRING(allow_Descr); - typeName = "BOOL"; value = 1; + typeName = "SCALAR"; + values[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled), ECSTRING(common,VehiclesOnly)}; }; class GVAR(useMenu) { displayName = CSTRING(useMenu); description = CSTRING(useMenu_Descr); - typeName = "BOOL"; - value = 1; + value = 0; + typeName = "SCALAR"; + values[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled), ECSTRING(common,VehiclesOnly)}; isClientSettable = 1; }; class GVAR(openAfterTreatment) { diff --git a/addons/medical_menu/CfgVehicles.hpp b/addons/medical_menu/CfgVehicles.hpp index f48603b0de..7dc2c43155 100644 --- a/addons/medical_menu/CfgVehicles.hpp +++ b/addons/medical_menu/CfgVehicles.hpp @@ -1,8 +1,56 @@ class CfgVehicles { + + class ACE_Module; + class ACE_moduleMedicalSettings: ACE_Module { + scope = 2; + displayName = CSTRING(module_DisplayName); + icon = QUOTE(PATHTOEF(medical,UI\Icon_Module_Medical_ca.paa)); + category = "ACE_medical"; + function = QUOTE(DFUNC(module)); + functionPriority = 1; + isGlobal = 1; + isTriggerActivated = 0; + author = ECSTRING(common,ACETeam); + class Arguments { + class allow { + displayName = CSTRING(allow); + description = CSTRING(allow_Descr); + typeName = "NUMBER"; + class values { + class disable { + name = ECSTRING(common,Disabled); + value = 0; + }; + class enable { + name = ECSTRING(common,Enabled); + value = 1; + default = 1; + }; + class VehiclesOnly { + name = ECSTRING(common,VehiclesOnly); + value = 2; + }; + }; + }; + }; + class ModuleDescription { + description = CSTRING(module_Desc); + sync[] = {}; + }; + }; + class Man; class CAManBase: Man { class ACE_SelfActions { + class Medical_Menu { + displayName = CSTRING(OpenMenu); + runOnHover = 0; + exceptions[] = {"isNotInside"}; + condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu)); + statement = QUOTE([_target] call DFUNC(openMenu)); + icon = PATHTOEF(medical,UI\icons\medical_cross.paa); + }; }; class ACE_Actions { @@ -12,7 +60,7 @@ class CfgVehicles { displayName = CSTRING(OpenMenu); runOnHover = 0; exceptions[] = {"isNotInside"}; - condition = QUOTE(GVAR(allow) && GVAR(useMenu)); + condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu)); statement = QUOTE([_target] call DFUNC(openMenu)); icon = PATHTOEF(medical,UI\icons\medical_cross.paa); }; diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 33733ab091..a72c1a8887 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -19,6 +19,7 @@ if (!hasInterface) exitwith {}; if (!(_target isKindOf "CAManBase") || ACE_player distance _target > 10) then {_target = ACE_player}; // Conditions: canInteract if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, _target] call FUNC(canOpenMenu)) exitwith {false}; // Statement [_target] call FUNC(openMenu); @@ -30,3 +31,4 @@ if (!hasInterface) exitwith {}; }; }, [35, [false, false, false]], false, 0] call CBA_fnc_addKeybind; + diff --git a/addons/medical_menu/XEH_preInit.sqf b/addons/medical_menu/XEH_preInit.sqf index 5d67d4429f..c231c7df6e 100644 --- a/addons/medical_menu/XEH_preInit.sqf +++ b/addons/medical_menu/XEH_preInit.sqf @@ -5,6 +5,7 @@ ADDON = false; PREP(onMenuOpen); PREP(openMenu); +PREP(canOpenMenu); PREP(updateIcons); PREP(updateUIInfo); PREP(handleUI_DisplayOptions); @@ -16,6 +17,7 @@ PREP(updateBodyImage); PREP(updateInformationLists); PREP(setTriageStatus); PREP(collectActions); +PREP(module); GVAR(INTERACTION_TARGET) = objNull; GVAR(actionsOther) = []; diff --git a/addons/medical_menu/functions/fnc_canOpenMenu.sqf b/addons/medical_menu/functions/fnc_canOpenMenu.sqf new file mode 100644 index 0000000000..2cfe7072ef --- /dev/null +++ b/addons/medical_menu/functions/fnc_canOpenMenu.sqf @@ -0,0 +1,24 @@ +/* + * Author: Glowbal + * Check if ACE_player can Open the medical menu + * + * Arguments: + * 0: Caller + * 1: Target + * + * Return Value: + * Can open + * + * Example: + * [] call ace_medical_menu_canOpenMenu + * + * Public: No + */ +#include "script_component.hpp" + +params ["_caller", "_target"]; + +if !(GVAR(allow) == 1 || (GVAR(allow) == 2 && {vehicle _caller != _caller || vehicle _target != _target} && {alive ACE_player})) exitwith {false}; +if !(GVAR(useMenu) == 1 || (GVAR(useMenu) == 2 && {vehicle _caller != _caller || vehicle _target != _target} && {alive ACE_player})) exitwith {false}; + +true; diff --git a/addons/medical_menu/functions/fnc_module.sqf b/addons/medical_menu/functions/fnc_module.sqf new file mode 100644 index 0000000000..d95110c200 --- /dev/null +++ b/addons/medical_menu/functions/fnc_module.sqf @@ -0,0 +1,22 @@ +/* + * Author: Glowbal + * Module for adjusting the medical menu settings + * + * Arguments: + * 0: The module logic + * 1: units + * 2: activated + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +params ["_logic", "_units", "_activated"]; + +if !(_activated) exitWith {}; + +[_logic, QGVAR(allow), "allow"] call EFUNC(common,readSettingFromModule); diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index cde9cc458d..45da857c69 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -26,7 +26,12 @@ Open Medical Menu - + + Medical Menu Settings + + + Configure the usage of the Medical Menu + EXAMINE & TREATMENT ОСМОТР И ЛЕЧЕНИЕ From c0562aaf6c99f6b0ad212dbb27813ec93881fc7c Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 8 Aug 2015 20:31:19 +0200 Subject: [PATCH 76/78] clean up debug messages --- addons/optionsmenu/XEH_postInit.sqf | 1 - .../optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf | 2 -- 2 files changed, 3 deletions(-) diff --git a/addons/optionsmenu/XEH_postInit.sqf b/addons/optionsmenu/XEH_postInit.sqf index 65e0f9fde2..a981c34e0b 100644 --- a/addons/optionsmenu/XEH_postInit.sqf +++ b/addons/optionsmenu/XEH_postInit.sqf @@ -6,7 +6,6 @@ { if !(_x select 8 in GVAR(categories)) then { GVAR(categories) pushback (_x select 8); - diag_log format["Category: %1", _x]; }; }foreach EGVAR(common,settings); }] call EFUNC(common,addEventHandler); diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf index e1fecd7a1e..4a6648878a 100644 --- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf +++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf @@ -27,8 +27,6 @@ lbclear _ctrlList; _selectedCategory = GVAR(categories) select GVAR(currentCategorySelection); -systemChat format["_selectedCategory: %1", _selectedCategory]; - switch (GVAR(optionMenu_openTab)) do { case (MENU_TAB_SERVER_OPTIONS): { From 3664afcf908225fc1a944d5c10b7321be7522d27 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 8 Aug 2015 13:42:05 -0500 Subject: [PATCH 77/78] search_privates.py: use new params command --- tools/search_privates.py | 2 +- tools/search_unused_privates.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/search_privates.py b/tools/search_privates.py index 37320214fc..207c6403e0 100644 --- a/tools/search_privates.py +++ b/tools/search_privates.py @@ -21,7 +21,7 @@ def get_private_declare(content): priv_split = sorted(set(priv_split)) priv_declared += priv_split; - srch = re.compile('PARAMS_[0-9].*|EXPLODE_[0-9]_PVT.*|DEFAULT_PARAM.*|KEY_PARAM.*|IGNORE_PRIVATE_WARNING.*') + srch = re.compile('params \[.*\]|PARAMS_[0-9].*|EXPLODE_[0-9]_PVT.*|DEFAULT_PARAM.*|KEY_PARAM.*|IGNORE_PRIVATE_WARNING.*') priv_srch_declared = srch.findall(content) priv_srch_declared = sorted(set(priv_srch_declared)) diff --git a/tools/search_unused_privates.py b/tools/search_unused_privates.py index b9bdd880ce..72a0dadcea 100644 --- a/tools/search_unused_privates.py +++ b/tools/search_unused_privates.py @@ -21,7 +21,7 @@ def get_private_declare(content): priv_split = sorted(set(priv_split)) priv_declared += priv_split; - srch = re.compile('PARAMS_[0-9].*|EXPLODE_[0-9]_PVT.*|DEFAULT_PARAM.*|KEY_PARAM.*|IGNORE_PRIVATE_WARNING.*') + srch = re.compile('params \[.*\]|PARAMS_[0-9].*|EXPLODE_[0-9]_PVT.*|DEFAULT_PARAM.*|KEY_PARAM.*|IGNORE_PRIVATE_WARNING.*') priv_srch_declared = srch.findall(content) priv_srch_declared = sorted(set(priv_srch_declared)) From d5a3c66b89ec430e8fc781ccabe3435dec04b160 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 8 Aug 2015 14:17:03 -0500 Subject: [PATCH 78/78] Minor Spelllings Fixes --- addons/scopes/functions/fnc_firedEH.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index b4441df839..5ede2d2cf8 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -20,7 +20,7 @@ private ["_adjustment", "_weaponIndex", "_zeroing", "_adjustment"]; -prams ["_unit", "", "", "", "", "", "_projectile"]; +params ["_unit", "", "", "", "", "", "_projectile"]; if (!([_unit] call EFUNC(common,isPlayer))) exitWith {}; @@ -36,6 +36,6 @@ if (_zeroing isEqualTo [0, 0, 0]) exitWith {}; // Convert zeroing from mils to degrees _zeroing = _zeroing vectorMultiply 0.05625; -_zeroing params ["_elevation", "_windage", "_zero"] +_zeroing params ["_elevation", "_windage", "_zero"]; [_projectile, _elevation, _elevation + _zero, 0] call EFUNC(common,changeProjectileDirection);