Merge branch 'main' into bug/update-flag-exclusions

This commit is contained in:
2024-01-07 21:31:07 -06:00
4 changed files with 96 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
// Enable/Disable the script
if (isNil "milsim_client_medState3D_enabled") then {
milsim_client_medState3D_enabled = true;
};
// List of units to draw icons for
milsim_client_medState3D_drawTargets = [];
// Range to draw icons for
milsim_client_medState3D_drawRange = 10;
// ACE Triage colors, for consistency across UIs and functions
// #define TRIAGE_COLOR_NONE 0.5, 0.5, 0.5, 0.1
// #define TRIAGE_COLOR_MINIMAL 0, 0.5, 0, 0.9
// #define TRIAGE_COLOR_DELAYED 1, 0.84, 0, 0.9
// #define TRIAGE_COLOR_IMMEDIATE 1, 0, 0, 0.9
// #define TRIAGE_COLOR_DECEASED 0, 0, 0, 0.9
// ACE Triage colors, for consistency across UIs and functions
milsim_client_medState3D_colors = [
[0, 0.5, 0, 0.9], // TRIAGE_COLOR_MINIMAL
[1, 0.84, 0, 0.9], // TRIAGE_COLOR_DELAYED
[1, 0, 0, 0.9], // TRIAGE_COLOR_IMMEDIATE
[0, 0, 0, 0.9], // TRIAGE_COLOR_DECEASED
[0.5, 0.5, 0.5, 0] // TRIAGE_COLOR_NONE
];
// Per-frame handler to draw icons
milsim_client_medState3D_pfh = [
{
// if disabled, skip processing
if (!milsim_client_medState3D_enabled) exitWith {};
// if no targets, skip processing
if (count milsim_client_medState3D_drawTargets == 0) exitWith {};
if !([player] call ace_medical_treatment_fnc_isMedic) exitWith {};
{
// distance within 10 meters
if (player distance _x > milsim_client_medState3D_drawRange) then {continue};
// check unit not null, not conscious, and not in a vehicle
if (
isNull _x ||
!(_x getVariable ["ACE_isUnconscious", false]) ||
!isNull (objectParent _x)
) then {continue};
// color based on triage level
private _color = milsim_client_medState3D_colors select ((_x getVariable ["ace_medical_triageLevel", -1]) -1);
// draw position, slightly above the prone unit
private _drawPos = (visiblePosition _x) vectorAdd [0, 0, 0.5];
// draw icon
drawIcon3D [
"\A3\ui_f\data\map\markers\military\dot_CA.paa", // icon texture
_color, // color
_drawPos, // position AGL
1, // width
1, // height
0 // angle
// further params optional, omitted
];
} forEach milsim_client_medState3D_drawTargets;
},
0,
[]
] call CBA_fnc_addPerFrameHandler;
[
"Man",
"InitPost",
{
params ["_unit"];
milsim_client_medState3D_drawTargets pushBack _unit;
},
true,
[],
true
] call CBA_fnc_addClassEventHandler;