-
Notifications
You must be signed in to change notification settings - Fork 749
Expand file tree
/
Copy pathdraw_showRepairInfo.sqf
More file actions
70 lines (59 loc) · 2.92 KB
/
draw_showRepairInfo.sqf
File metadata and controls
70 lines (59 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// PabstMirror
// [] execVM "\z\ace\addons\repair\dev\draw_showRepairInfo.sqf";
#include "..\script_component.hpp"
addMissionEventHandler ["Draw3D", {
if (isGamePaused) exitWith {};
if !((cursorObject isKindOf "Car") || (cursorObject isKindOf "Tank") || (cursorObject isKindOf "Air")) exitWith {};
private _config = configOf cursorObject;
private _hitpointPositions = getArray (_config >> QGVAR(hitpointPositions));
private _hitpointGroups = getArray (_config >> QGVAR(hitpointGroups));
(getAllHitPointsDamage cursorObject) params [["_hitPoints", []], ["_hitSelections", []]];
([cursorObject] call EFUNC(common,getWheelHitPointsWithSelections)) params ["_wheelHitPoints", "_wheelHitSelections"];
private _output = [];
{
private _selection = _x;
private _hitpoint = _hitPoints select _forEachIndex;
if ((_selection != "") && {_hitPoint != ""}) then {
if ("glass" in (toLowerANSI _hitPoint)) exitWith {};
private _info = "";
private _color = [1,0,0,1];
if (_selection in _wheelHitSelections) then {
_info = _info + "[Wheel]";
_color = [0,1,0,1];
};
if (!((getText (_config>> "HitPoints" >> _hitpoint >> "depends")) in ["", "0"])) then {
_info = _info + format ["[depends: %1]", getText (_config>> "HitPoints" >> _hitpoint >> "depends")];
_color = [0,0,1,1]
};
private _position = cursorObject selectionPosition [_selection, "HitPoints"];
{
_x params ["_hit", "_pos"];
if (_hitpoint == _hit) exitWith {
_info = _info + format ["[hitPos: %1]", _pos];
if (_pos isEqualType []) exitWith {
_position = _pos;
};
if (_pos isEqualType "") exitWith {
_position = cursorObject selectionPosition [_pos, "HitPoints"];
};
};
} forEach _hitpointPositions;
private _parentHitpoint = "";
{
private _xParent = _x select 0;
{
if (_hitpoint == _x) exitWith {
_info = _info + format ["[Parent: %1]", _xParent];
_parentHitpoint = _xParent;
};
} forEach (_x select 1);
} forEach _hitpointGroups;
if (_parentHitpoint == "") then {
drawIcon3D ["", _color, (cursorObject modelToWorld _position), 0.5, 0.5, 0, format ["%1 [%2]", _hitpoint, _selection], 0.5, 0.025, "TahomaB"];
};
_output pushBack format ["%1: %2[%3] = %4", _forEachIndex, _hitPoint, _selection, cursorObject getHitIndex _forEachIndex];
_output pushBack format ["- %1 -",_info];
};
} forEach _hitSelections;
hintSilent (_output joinString "\n");
}];