ACE3/addons/sitting/functions/fnc_addSitActions.sqf
jonpas 6ca9d59443
Merge ACEX (#8415)
* Merge ACEX - first attempt
Backwards compatibility with XGVAR set of macros used on all settings and config entries
Public API functions not taken into account yet, many other things probably still missed

* Resolve issues

* Switch to addSetting, backward compatible CfgPatches, missed XGVAR.

* Remove unnecessary backwards compat

* Convert ACEX Categorised settings to initSettings / Fix Intel items magazine

* Apply suggestions from code review

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Remove maintainers from merged ACEX components

* Cleanup unused module and faction classes

* Sitting - Add more object configs by @Dystopian
https://github.com/acemod/ACEX/pull/255

* Translations - Add Japanese by @classicarma
https://github.com/acemod/ACEX/pull/259

* Kill Tracker - Add killtracker.inc public include file by @Freddo3000"
https://github.com/acemod/ACEX/pull/251

* Add ACEX authors and sort authors file

* acex - final tweaks (#8513)

* acex - handle old funcs

* replace thirst/hunger setvars to acex naming

fix macro

Revert "fix macro"

This reverts commit d807e5e804c43916eaa42d34a89af94c6d9a48ad.

Revert "replace thirst/hunger setvars to acex naming"

This reverts commit bafc607884932d6e339daedc7c22e25dddbdd868.

x

Co-authored-by: TyroneMF <TyroneMF@hotmail.com>
Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2021-10-14 10:46:43 -05:00

72 lines
1.8 KiB
Plaintext

#include "script_component.hpp"
/*
* Author: Jonpas
* Adds sit actions.
*
* Arguments:
* 0: Seat <OBJECT/STRING>
*
* Return Value:
* None
*
* Example:
* [cursorObject] call ace_sitting_fnc_addSitActions
*
* Public: No
*/
params ["_seat"];
private _type = _seat;
if (_seat isEqualType objNull) then {
_type = typeOf _seat;
};
private _configFile = configFile >> "CfgVehicles" >> _type;
// Exit if sitting disabled or the object is not specified as a seat
if (!XGVAR(enable) || {getNumber (_configFile >> QGVAR(canSit)) != 1}) exitWith {};
// Exit if class already initialized
if (_type in GVAR(initializedClasses)) exitWith {};
GVAR(initializedClasses) pushBack _type;
TRACE_1("Adding Sit Action",_type);
private _sitPosition = getArray (_configFile >> QGVAR(sitPosition));
private _interactPosition = getArray (_configFile >> QGVAR(interactPosition));
if (count _sitPosition != count _interactPosition) exitWith {
WARNING_1("Invalid sitting configuration of %1!",_type);
};
if !((_sitPosition select 0) isEqualType []) then {
_sitPosition = [_sitPosition];
_interactPosition = [_interactPosition];
};
{
private _menuPosition = [0,0,0];
private _menuType = ["ACE_MainActions"];
if (count _interactPosition >= _forEachIndex) then {
_menuPosition = _interactPosition select _forEachIndex;
_menuType = [];
};
TRACE_3("Menu Position",_menuPosition,_menuType,_forEachIndex);
private _sitAction = [
format [QGVAR(Sit_%1), _forEachIndex],
LLSTRING(Sit),
QUOTE(PATHTOF(UI\sit_ca.paa)),
{_this call FUNC(sit)},
{_this call FUNC(canSit)},
{},
_forEachIndex,
_menuPosition,
1.5
] call EFUNC(interact_menu,createAction);
[_type, 0, _menuType, _sitAction] call EFUNC(interact_menu,addActionToClass);
} forEach _sitPosition;