Move SelfActions from postInit to config (#6791)

* Move zeus SelfActions to config

* Port CBA PR #1048

* Move Land_Camping_Light_off_F TurnOn action to config

* Move createModule function to script func

* Update addons/zeus/functions/fnc_canCreateModule.sqf

Co-Authored-By: dedmen <dedmen@users.noreply.github.com>

* Apply suggestions from code review

Co-Authored-By: dedmen <dedmen@users.noreply.github.com>

* Teaching it a lesson about spacing

* Update CBA: script_macros_common.hpp

* Just change admin in cba macro
This commit is contained in:
Dedmen Miller 2019-02-24 20:36:50 +01:00 committed by PabstMirror
parent 9e609b3394
commit 48f45ae27a
7 changed files with 77 additions and 58 deletions

View File

@ -706,6 +706,30 @@ class CfgVehicles {
}; };
}; };
class Land_Camping_Light_off_F: ThingX {
class ACE_Actions {
class ACE_MainActions {
displayName = CSTRING(MainAction);
distance = 2;
// to make "Camping Lantern (Off)" be turned on we replace it with "Camping Lantern"
class GVAR(TurnOn) {
displayName = CSTRING(TurnOn);
icon = "\A3\Ui_f\data\IGUI\Cfg\VehicleToggles\LightsIconOn_ca.paa";
condition = QUOTE(alive _target);
statement = QUOTE(\
private _position = getPosATL _target;\
private _vectorDirAndUp = [ARR_2(vectorDir _target,vectorUp _target)];\
deleteVehicle _target;\
private _newLamp = 'Land_Camping_Light_F' createVehicle [ARR_3(0,0,0)];\
_newLamp setPosATL _position;\
_newLamp setVectorDirAndUp _vectorDirAndUp;\
);
};
};
};
};
class RoadCone_F: ThingX { class RoadCone_F: ThingX {
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {

View File

@ -135,21 +135,3 @@ GVAR(isOpeningDoor) = false;
}]; }];
}; };
}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler;
// to make "Camping Lantern (Off)" be turned on we replace it with "Camping Lantern"
private _action = [
QGVAR(TurnOn),
localize LSTRING(TurnOn),
"\A3\Ui_f\data\IGUI\Cfg\VehicleToggles\LightsIconOn_ca.paa",
{
private _position = getPosATL _target;
private _vectorDirAndUp = [vectorDir _target, vectorUp _target];
deleteVehicle _target;
private _newLamp = "Land_Camping_Light_F" createVehicle [0,0,0];
_newLamp setPosATL _position;
_newLamp setVectorDirAndUp _vectorDirAndUp;
},
{alive _target}
] call EFUNC(interact_menu,createAction);
["Land_Camping_Light_off_F", 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToClass);

View File

@ -324,4 +324,27 @@ class CfgVehicles {
class ModuleArsenal_F: Module_F { class ModuleArsenal_F: Module_F {
function=QFUNC(bi_moduleArsenal); function=QFUNC(bi_moduleArsenal);
}; };
class Man;
class CAManBase: Man {
class ACE_SelfActions {
class GVAR(create) {
displayName = CSTRING(CreateZeus);
condition = QUOTE(call FUNC(canCreateModule));
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"};
//Set GVAR(zeus) to null first to disable the action through the isNil check
statement = QUOTE(GVAR(zeus) = objNull; [ARR_2(QQGVAR(createZeus), ACE_player)] call CBA_fnc_serverEvent);
showDisabled = 1;
icon = "\A3\Ui_F_Curator\Data\Logos\arma3_curator_eye_32_ca.paa";
};
class GVAR(delete) {
displayName = CSTRING(DeleteZeus);
condition = QUOTE(!(isNil QQGVAR(zeus) || {isNull GVAR(zeus)}));
exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting", "isNotOnLadder", "isNotRefueling"};
statement = QUOTE(deleteVehicle GVAR(zeus); GVAR(zeus) = nil);
showDisabled = 1;
icon = "\A3\Ui_F_Curator\Data\Logos\arma3_curator_eye_32_ca.paa";
};
};
};
}; };

View File

