ACE3/addons/pylons/XEH_postInit.sqf
Ozan Eğitmen 1b86063ade Add Pylons Component (#5517)
* Initial commit

* Change order

* ace-ify functions

* Add function headers, tweak onPylonMirror function

* Finish localization

* Fix trivial idc collision

* Styling

* Add self as author

* Add interaction for the dialog

* Add settings to enable menu and change behaviour

* Add strings

* Move changes into pylons component

* Progress

* Only one function left!

* Fix issues with overlapping players, Use LINKFUNC

* Add progress bar

* I need to switch branches

* Remove old pylon weapons from aircraft

* Explicitly set new pylon's ammo to 0

* Replace magic numbers with ID list

* Align controls properly

* Remove space before eol

* Add ability to add/remove FRIES

* 🐛 Whoops

* Fix logic errors

* Value of 1 means helicopter has built-in FRIES

* Add pilot/gunner switch button

Working on those buttons also helped me improve both the static and
on-the-fly (pun intended) parts of the dialog.

* Add quick zeus module

* Add a way to retrieve scripted pylon turrets

Not entirely reliable, but if used in both rearm and pylons, missions
that only use ace will work perfectly.

* Use getNumber default

* Use common's getPylonTurret

* Make dialog close on apply for zeus

* Handle UI Scaling better

* Prevent progressBar from failing in zeus

* Remove unnecessary stringtable key
2017-10-11 14:05:54 -05:00

47 lines
2.0 KiB
Plaintext

#include "script_component.hpp"
["ace_settingsInitialized", {
if (!GVAR(enabled)) exitWith {};
private _filter = "isClass (_x >> 'Components' >> 'TransportPylonsComponent') && {(getNumber (_x >> 'scope')) > 0}";
GVAR(aircraftWithPylons) = (_filter configClasses (configFile >> "CfgVehicles")) apply {configName _x};
{
[_x, "init", {
params ["_aircraft"];
private _loadoutAction = [
QGVAR(loadoutAction),
localize LSTRING(ConfigurePylons),
"",
{[_target] call FUNC(showDialog)},
{
private _vehicles = _target nearObjects ["LandVehicle", GVAR(searchDistance) + 10];
private _filter = ["transportAmmo", QEGVAR(rearm,defaultSupply)] select (["ace_rearm"] call EFUNC(common,isModLoaded));
private _rearmVehicles = {(getNumber (configFile >> "CfgVehicles" >> typeOf _x >> _filter)) > 0} count _vehicles;
(_rearmVehicles > 0 && {[ace_player, _target] call FUNC(canConfigurePylons)})
}
] call EFUNC(interact_menu,createAction);
[_aircraft, 0, ["ACE_MainActions"], _loadoutAction] call EFUNC(interact_menu,addActionToObject);
}, false, [], true] call CBA_fnc_addClassEventHandler;
} forEach GVAR(aircraftWithPylons);
[QGVAR(setPylonLoadOutEvent), {
params ["_aircraft", "_pylonIndex", "_pylon", "_turret"];
_aircraft setPylonLoadOut [_pylonIndex, _pylon, false, _turret];
}] call CBA_fnc_addEventHandler;
[QGVAR(setAmmoOnPylonEvent), {
params ["_aircraft", "_pylonIndex", "_count"];
_aircraft setAmmoOnPylon [_pylonIndex, _count];
}] call CBA_fnc_addEventHandler;
if (isServer) then {
GVAR(currentAircraftNamespace) = true call CBA_fnc_createNamespace;
publicVariable QGVAR(currentAircraftNamespace);
addMissionEventHandler ["HandleDisconnect", LINKFUNC(handleDisconnect)];
};
}] call CBA_fnc_addEventHandler;