define parent classes to apply handler to

This commit is contained in:
2023-12-29 21:21:19 -08:00
parent da3b45ccda
commit 15f7225a5f

View File

@@ -80,111 +80,118 @@ milsim_vehicleflag_options = [
]; ];
private _appliedParentClasses = [
"LandVehicle",
"Helicopter"
];
["AllVehicles", "InitPost", { {
private _flagActionID = "SetVehicleFlag"; private _parentClass = _x;
private _flagMasterAction = [ [_parentClass, "InitPost", {
_flagActionID, // id private _flagActionID = "SetVehicleFlag";
"Set Vehicle Flag", // displayed title private _flagMasterAction = [
"\A3\ui_f\data\map\markers\flags\nato_ca.paa", // flag icon _flagActionID, // id
{true}, // statement "Set Vehicle Flag", // displayed title
{true}, // condition "\A3\ui_f\data\map\markers\flags\nato_ca.paa", // flag icon
{ {true}, // statement
params ["_target", "_player", "_params"]; {true}, // condition
private _flagActionID = _params#0;
private _actions = [];
{ {
_x params ["_flagCategory", "_flagOptions"]; params ["_target", "_player", "_params"];
// diag_log format ["NewFlagCategory: %1 %2", _flagCategory, _flagOptions]; private _flagActionID = _params#0;
private _actions = [];
{
_x params ["_flagCategory", "_flagOptions"];
// diag_log format ["NewFlagCategory: %1 %2", _flagCategory, _flagOptions];
private _flagCategoryOption = [ private _flagCategoryOption = [
_flagActionID + "_" + _flagCategory, // id _flagActionID + "_" + _flagCategory, // id
_flagCategory, // displayed title _flagCategory, // displayed title
(_flagOptions#0#1) get "Texture", // flag icon (_flagOptions#0#1) get "Texture", // flag icon
{true}, // statement {true}, // statement
{
params ["_target", "_player", "_params"];
alive _target;
// true;
}, // condition
{
params ["_target", "_player", "_params"];
_params params ["_flagActionID", "_flagCategoryID", "_flagOptions"];
private _categoryOptions = [];
{ {
_x params ["_flagOptionID", "_flagOptionData"]; params ["_target", "_player", "_params"];
// diag_log format ["NewFlagOption: %1 %2", _flagOptionID, _flagOptionData]; alive _target;
private _newFlagOption = [ // true;
_flagActionID + "_" + _flagCategory + "_" + _flagOptionID, // id }, // condition
_flagOptionData get "Title", // displayed title {
_flagOptionData get "Texture", // flag icon params ["_target", "_player", "_params"];
{ _params params ["_flagActionID", "_flagCategoryID", "_flagOptions"];
params ["_target", "_player", "_params"]; private _categoryOptions = [];
_target forceFlagTexture (_params select 2); {
}, // statement _x params ["_flagOptionID", "_flagOptionData"];
{ // diag_log format ["NewFlagOption: %1 %2", _flagOptionID, _flagOptionData];
params ["_target", "_player", "_params"]; private _newFlagOption = [
alive _target; _flagActionID + "_" + _flagCategory + "_" + _flagOptionID, // id
// true; _flagOptionData get "Title", // displayed title
}, // condition _flagOptionData get "Texture", // flag icon
nil, // child code {
[_flagActionID, _flagCategoryID, getMissionPath (_flagOptionData get "Texture")], // params params ["_target", "_player", "_params"];
nil, // position _target forceFlagTexture (_params select 2);
4, // distance }, // statement
[false, false, false, false, false] // other params {
] call ace_interact_menu_fnc_createAction; params ["_target", "_player", "_params"];
_categoryOptions pushBack [_newFlagOption, [], _target]; alive _target;
} forEach _flagOptions; // true;
_categoryOptions; }, // condition
}, // child code nil, // child code
[_flagActionID, _flagCategoryID, _flagOptions], // params [_flagActionID, _flagCategoryID, getMissionPath (_flagOptionData get "Texture")], // params
nil, // position nil, // position
4, // distance 4, // distance
[false, false, false, false, false], // other params [false, false, false, false, false] // other params
nil // modifier function code ] call ace_interact_menu_fnc_createAction;
] call ace_interact_menu_fnc_createAction; _categoryOptions pushBack [_newFlagOption, [], _target];
} forEach _flagOptions;
_categoryOptions;
}, // child code
[_flagActionID, _flagCategoryID, _flagOptions], // params
nil, // position
4, // distance
[false, false, false, false, false], // other params
nil // modifier function code
] call ace_interact_menu_fnc_createAction;
_actions pushBack [_flagCategoryOption, [], _target]; _actions pushBack [_flagCategoryOption, [], _target];
} forEach milsim_vehicleflag_options; } forEach milsim_vehicleflag_options;
_actions; _actions;
}, // child code }, // child code
[_flagActionID], // params [_flagActionID], // params
nil, // position nil, // position
4, // distance 4, // distance
[false, false, false, false, false], // other params [false, false, false, false, false], // other params
nil // modifier function code nil // modifier function code
] call ace_interact_menu_fnc_createAction; ] call ace_interact_menu_fnc_createAction;
// add action to add flag // add action to add flag
[ [
(_this select 0), // object (_this select 0), // object
0, // action 0 or self-action 1 0, // action 0 or self-action 1
["ACE_MainActions"], // parent ["ACE_MainActions"], // parent
_flagMasterAction // action _flagMasterAction // action
] call ace_interact_menu_fnc_addActionToObject; ] call ace_interact_menu_fnc_addActionToObject;
// add action to remove flag
private _removeFlagAction = [
_flagActionID + "_removeflag", // id
"Remove Flag", // displayed title
"\A3\ui_f\data\map\markers\flags\nato_ca.paa", // flag icon
{
params ["_target", "_player", "_params"];
_target forceFlagTexture "";
}, // statement
{true}, // condition
nil // child code
] call ace_interact_menu_fnc_createAction;
[
(_this select 0), // object
0, // action 0 or self-action 1
["ACE_MainActions", _flagActionID], // parent
_removeFlagAction // action
] call ace_interact_menu_fnc_addActionToObject;
}, true, [], true] call CBA_fnc_addClassEventHandler;
// add action to remove flag
private _removeFlagAction = [
_flagActionID + "_removeflag", // id
"Remove Flag", // displayed title
"\A3\ui_f\data\map\markers\flags\nato_ca.paa", // flag icon
{
params ["_target", "_player", "_params"];
_target forceFlagTexture "";
}, // statement
{true}, // condition
nil // child code
] call ace_interact_menu_fnc_createAction;
[
(_this select 0), // object
0, // action 0 or self-action 1
["ACE_MainActions", _flagActionID], // parent
_removeFlagAction // action
] call ace_interact_menu_fnc_addActionToObject;
}, true, [], true] call CBA_fnc_addClassEventHandler;
} forEach _appliedParentClasses;
nil; nil;