ACE3/addons/repair/dev/draw_showRepairInfo.sqf

71 lines
2.9 KiB
Plaintext
Raw Normal View History

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