@ -5,6 +5,7 @@ PREP(bi_moduleCurator);
PREP(bi_moduleMine); PREP(bi_moduleMine);
PREP(bi_moduleProjectile); PREP(bi_moduleProjectile);
PREP(bi_moduleRemoteControl); PREP(bi_moduleRemoteControl);
PREP(canCreateModule);
PREP(getModuleDestination); PREP(getModuleDestination);
PREP(handleZeusUnitAssigned); PREP(handleZeusUnitAssigned);
PREP(moduleAddArsenal); PREP(moduleAddArsenal);

View File

@ -81,42 +81,4 @@ if (hasInterface) then {
GVAR(zeus) = _zeus; GVAR(zeus) = _zeus;
[localize "str_a3_cfgvehicles_moduletasksetstate_f_arguments_state_values_created_0"] call EFUNC(common,displayTextStructured); [localize "str_a3_cfgvehicles_moduletasksetstate_f_arguments_state_values_created_0"] call EFUNC(common,displayTextStructured);
}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler;
[QEGVAR(interact_menu,newControllableObject), {
params ["_type"];
if (!(_type isKindOf "CAManBase")) exitWith {};
TRACE_1("Adding zeus actions",_type);
private _action = [
QGVAR(create),
LLSTRING(CreateZeus),
"\A3\Ui_F_Curator\Data\Logos\arma3_curator_eye_32_ca.paa",
{
GVAR(zeus) = objNull; // to disable menu while zeus is being created
[QGVAR(createZeus), ACE_player] call CBA_fnc_serverEvent;
},
{
switch (GVAR(canCreateZeus)) do {
case CAN_CREATE_ADMIN: {isServer || {IS_ADMIN_LOGGED}};
case CAN_CREATE_CONSOLE: {call BIS_fnc_isDebugConsoleAllowed};
case CAN_CREATE_ALL: {true};
default {false};
}
&& {isNil QGVAR(zeus)}
}
] call EFUNC(interact_menu,createAction);
[_type, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToClass);
_action = [
QGVAR(delete),
LLSTRING(DeleteZeus),
"\A3\Ui_F_Curator\Data\Logos\arma3_curator_eye_32_ca.paa",
{
deleteVehicle GVAR(zeus);
GVAR(zeus) = nil;
},
{!(isNil QGVAR(zeus) || {isNull GVAR(zeus)})}
] call EFUNC(interact_menu,createAction);
[_type, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToClass);
}] call CBA_fnc_addEventHandler;
}; };

View File

@ -0,0 +1,25 @@
#include "script_component.hpp"
/*
* Author: Dystopian
* Check whether local player is currently allowed to create a Zeus Module
*
* Arguments:
* None
*
* Return Value:
* Allowed to create module <BOOL>
*
* Example:
* call ace_zeus_fnc_canCreateModule
*
* Public: No
*/
isNil QQGVAR(zeus) && {
switch (GVAR(canCreateZeus)) do {
case CAN_CREATE_ADMIN: {isServer || {IS_ADMIN_LOGGED}};
case CAN_CREATE_CONSOLE: {call BIS_fnc_isDebugConsoleAllowed};
case CAN_CREATE_ALL: {true};
default {false};
}
}

View File

@ -1707,7 +1707,8 @@ Example:
Author: Author:
commy2 commy2
------------------------------------------- */ ------------------------------------------- */
#define IS_ADMIN serverCommandAvailable "#kick" #define IS_ADMIN_SYS(x) x##kick
#define IS_ADMIN serverCommandAvailable 'IS_ADMIN_SYS(#)'
/* ------------------------------------------- /* -------------------------------------------
Macro: IS_ADMIN_LOGGED Macro: IS_ADMIN_LOGGED
@ -1727,7 +1728,8 @@ Example:
Author: Author:
commy2 commy2
------------------------------------------- */ ------------------------------------------- */
#define IS_ADMIN_LOGGED serverCommandAvailable "#shutdown" #define IS_ADMIN_LOGGED_SYS(x) x##shutdown
#define IS_ADMIN_LOGGED serverCommandAvailable 'IS_ADMIN_LOGGED_SYS(#)'
/* ------------------------------------------- /* -------------------------------------------
Macro: FILE_EXISTS Macro: FILE_EXISTS