ACE3/addons/medical_gui/functions/fnc_addTreatmentActions.sqf
mharis001 8d2bba4b35
Rewrite Medical GUI (#6831)
* Add a macro for the bloodloss scaling factor

* Adjust bloodloss threshold for red icon

* Remove bloodloss color scaling factor

The issue is actually the other way round, the factor of 20 would
instantly make bodyparts red on taking a wound.

* Implemet 10 color steps provided by ShackTac

This replaces the old method of colouring the interaction menu icons
and body image selections with a new method that has 10 distinct color
steps (matching across the icons and the body image).

* Use macros for constants

* Implement blue damage colouring

This re-adds visualisation for colouring based on damage. The case where
a limb has a tourniquet will hopefully be handled by an overlayed icon.

* Tidy up file structure

* Move patient information display to medical_ui

* Make common colour conversion code into functions

* Add tourniquet icon overlay to body image

* Fix mispelling I forgot to commit

* Update icon paths to new white cross icon

* Clean mess after rebase

* Add new medical menu gui

* Add updating injury list and body image

* Add updating treatment category buttons

* Update onMenuClose function

* Delete unused functions

* Add action buttons and triage card to menu

* Move medical menu PFH to separate function

* Move setTriageStatus to treatment

* Add triage select dropdown

* Add toggle button action

* Fix mouse moving randomly when opening

* Add logs list update and remove unused functions

* Hide tourniquet icons by default

* Remove CfgInGameUI (already in feedback)

* Update patient info display

* Update triage card display

* Add settings to control interact menu actions

* Cleanup files/paths

* Move triage status update to common function

* Add icons for interact menu actions

* Modify icon color for interact menu actions

* Update canOpenMenu for new setting

* Hide pain information for unconscious

* Stringtable cleanup

* Use switch for pain text

* Change minor triage status to minimal

* Fix injury list to use new stringtable entry names

* Fix medical actions check when disabled

* Skip distance check in same vehicle

* More cleanup

* Fix CI error

* Requested changes

* Fix INJURIES string

* Fix include after comment block

* Fix missing ;

Co-Authored-By: mharis001 <34453221+mharis001@users.noreply.github.com>
2019-03-24 18:17:48 -04:00

66 lines
2.2 KiB
Plaintext

#include "script_component.hpp"
/*
* Author: BaerMitUmlaut, mharis001
* Creates actions for treatments from config and adds them to the interaction menu.
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* [] call ace_medical_gui_fnc_addInteractActions
*
* Public: No
*/
private _actionsConfig = configFile >> QEGVAR(medical_treatment,actions);
private _actionPaths = ["ACE_Head", "ACE_Torso", "ACE_ArmLeft", "ACE_ArmRight", "ACE_LegLeft", "ACE_LegRight"];
private _fnc_statement = {
params ["_target", "_player", "_args"];
_args params ["_bodyPart", "_treatmentName"];
[_player, _target, _bodyPart, _treatmentName] call EFUNC(medical_treatment,treatment);
};
private _fnc_condition = {
params ["_target", "_player", "_args"];
_args params ["_bodyPart", "_treatmentName"];
[_player, _target, _bodyPart, _treatmentName] call EFUNC(medical_treatment,canTreatCached);
};
{
private _configName = configName _x;
private _actionName = format [QGVAR(_%1), _configName];
private _displayName = getText (_x >> "displayName");
private _icon = getText (_x >> "icon");
private _allowedBodyParts = getArray (_x >> "allowedSelections") apply {toLower _x};
if (_allowedBodyParts isEqualTo ["all"]) then {
_allowedBodyParts = ALL_BODY_PARTS apply {toLower _x};
};
{
private _bodyPart = _x;
private _actionPath = _actionPaths select (ALL_BODY_PARTS find toLower _bodyPart);
private _action = [
_actionName,
_displayName,
_icon,
_fnc_statement,
_fnc_condition,
{},
[_bodyPart, _configName],
{[0, 0, 0]},
2,
[false, true, false, false, false]
] call EFUNC(interact_menu,createAction);
["CAManBase", 0, [_actionPath], _action, true] call EFUNC(interact_menu,addActionToClass);
["CAManBase", 0, ["ACE_MainActions", "ACE_Medical_Radial", _actionPath], _action, true] call EFUNC(interact_menu,addActionToClass);
["CAManBase", 1, ["ACE_SelfActions", "ACE_Medical", _actionPath], _action, true] call EFUNC(interact_menu,addActionToClass);
} forEach _allowedBodyParts;
} forEach configProperties [_actionsConfig, "isClass _x"];