// 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"); }];