#include "script_component.hpp"

#include "XEH_PREP.hpp"

if (!hasInterface) exitWith {};

private _replaceTerrainClasses = QUOTE(
    getNumber (_x >> QQGVAR(replaceTerrainObject)) > 0
    && {getNumber (_x >> 'scope') == 2}
) configClasses (configFile >> "CfgVehicles");

private _cacheReplaceTerrainModels = createHashMap;
{
    private _model = toLowerANSI getText (_x >> "model");
    if (_model select [0, 1] == "\") then {
        _model = _model select [1];
    };
    if ((_model select [count _model - 4]) != ".p3d") then {
        _model = _model + ".p3d"
    };
    if (_model in _cacheReplaceTerrainModels) then {continue};
    _cacheReplaceTerrainModels set [_model, configName _x];
} forEach _replaceTerrainClasses;

uiNamespace setVariable [QGVAR(cacheReplaceTerrainModels), compileFinal str _cacheReplaceTerrainModels];


// Cache classes with anim actions
private _animActionsClasses = (QUOTE(isClass (_x >> QQGVAR(anims)) && {!isClass (inheritsFrom _x >> QQGVAR(anims))}) configClasses (configFile >> "CfgVehicles"));
_animActionsClasses = _animActionsClasses apply { configName _x };
_animActionsClasses = _animActionsClasses select {
    private _class = _x;
    (_animActionsClasses findIf {(_class != _x) && {_class isKindOf _x}}) == -1  // filter classes that already have a parent in the list
};
uiNamespace setVariable [QGVAR(animActionsClasses), compileFinal (_animActionsClasses createHashMapFromArray [])];