/*
 * Author: commy2
 *
 * Returns all hitpoints of any vehicle. Non unique hitpoints in turrets are ignored.
 *
 * Arguments:
 * 0: A vehicle, not the classname (Object)
 *
 * Return Value:
 * The hitpoints (Array)
 */
#include "script_component.hpp"

private ["_config", "_hitpoints", "_i"];

PARAMS_1(_vehicle);

_config = configFile >> "CfgVehicles" >> typeOf _vehicle;

_hitpoints = [];

// get all classes that can contain hitpoints
private "_hitpointClasses";
_hitpointClasses = [_config >> "HitPoints"];
{
    private "_class";
    _class = ([_config, _x] call FUNC(getTurretConfigPath)) >> "HitPoints";

    if (isClass _class) then {
        _hitpointClasses pushBack _class;
    };

} forEach allTurrets _vehicle;

// iterate through all classes with hitpoints and their parents
{
    private "_class";
    _class = _x;

    while {isClass _class} do {

        for "_i" from 0 to (count _class - 1) do {
            private "_entry";
            _entry = configName (_class select _i);

            if (!(_entry in _hitpoints) && {!isNil {_vehicle getHitPointDamage _entry}}) then {
                _hitpoints pushBack _entry;
            };
        };

        _class = inheritsFrom _class;
    };

} forEach _hitpointClasses;

_hitpoints