mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
First iteration on implementing Dslyecxi's ST Map Gestures
This commit is contained in:
parent
2b3c936e99
commit
a38cdda8e3
1
addons/map_gestures/$PBOPREFIX$
Normal file
1
addons/map_gestures/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
|||||||
|
z\ace\addons\map_gestures
|
50
addons/map_gestures/ACE_Settings.hpp
Normal file
50
addons/map_gestures/ACE_Settings.hpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
class ACE_Settings {
|
||||||
|
class GVAR(enabled) {
|
||||||
|
value = 1;
|
||||||
|
typeName = "BOOL";
|
||||||
|
displayName = CSTRING(enabled_displayName);
|
||||||
|
description = CSTRING(enabled_description);
|
||||||
|
};
|
||||||
|
class GVAR(maxRange) {
|
||||||
|
value = 7;
|
||||||
|
typeName = "SCALAR";
|
||||||
|
displayName = CSTRING(maxRange_displayName);
|
||||||
|
description = CSTRING(maxRange_description);
|
||||||
|
};
|
||||||
|
class GVAR(interval) {
|
||||||
|
value = 0.03;
|
||||||
|
typeName = "SCALAR";
|
||||||
|
displayName = CSTRING(interval_displayName);
|
||||||
|
description = CSTRING(interval_description);
|
||||||
|
};
|
||||||
|
class GVAR(defaultLeadColor) {
|
||||||
|
value[] = {1, 0.88, 0, 0.95};
|
||||||
|
typeName = "COLOR";
|
||||||
|
displayName = CSTRING(defaultLeadColor_displayName);
|
||||||
|
description = CSTRING(defaultLeadColor_description);
|
||||||
|
};
|
||||||
|
class GVAR(defaultColor) {
|
||||||
|
value[] = {1, 0.88, 0, 0.7};
|
||||||
|
typeName = "COLOR";
|
||||||
|
displayName = CSTRING(defaultColor_displayName);
|
||||||
|
description = CSTRING(defaultColor_description);
|
||||||
|
};
|
||||||
|
class GVAR(GroupColorConfigurations) {
|
||||||
|
value[] = {};
|
||||||
|
typeName = "ARRAY";
|
||||||
|
displayName = CSTRING(GroupColorConfigurations_displayName);
|
||||||
|
description = CSTRING(GroupColorConfigurations_description);
|
||||||
|
};
|
||||||
|
class GVAR(GroupColorConfigurationsGroups) {
|
||||||
|
value[] = {};
|
||||||
|
typeName = "ARRAY";
|
||||||
|
displayName = CSTRING(GroupColorConfigurationsGroups_displayName);
|
||||||
|
description = CSTRING(GroupColorConfigurationsGroups_description);
|
||||||
|
};
|
||||||
|
class GVAR(GroupColorConfigurationsGroupIndex) {
|
||||||
|
value[] = {};
|
||||||
|
typeName = "ARRAY";
|
||||||
|
displayName = CSTRING(GroupColorConfigurationsGroupIndex_displayName);
|
||||||
|
description = CSTRING(GroupColorConfigurationsGroupIndex_description);
|
||||||
|
};
|
||||||
|
};
|
11
addons/map_gestures/CfgEventHandlers.hpp
Normal file
11
addons/map_gestures/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
class Extended_PreInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_PostInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||||
|
};
|
||||||
|
};
|
64
addons/map_gestures/CfgVehicles.hpp
Normal file
64
addons/map_gestures/CfgVehicles.hpp
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
class CfgVehicles {
|
||||||
|
class ACE_Module;
|
||||||
|
class GVAR(moduleSettings): ACE_Module {
|
||||||
|
scope = 2;
|
||||||
|
category = "ACE";
|
||||||
|
displayName = CSTRING(moduleSettings_displayName);
|
||||||
|
function = QFUNC(moduleSettings);
|
||||||
|
isGlobal = 0;
|
||||||
|
author = ECSTRING(common,ACETeam);
|
||||||
|
class Arguments {
|
||||||
|
class enabled {
|
||||||
|
displayName = CSTRING(enabled_DisplayName);
|
||||||
|
typeName = "BOOL";
|
||||||
|
defaultValue = 1;
|
||||||
|
};
|
||||||
|
class maxRange {
|
||||||
|
displayName = CSTRING(maxRange_displayName);
|
||||||
|
description = CSTRING(maxRange_description);
|
||||||
|
typeName = "NUMBER";
|
||||||
|
defaultValue = 4;
|
||||||
|
};
|
||||||
|
class interval {
|
||||||
|
displayName = CSTRING(interval_displayName);
|
||||||
|
description = CSTRING(interval_description);
|
||||||
|
typeName = "NUMBER";
|
||||||
|
defaultValue = 0.03;
|
||||||
|
};
|
||||||
|
class defaultLeadColor {
|
||||||
|
displayName = CSTRING(defaultLeadColor_displayName);
|
||||||
|
description = CSTRING(defaultLeadColor_description);
|
||||||
|
typeName = "STRING";
|
||||||
|
defaultValue = "0,0,0,0";
|
||||||
|
};
|
||||||
|
class defaultColor {
|
||||||
|
displayName = CSTRING(defaultColor_displayName);
|
||||||
|
description = CSTRING(defaultColor_description);
|
||||||
|
typeName = "STRING";
|
||||||
|
defaultValue = "0,0,0,0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class GVAR(moduleGroupSettings): ACE_Module {
|
||||||
|
scope = 2;
|
||||||
|
category = "ACE";
|
||||||
|
displayName = CSTRING(moduleGroupSettings_displayName);
|
||||||
|
function = QFUNC(moduleGroupSettings);
|
||||||
|
isGlobal = 0;
|
||||||
|
author = ECSTRING(common,ACETeam);
|
||||||
|
class Arguments {
|
||||||
|
class leadColor {
|
||||||
|
displayName = CSTRING(leadColor_displayName);
|
||||||
|
description = CSTRING(leadColor_description);
|
||||||
|
typeName = "STRING";
|
||||||
|
defaultValue = "0,0,0,0";
|
||||||
|
};
|
||||||
|
class color {
|
||||||
|
displayName = CSTRING(color_displayName);
|
||||||
|
description = CSTRING(color_description);
|
||||||
|
typeName = "STRING";
|
||||||
|
defaultValue = "0,0,0,0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
16
addons/map_gestures/XEH_postInit.sqf
Normal file
16
addons/map_gestures/XEH_postInit.sqf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
["SettingsInitialized", {
|
||||||
|
[{
|
||||||
|
if (isNull (findDisplay 12)) exitWith {};
|
||||||
|
|
||||||
|
params ["", "_pfhId"];
|
||||||
|
|
||||||
|
call FUNC(receiverInit);
|
||||||
|
call FUNC(transmitterInit);
|
||||||
|
|
||||||
|
[_pfhId] call CBA_fnc_removePerFrameHandler;
|
||||||
|
}, 1, []] call CBA_fnc_addPerFrameHandler;
|
||||||
|
}] call EFUNC(common,addEventHandler);
|
17
addons/map_gestures/XEH_preInit.sqf
Normal file
17
addons/map_gestures/XEH_preInit.sqf
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP(assignClientIDOnServer);
|
||||||
|
PREP(drawMapGestures);
|
||||||
|
PREP(endTransmit);
|
||||||
|
PREP(getProximityPlayers);
|
||||||
|
PREP(initTransmit);
|
||||||
|
PREP(moduleGroupSettings);
|
||||||
|
PREP(moduleSettings);
|
||||||
|
PREP(receiverInit);
|
||||||
|
PREP(sanitizeName);
|
||||||
|
PREP(transmit);
|
||||||
|
PREP(transmitterInit);
|
||||||
|
|
||||||
|
ADDON = true;
|
17
addons/map_gestures/config.cpp
Normal file
17
addons/map_gestures/config.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {"ace_common"};
|
||||||
|
author[] = {"Dslyecxi", "MikeMatrix"};
|
||||||
|
authorUrl = "https://github.com/MikeMatrix";
|
||||||
|
VERSION_CONFIG;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "ACE_Settings.hpp"
|
||||||
|
#include "CfgEventHandlers.hpp"
|
||||||
|
#include "CfgVehicles.hpp"
|
24
addons/map_gestures/functions/fnc_assignClientIDOnServer.sqf
Normal file
24
addons/map_gestures/functions/fnc_assignClientIDOnServer.sqf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Assign readable client ID to unit on the server.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Unit name <STRING>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* ["MikeMatrix"] call ace_map_gestures_fnc_assignClientIDOnServer
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_unitName"];
|
||||||
|
|
||||||
|
{
|
||||||
|
if (name _x == _unitName) then {
|
||||||
|
_x setVariable [QGVAR(owner_id), owner _x, true];
|
||||||
|
};
|
||||||
|
} count playableUnits;
|
48
addons/map_gestures/functions/fnc_drawMapGestures.sqf
Normal file
48
addons/map_gestures/functions/fnc_drawMapGestures.sqf
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Receives and draws map gestures from nearby players.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Map Handle <CONTROL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [findDisplay 12 displayCtrl 51] call ace_map_gesutres_fnc_drawMapGestures
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!GVAR(enabled)) exitWith {};
|
||||||
|
if (!visibleMap) exitWith {};
|
||||||
|
|
||||||
|
params ["_mapHandle"];
|
||||||
|
|
||||||
|
_nearDudes = [ACE_player, GVAR(maxRange)] call FUNC(getProximityPlayers);
|
||||||
|
{
|
||||||
|
_nameSane = [name _x] call FUNC(sanitizeName);
|
||||||
|
_drawPosVariableName = format [QGVAR(%1_DrawPos), _nameSane];
|
||||||
|
if (!isNil _drawPosVariableName) then {
|
||||||
|
_pos = call compile _drawPosVariableName;
|
||||||
|
if (alive _x &&
|
||||||
|
(_pos distance [0, 0, 0]) > 50 &&
|
||||||
|
{_x getVariable QGVAR(Transmit)}) then {
|
||||||
|
_group = group _x;
|
||||||
|
_grpName = groupID _group;
|
||||||
|
|
||||||
|
_color = [1, 1, 1, 1];
|
||||||
|
if (_grpName in GVAR(GroupColorConfigurationsGroups)) then {
|
||||||
|
_grpNameIndex = GVAR(GroupColorConfigurationsGroups) find _grpName;
|
||||||
|
_color = (GVAR(GroupColorConfigurations) select (GVAR(GroupColorConfigurationsGroupIndex) select _grpNameIndex)) select (_x != leader _group);
|
||||||
|
} else {
|
||||||
|
_color = if (_x == leader _group) then {GVAR(defaultLeadColor)} else {GVAR(defaultColor)};
|
||||||
|
};
|
||||||
|
|
||||||
|
_mapHandle drawIcon ["\a3\ui_f\data\gui\cfg\Hints\icon_text\group_1_ca.paa", _color, _pos, 55, 55, 0, "", 1, 0.030, "PuristaBold", "left"];
|
||||||
|
_mapHandle drawIcon ["#(argb,8,8,3)color(0,0,0,0)", [.2,.2,.2,.3], _pos, 20, 20, 0, name _x, 0, 0.030, "PuristaBold", "left"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nil
|
||||||
|
} count _nearDudes;
|
21
addons/map_gestures/functions/fnc_endTransmit.sqf
Normal file
21
addons/map_gestures/functions/fnc_endTransmit.sqf
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Ensure that all variables used to indicate transmission are disabled.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [] call ace_map_gestures_fnc_endTransmit
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!GVAR(enabled)) exitWith {};
|
||||||
|
|
||||||
|
ACE_player setVariable [QGVAR(Transmit), false, true];
|
||||||
|
GVAR(EnableTransmit) = false;
|
23
addons/map_gestures/functions/fnc_getProximityPlayers.sqf
Normal file
23
addons/map_gestures/functions/fnc_getProximityPlayers.sqf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Returns all players in a given range and in the units vehicle.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Unit <OBJECT>
|
||||||
|
* 1: Range <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* All units in proximity <ARRAY>
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* ["example value"] call ace_module_fnc_functionName
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_unit", "_range"];
|
||||||
|
|
||||||
|
_proximityPlayers = (getPos _unit) nearEntities [["CAMAnBase"], _range];
|
||||||
|
_proximityPlayers = _proximityPlayers - [_unit];
|
||||||
|
(_proximityPlayers + (crew vehicle _unit))
|
21
addons/map_gestures/functions/fnc_initTransmit.sqf
Normal file
21
addons/map_gestures/functions/fnc_initTransmit.sqf
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Initializes transmitting map gestures.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [] call ace_map_gestures_fnc_initTransmit
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!GVAR(enabled)) exitWith {};
|
||||||
|
|
||||||
|
GVAR(EnableTransmit) = true;
|
||||||
|
[FUNC(transmit), GVAR(interval), []] call CBA_fnc_addPerFrameHandler;
|
53
addons/map_gestures/functions/fnc_moduleGroupSettings.sqf
Normal file
53
addons/map_gestures/functions/fnc_moduleGroupSettings.sqf
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Initializes Settings for the groups modules and transcodes settings to a useable format.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Logic <LOGIC>
|
||||||
|
* 1: Units <ARRAY>
|
||||||
|
* 2: Activated <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [module, [player], true] call ace_map_gestures_fnc_moduleGroupSettings
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_logic", "_units", "_activated"];
|
||||||
|
|
||||||
|
if (!_activated) exitWith {};
|
||||||
|
if (!isServer) exitWith {};
|
||||||
|
|
||||||
|
_leadColor = call compile ("[" + (_logic getVariable ["leadColor", ""]) + "]");
|
||||||
|
if (isNil "_leadColor" || !((typeName _leadColor) isEqualTo "ARRAY") || {count _leadColor != 4}) exitWith {};
|
||||||
|
_color = call compile ("[" + (_logic getVariable ["color", ""]) + "]");
|
||||||
|
if (isNil "_color" || !((typeName _color) isEqualTo "ARRAY") || {count _color != 4}) exitWith {};
|
||||||
|
|
||||||
|
_configurations = +GVAR(GroupColorConfigurations);
|
||||||
|
if (isNil "_configurations") then {_configurations = []};
|
||||||
|
_configurationIndex = _configurations pushBack [_leadColor, _color];
|
||||||
|
|
||||||
|
_configurationGroups = +GVAR(GroupColorConfigurationsGroups);
|
||||||
|
_configurationGroupsIndex = +GVAR(GroupColorConfigurationsGroupIndex);
|
||||||
|
|
||||||
|
if (isNil "_configurationGroups") then {_configurationGroups = [];};
|
||||||
|
if (isNil "_configurationGroupsIndex") then {_configurationGroupsIndex = [];};
|
||||||
|
_completedGroups = [];
|
||||||
|
{
|
||||||
|
private "_group";
|
||||||
|
_group = groupID (group _x);
|
||||||
|
if (!(_group in _completedGroups)) then {
|
||||||
|
_index = if (_group in _configurationGroups) then {_configurationGroups find _group} else {_configurationGroups pushBack _group};
|
||||||
|
_configurationGroupsIndex set [_index, _configurationIndex];
|
||||||
|
_completedGroups pushBack _group;
|
||||||
|
};
|
||||||
|
nil
|
||||||
|
} count _units;
|
||||||
|
|
||||||
|
[QGVAR(GroupColorConfigurations), _configurations, true, true] call EFUNC(common,setSetting);
|
||||||
|
[QGVAR(GroupColorConfigurationsGroups), _configurationGroups, true, true] call EFUNC(common,setSetting);
|
||||||
|
[QGVAR(GroupColorConfigurationsGroupIndex), _configurationGroupsIndex, true, true] call EFUNC(common,setSetting);
|
35
addons/map_gestures/functions/fnc_moduleSettings.sqf
Normal file
35
addons/map_gestures/functions/fnc_moduleSettings.sqf
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Initializes Settings for the module and transcodes settings to a useable format.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Logic <LOGIC>
|
||||||
|
* 1: Units <ARRAY>
|
||||||
|
* 2: Activated <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [module, [player], true] call ace_map_gestures_fnc_moduleGroupSettings
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_logic", "_units", "_activated"];
|
||||||
|
|
||||||
|
if (!_activated) exitWith {};
|
||||||
|
if (!isServer) exitWith {};
|
||||||
|
|
||||||
|
[_logic, QGVAR(enabled), "enabled"] call EFUNC(common,readSettingFromModule);
|
||||||
|
[_logic, QGVAR(maxRange), "maxRange"] call EFUNC(common,readSettingFromModule);
|
||||||
|
[_logic, QGVAR(interval), "interval"] call EFUNC(common,readSettingFromModule);
|
||||||
|
|
||||||
|
_defaultLeadColor = call compile ("[" + (_logic getVariable ["defaultLeadColor", ""]) + "]");
|
||||||
|
if (isNil "_leadColor" || !((typeName _leadColor) isEqualTo "ARRAY") || {count _leadColor != 4}) exitWith {};
|
||||||
|
[QGVAR(defaultLeadColor), _defaultLeadColor, true, true] call EFUNC(common,setSetting);
|
||||||
|
|
||||||
|
_defaultColor = call compile ("[" + (_logic getVariable ["defaultColor", ""]) + "]");
|
||||||
|
if (isNil "_color" || !((typeName _color) isEqualTo "ARRAY") || {count _color != 4}) exitWith {};
|
||||||
|
[QGVAR(defaultColor), _defaultColor, true, true] call EFUNC(common,setSetting);
|
32
addons/map_gestures/functions/fnc_receiverInit.sqf
Normal file
32
addons/map_gestures/functions/fnc_receiverInit.sqf
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Initializes the receiver and hooks it to the Draw event of the map.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [] call ace_map_gestures_fnc_receiverInit
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
{
|
||||||
|
if (isPlayer _x) then {
|
||||||
|
_nameSane = [name _x] call FUNC(sanitizeName);
|
||||||
|
call compile format [QUOTE(GVAR(%1_DrawPos) = [ARR_3(1,1,1)];), _nameSane];
|
||||||
|
};
|
||||||
|
nil
|
||||||
|
} count allUnits;
|
||||||
|
|
||||||
|
ACE_player setVariable [QGVAR(Transmit), false, true];
|
||||||
|
GVAR(EnableTransmit) = false;
|
||||||
|
|
||||||
|
if (!isNil QGVAR(DrawMapHandlerID)) then {
|
||||||
|
(findDisplay 12 displayCtrl 51) ctrlRemoveEventHandler ["Draw", GVAR(DrawMapHandlerID)]; GVAR(DrawMapHandlerID) = nil;
|
||||||
|
};
|
||||||
|
GVAR(DrawMapHandlerID) = findDisplay 12 displayCtrl 51 ctrlAddEventHandler ["Draw", FUNC(drawMapGestures)];
|
30
addons/map_gestures/functions/fnc_sanitizeName.sqf
Normal file
30
addons/map_gestures/functions/fnc_sanitizeName.sqf
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Cleans up unit names to be usable within variable names.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Name <STRING>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Sanitized name <STRING>
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* ["I am a non valid variable name"] call ace_map_gestures_fnc_sanitizeName
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_alphabet", "_nameSanitized"];
|
||||||
|
|
||||||
|
params ["_name"];
|
||||||
|
|
||||||
|
_alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
|
||||||
|
|
||||||
|
_nameSanitized = [];
|
||||||
|
{
|
||||||
|
if (toString [_x] in _alphabet) then {_nameSanitized pushBack _x};
|
||||||
|
nil
|
||||||
|
} count (toArray _name);
|
||||||
|
|
||||||
|
toString _nameSanitized
|
42
addons/map_gestures/functions/fnc_transmit.sqf
Normal file
42
addons/map_gestures/functions/fnc_transmit.sqf
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Transmit PFH
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Arguments <ARRAY>
|
||||||
|
* 1: PFH ID <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Return description <TYPE>
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [[], 2] call ace_map_gestures_fnc_transmit
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_nearDudes", "_ownerID", "_nameSane"];
|
||||||
|
|
||||||
|
params ["", "_pfhId"];
|
||||||
|
|
||||||
|
if (!GVAR(EnableTransmit) || !visibleMap) exitWith {
|
||||||
|
call FUNC(endTransmit);
|
||||||
|
[_pfhId] call CBA_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
_nearDudes = [ACE_player, GVAR(maxRange)] call FUNC(getProximityPlayers);
|
||||||
|
TRACE_1("Near",_nearDudes)
|
||||||
|
|
||||||
|
{
|
||||||
|
_ownerID = _x getVariable QGVAR(owner_id);
|
||||||
|
if (isNil _ownerID) exitWith {
|
||||||
|
[0, {[_this] call FUNC(assignClientIDOnServer)}, name _x] call cba_fnc_GlobalExecute;
|
||||||
|
};
|
||||||
|
_ownerID = _x getVariable QGVAR(owner_id);
|
||||||
|
|
||||||
|
if (_ownerID != ACE_player getVariable QGVAR(owner_id)) then {
|
||||||
|
_nameSane = [name ACE_player] call FUNC(sanitizeName);
|
||||||
|
_ownerID publicVariableClient format [QGVAR(%1_DrawPos), _nameSane];
|
||||||
|
};
|
||||||
|
} count _nearDudes;
|
59
addons/map_gestures/functions/fnc_transmitterInit.sqf
Normal file
59
addons/map_gestures/functions/fnc_transmitterInit.sqf
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Author: MikeMatrix
|
||||||
|
* Initializes the transmitting event handlers.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [] call ace_map_gestures_fnc_transmitterInit
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_mapCtrl", "_nameSane"];
|
||||||
|
|
||||||
|
disableSerialization;
|
||||||
|
|
||||||
|
_mapCtrl = findDisplay 12 displayCtrl 51;
|
||||||
|
|
||||||
|
// MouseMoving EH.
|
||||||
|
if (!isNil QGVAR(MouseMoveHandlerID)) then {_mapCtrl ctrlRemoveEventHandler ["MouseMoving", GVAR(MouseMoveHandlerID)]; GVAR(MouseMoveHandlerID) = nil;};
|
||||||
|
GVAR(MouseMoveHandlerID) = _mapCtrl ctrlAddEventHandler ["MouseMoving", {
|
||||||
|
if (EGVAR(maptools,drawing_isDrawing)) exitWith {};
|
||||||
|
if (EGVAR(maptools,mapTool_isDragging)) exitWith {};
|
||||||
|
if (EGVAR(maptools,mapTool_isRotating)) exitWith {};
|
||||||
|
|
||||||
|
params ["_control", "_posX", "_posY"];
|
||||||
|
|
||||||
|
if (GVAR(EnableTransmit)) then {
|
||||||
|
if (!(ACE_player getVariable QGVAR(Transmit))) then {
|
||||||
|
ACE_player setVariable [QGVAR(Transmit), true, true];
|
||||||
|
};
|
||||||
|
|
||||||
|
_nameSane = [name ACE_player] call FUNC(sanitizeName);
|
||||||
|
call compile format [QUOTE(GVAR(%1_DrawPos) = %2), _nameSane, _control ctrlMapScreenToWorld [_posX, _posY]];
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
|
||||||
|
// MouseDown EH
|
||||||
|
if (!isNil QGVAR(MouseDownHandlerID)) then {_mapCtrl ctrlRemoveEventHandler ["MouseButtonDown",GVAR(MouseDownHandlerID)]; GVAR(MouseDownHandlerID) = nil;};
|
||||||
|
GVAR(MouseDownHandlerID) = _mapCtrl ctrlAddEventHandler ["MouseButtonDown", {
|
||||||
|
if (!GVAR(enabled)) exitWith {};
|
||||||
|
|
||||||
|
params ["", "_button"];
|
||||||
|
|
||||||
|
if (_button == 0) then {call FUNC(initTransmit);};
|
||||||
|
}];
|
||||||
|
|
||||||
|
// MouseUp EH
|
||||||
|
if (!isNil QGVAR(MouseUpHandlerID)) then {_mapCtrl ctrlRemoveEventHandler ["MouseButtonUp", GVAR(MouseUpHandlerID)]; GVAR(MouseUpHandlerID) = nil;};
|
||||||
|
GVAR(MouseUpHandlerID) = _mapCtrl ctrlAddEventHandler ["MouseButtonUp", {
|
||||||
|
params ["", "_button"];
|
||||||
|
|
||||||
|
if (_button == 0) then {call FUNC(endTransmit);};
|
||||||
|
}];
|
1
addons/map_gestures/functions/script_component.hpp
Normal file
1
addons/map_gestures/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "\z\ace\addons\map_gestures\script_component.hpp"
|
12
addons/map_gestures/script_component.hpp
Normal file
12
addons/map_gestures/script_component.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#define COMPONENT map_gestures
|
||||||
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_MAP_GESTURES
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_SETTINGS_MAP_GESTURES
|
||||||
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_MAP_GESTURES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "\z\ace\addons\main\script_macros.hpp"
|
95
addons/map_gestures/stringtable.xml
Normal file
95
addons/map_gestures/stringtable.xml
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project name="ACE">
|
||||||
|
<Package name="map_gestures">
|
||||||
|
<Key ID="STR_ACE_map_gestures_moduleSettings_displayName">
|
||||||
|
<English>Map Gestures</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_enabled_displayName">
|
||||||
|
<English>Enabled</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_maxRange_displayName">
|
||||||
|
<English>Map Gesture Max Range</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_maxRange_description">
|
||||||
|
<English>Max range between players to show the map gesture indicator [default: 7 meters]</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_defaultLeadAlpha_displayName">
|
||||||
|
<English>Lead Default Alpha</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_defaultLeadAlpha_description">
|
||||||
|
<English>Fallback Alpha value for group leaders.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_defaultAlpha_displayName">
|
||||||
|
<English>Default Alpha</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_defaultAlpha_descriptions">
|
||||||
|
<English>Fallback Alpha value.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_defaultLeadColor_displayName">
|
||||||
|
<English>Lead Default Color</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_defaultLeadColor_description">
|
||||||
|
<English>Fallback Color value for group leaders.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_defaultColor_displayName">
|
||||||
|
<English>Default Color</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_defaultColor_description">
|
||||||
|
<English>Fallback Color value.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_leadAlpha_displayName">
|
||||||
|
<English>Lead Alpha</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_leadAlpha_description">
|
||||||
|
<English>Alpha value for group leaders of groups synced with this module.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_alpha_displayName">
|
||||||
|
<English>Alpha</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_alpha_description">
|
||||||
|
<English>Alpha value for group members of groups synced with this module.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_leadColor_displayName">
|
||||||
|
<English>Lead Color</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_leadColor_description">
|
||||||
|
<English>Color value for group leaders of groups synced with this module.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_color_displayName">
|
||||||
|
<English>Color</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_color_description">
|
||||||
|
<English>Color value for group members of groups synced with this module.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_moduleGroupSettings_displayName">
|
||||||
|
<English>Map Gestures - Group Settings</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_interval_displayName">
|
||||||
|
<English>Update Interval</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_interval_description">
|
||||||
|
<English>Time between data updates.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_displayName">
|
||||||
|
<English>Group color configurations</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_description">
|
||||||
|
<English>Group color configuration containing arrays of color pairs ([leadColor, color]).</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationsGroups_description">
|
||||||
|
<English>Group color group name index, containing names of groups with configurations attached to them.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationsGroups_displayName">
|
||||||
|
<English>Group color group name index</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationsGroupIndex_displayName">
|
||||||
|
<English>Group color group name mapping index</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationsGroupIndex_description">
|
||||||
|
<English>Group color group name mapping index, mapping the GroupColorConfigurationsGroups to the GroupColorConfigurations.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_map_gestures_enabled_description">
|
||||||
|
<English>Enables the Map Gestures.</English>
|
||||||
|
</Key>
|
||||||
|
</Package>
|
||||||
|
</Project>
|
Loading…
Reference in New Issue
Block a user