mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Various code cleanups and switch to player UIDs instead of sanitized names
This commit is contained in:
parent
3646654ff3
commit
7217d5ec10
@ -7,5 +7,6 @@ class Extended_PreInit_EventHandlers {
|
|||||||
class Extended_PostInit_EventHandlers {
|
class Extended_PostInit_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||||
|
serverInit = QUOTE(call COMPILE_FILE(XEH_serverPostInit));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -11,7 +11,6 @@ PREP(isValidColorArray);
|
|||||||
PREP(moduleGroupSettings);
|
PREP(moduleGroupSettings);
|
||||||
PREP(moduleSettings);
|
PREP(moduleSettings);
|
||||||
PREP(receiverInit);
|
PREP(receiverInit);
|
||||||
PREP(sanitizeName);
|
|
||||||
PREP(transmit);
|
PREP(transmit);
|
||||||
PREP(transmitterInit);
|
PREP(transmitterInit);
|
||||||
|
|
||||||
|
3
addons/map_gestures/XEH_serverPostInit.sqf
Normal file
3
addons/map_gestures/XEH_serverPostInit.sqf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
[MAP_GESTURES_NO_OWNER_ID_EVENT, FUNC(assignClientIDOnServer)] call EFUNC(common,addEventHandler)
|
@ -18,7 +18,7 @@
|
|||||||
params ["_unitName"];
|
params ["_unitName"];
|
||||||
|
|
||||||
{
|
{
|
||||||
if (name _x == _unitName) then {
|
if (name _x == _unitName) exitWith {
|
||||||
_x setVariable [QGVAR(owner_id), owner _x, true];
|
_x setVariable [QGVAR(owner_id), owner _x, true];
|
||||||
};
|
};
|
||||||
} count playableUnits;
|
} count playableUnits;
|
||||||
|
@ -15,23 +15,35 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (!GVAR(enabled)) exitWith {};
|
#define ICON_RENDER_SIZE 55
|
||||||
if (!visibleMap) exitWith {};
|
#define ICON_TEXT_ALIGN "left"
|
||||||
|
#define ICON_ANGLE 0
|
||||||
|
#define ICON_SHADOW 1
|
||||||
|
#define TEXT_FONT "PuristaBold"
|
||||||
|
#define TEXT_ICON_RENDER_SIZE 20
|
||||||
|
#define TEXT_SIZE 0.030
|
||||||
|
#define TEXT_SHADOW 0
|
||||||
|
|
||||||
|
if (!GVAR(enabled) || !visibleMap) exitWith {};
|
||||||
|
|
||||||
params ["_mapHandle"];
|
params ["_mapHandle"];
|
||||||
|
|
||||||
_proximityPlayers = [ACE_player, GVAR(maxRange)] call FUNC(getProximityPlayers);
|
// Iterate over all nearby players and render their pointer if player is transmitting.
|
||||||
{
|
{
|
||||||
_nameSane = [name _x] call FUNC(sanitizeName);
|
// Data variable name for unit
|
||||||
_drawPosVariableName = format [QGVAR(%1_DrawPos), _nameSane];
|
_unitUID = getPlayerUID _x;
|
||||||
if (!isNil _drawPosVariableName) then {
|
_drawPosVariableName = if (!isNil "_unitUID" && _unitUID != "") then {format [QGVAR(%1_DrawPos), _unitUID]} else {nil};
|
||||||
|
|
||||||
|
if (!isNil "_drawPosVariableName") then {
|
||||||
if (isNil {missionNamespace getVariable _drawPosVariableName}) then {missionNamespace setVariable [_drawPosVariableName, [1, 1, 1]];};
|
if (isNil {missionNamespace getVariable _drawPosVariableName}) then {missionNamespace setVariable [_drawPosVariableName, [1, 1, 1]];};
|
||||||
_pos = missionNamespace getVariable _drawPosVariableName;
|
_pos = missionNamespace getVariable _drawPosVariableName;
|
||||||
if (alive _x &&
|
|
||||||
{_x getVariable QGVAR(Transmit)}) then {
|
// Only render if the unit is alive and transmitting
|
||||||
|
if (alive _x && {_x getVariable QGVAR(Transmit)}) then {
|
||||||
_group = group _x;
|
_group = group _x;
|
||||||
_grpName = groupID _group;
|
_grpName = groupID _group;
|
||||||
|
|
||||||
|
// If color settings for the group exist, then use those, otherwise fall back to the default colors
|
||||||
_color = if (_grpName in GVAR(GroupColorConfigurationsGroups)) then {
|
_color = if (_grpName in GVAR(GroupColorConfigurationsGroups)) then {
|
||||||
_grpNameIndex = GVAR(GroupColorConfigurationsGroups) find _grpName;
|
_grpNameIndex = GVAR(GroupColorConfigurationsGroups) find _grpName;
|
||||||
(GVAR(GroupColorConfigurations) select (GVAR(GroupColorConfigurationsGroupIndex) select _grpNameIndex)) select (_x != leader _group)
|
(GVAR(GroupColorConfigurations) select (GVAR(GroupColorConfigurationsGroupIndex) select _grpNameIndex)) select (_x != leader _group)
|
||||||
@ -39,9 +51,10 @@ _proximityPlayers = [ACE_player, GVAR(maxRange)] call FUNC(getProximityPlayers);
|
|||||||
if (_x == leader _group) then {GVAR(defaultLeadColor)} else {GVAR(defaultColor)};
|
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"];
|
// Render icon and player name
|
||||||
_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"];
|
_mapHandle drawIcon ["\a3\ui_f\data\gui\cfg\Hints\icon_text\group_1_ca.paa", _color, _pos, ICON_RENDER_SIZE, ICON_RENDER_SIZE, ICON_ANGLE, "", ICON_SHADOW, TEXT_SIZE, TEXT_FONT, ICON_TEXT_ALIGN];
|
||||||
|
_mapHandle drawIcon ["#(argb,8,8,3)color(0,0,0,0)", [.2,.2,.2,.3], _pos, TEXT_ICON_RENDER_SIZE, TEXT_ICON_RENDER_SIZE, ICON_ANGLE, name _x, TEXT_SHADOW, TEXT_SIZE, TEXT_FONT, ICON_TEXT_ALIGN];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nil
|
nil
|
||||||
} count _proximityPlayers;
|
} count ([ACE_player, GVAR(maxRange)] call FUNC(getProximityPlayers));
|
||||||
|
@ -19,5 +19,6 @@
|
|||||||
params ["_unit", "_range"];
|
params ["_unit", "_range"];
|
||||||
|
|
||||||
_proximityPlayers = (getPos _unit) nearEntities [["CAMAnBase"], _range];
|
_proximityPlayers = (getPos _unit) nearEntities [["CAMAnBase"], _range];
|
||||||
_proximityPlayers = _proximityPlayers - [_unit];
|
_proximityPlayers deleteAt (_proximityPlayers find _unit);
|
||||||
(_proximityPlayers + (crew vehicle _unit))
|
_proximityPlayers append (crew vehicle _unit)
|
||||||
|
_proximityPlayers
|
||||||
|
@ -19,22 +19,24 @@
|
|||||||
|
|
||||||
params ["_logic", "_units", "_activated"];
|
params ["_logic", "_units", "_activated"];
|
||||||
|
|
||||||
diag_log "Running";
|
if (!_activated || !isServer) exitWith {};
|
||||||
|
|
||||||
if (!_activated) exitWith {};
|
|
||||||
if (!isServer) exitWith {};
|
|
||||||
|
|
||||||
|
// Transcode string setting into usable array. Example: "1,1,1,1" -> [1, 1, 1, 1]
|
||||||
_leadColor = call compile ("[" + (_logic getVariable ["leadColor", ""]) + "]");
|
_leadColor = call compile ("[" + (_logic getVariable ["leadColor", ""]) + "]");
|
||||||
if (!([_leadColor] call FUNC(isValidColorArray))) exitWith {ERROR("leadColor is not a valid color array.")};
|
if (!([_leadColor] call FUNC(isValidColorArray))) exitWith {ERROR("leadColor is not a valid color array.")};
|
||||||
_color = call compile ("[" + (_logic getVariable ["color", ""]) + "]");
|
_color = call compile ("[" + (_logic getVariable ["color", ""]) + "]");
|
||||||
if (!([_color] call FUNC(isValidColorArray))) exitWith {ERROR("color is not a valid color array.")};
|
if (!([_color] call FUNC(isValidColorArray))) exitWith {ERROR("color is not a valid color array.")};
|
||||||
|
|
||||||
|
// If we already have color configurations from another source, use those, otherwise use default.
|
||||||
_configurations = if (isNil QGVAR(GroupColorConfigurations)) then { [] } else { +GVAR(GroupColorConfigurations) };
|
_configurations = if (isNil QGVAR(GroupColorConfigurations)) then { [] } else { +GVAR(GroupColorConfigurations) };
|
||||||
_configurationGroups = if (isNil QGVAR(GroupColorConfigurationsGroups)) then { [] } else { +GVAR(GroupColorConfigurationsGroups) };
|
_configurationGroups = if (isNil QGVAR(GroupColorConfigurationsGroups)) then { [] } else { +GVAR(GroupColorConfigurationsGroups) };
|
||||||
_configurationGroupsIndex = if (isNil QGVAR(GroupColorConfigurationsGroupIndex)) then { [] } else { +GVAR(GroupColorConfigurationsGroupIndex) };
|
_configurationGroupsIndex = if (isNil QGVAR(GroupColorConfigurationsGroupIndex)) then { [] } else { +GVAR(GroupColorConfigurationsGroupIndex) };
|
||||||
|
|
||||||
_completedGroups = [];
|
// Save custom color configuration and keep the index of the entry.
|
||||||
_configurationIndex = _configurations pushBack [_leadColor, _color];
|
_configurationIndex = _configurations pushBack [_leadColor, _color];
|
||||||
|
|
||||||
|
// Add all synchronized groups and reference custom configuration for them
|
||||||
|
_completedGroups = [];
|
||||||
{
|
{
|
||||||
private "_group";
|
private "_group";
|
||||||
_group = groupID (group _x);
|
_group = groupID (group _x);
|
||||||
|
@ -15,14 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
{
|
|
||||||
if (isPlayer _x) then {
|
|
||||||
_nameSane = [name _x] call FUNC(sanitizeName);
|
|
||||||
missionNamespace setVariable [format [QGVAR(%1_DrawPos), _nameSane], [1, 1, 1]];
|
|
||||||
};
|
|
||||||
nil
|
|
||||||
} count allUnits;
|
|
||||||
|
|
||||||
ACE_player setVariable [QGVAR(Transmit), false, true];
|
ACE_player setVariable [QGVAR(Transmit), false, true];
|
||||||
GVAR(EnableTransmit) = false;
|
GVAR(EnableTransmit) = false;
|
||||||
|
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: Dslyecxi, 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
|
|
@ -16,26 +16,30 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_proximityPlayers", "_ownerID", "_nameSane"];
|
private ["_proximityPlayers", "_ownerID", "_unitUID", "_drawPosVariableName"];
|
||||||
|
|
||||||
params ["", "_pfhId"];
|
params ["", "_pfhId"];
|
||||||
|
|
||||||
if (!GVAR(EnableTransmit) || !visibleMap) exitWith {
|
if (!visibleMap) then {
|
||||||
call FUNC(endTransmit);
|
call FUNC(endTransmit);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!GVAR(EnableTransmit) || !visibleMap) exitWith {
|
||||||
[_pfhId] call CBA_fnc_removePerFrameHandler;
|
[_pfhId] call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
_proximityPlayers = [ACE_player, GVAR(maxRange)] call FUNC(getProximityPlayers);
|
|
||||||
TRACE_1("Near",_proximityPlayers)
|
|
||||||
|
|
||||||
{
|
{
|
||||||
_ownerID = _x getVariable QGVAR(owner_id);
|
_ownerID = _x getVariable QGVAR(owner_id);
|
||||||
if (isNil "_ownerID") then {
|
if (isNil "_ownerID") then {
|
||||||
[0, {[_this] call FUNC(assignClientIDOnServer)}, name _x] call cba_fnc_GlobalExecute;
|
[MAP_GESTURES_NO_OWNER_ID_EVENT, [name _x]] call EFUNC(common,serverEvent);
|
||||||
} else {
|
} else {
|
||||||
if (_ownerID != ACE_player getVariable QGVAR(owner_id)) then {
|
_playerOwnerID = ACE_player getVariable QGVAR(owner_id);
|
||||||
_nameSane = [name ACE_player] call FUNC(sanitizeName);
|
if (!isNil "_playerOwnerID" && _ownerID != _playerOwnerID) then {
|
||||||
_ownerID publicVariableClient format [QGVAR(%1_DrawPos), _nameSane];
|
_unitUID = getPlayerUID ACE_Player;
|
||||||
|
_drawPosVariableName = if (!isNil "_unitUID" && _unitUID != "") then {format [QGVAR(%1_DrawPos), _unitUID]} else {nil};
|
||||||
|
if (!isNil "_drawPosVariableName") then {
|
||||||
|
_ownerID publicVariableClient _drawPosVariableName;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} count _proximityPlayers;
|
};
|
||||||
|
} count ([ACE_player, GVAR(maxRange)] call FUNC(getProximityPlayers));
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_mapCtrl", "_nameSane"];
|
private ["_mapCtrl", "_unitUID", "_drawPosVariableName"];
|
||||||
|
|
||||||
disableSerialization;
|
disableSerialization;
|
||||||
|
|
||||||
@ -24,19 +24,19 @@ _mapCtrl = findDisplay 12 displayCtrl 51;
|
|||||||
// MouseMoving EH.
|
// MouseMoving EH.
|
||||||
if (!isNil QGVAR(MouseMoveHandlerID)) then {_mapCtrl ctrlRemoveEventHandler ["MouseMoving", GVAR(MouseMoveHandlerID)]; GVAR(MouseMoveHandlerID) = nil;};
|
if (!isNil QGVAR(MouseMoveHandlerID)) then {_mapCtrl ctrlRemoveEventHandler ["MouseMoving", GVAR(MouseMoveHandlerID)]; GVAR(MouseMoveHandlerID) = nil;};
|
||||||
GVAR(MouseMoveHandlerID) = _mapCtrl ctrlAddEventHandler ["MouseMoving", {
|
GVAR(MouseMoveHandlerID) = _mapCtrl ctrlAddEventHandler ["MouseMoving", {
|
||||||
if (EGVAR(maptools,drawing_isDrawing)) exitWith {};
|
// Don't transmit any data if we're using the map tools
|
||||||
if (EGVAR(maptools,mapTool_isDragging)) exitWith {};
|
if (!GVAR(EnableTransmit) || EGVAR(maptools,drawing_isDrawing) || EGVAR(maptools,mapTool_isDragging) || EGVAR(maptools,mapTool_isRotating)) exitWith {};
|
||||||
if (EGVAR(maptools,mapTool_isRotating)) exitWith {};
|
|
||||||
|
|
||||||
params ["_control", "_posX", "_posY"];
|
params ["_control", "_posX", "_posY"];
|
||||||
|
|
||||||
if (GVAR(EnableTransmit)) then {
|
|
||||||
if (!(ACE_player getVariable QGVAR(Transmit))) then {
|
if (!(ACE_player getVariable QGVAR(Transmit))) then {
|
||||||
ACE_player setVariable [QGVAR(Transmit), true, true];
|
ACE_player setVariable [QGVAR(Transmit), true, true];
|
||||||
};
|
};
|
||||||
|
|
||||||
_nameSane = [name ACE_player] call FUNC(sanitizeName);
|
_unitUID = getPlayerUID ACE_player;
|
||||||
missionNamespace setVariable [format [QGVAR(%1_DrawPos), _nameSane], _control ctrlMapScreenToWorld [_posX, _posY]];
|
_drawPosVariableName = if (!isNil "_unitUID" && _unitUID != "") then {format [QGVAR(%1_DrawPos), _unitUID]} else {nil};
|
||||||
|
if (!isNil "_drawPosVariableName") then {
|
||||||
|
missionNamespace setVariable [_drawPosVariableName, _control ctrlMapScreenToWorld [_posX, _posY]];
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
|
|
||||||
@ -53,6 +53,8 @@ GVAR(MouseDownHandlerID) = _mapCtrl ctrlAddEventHandler ["MouseButtonDown", {
|
|||||||
// MouseUp EH
|
// MouseUp EH
|
||||||
if (!isNil QGVAR(MouseUpHandlerID)) then {_mapCtrl ctrlRemoveEventHandler ["MouseButtonUp", GVAR(MouseUpHandlerID)]; GVAR(MouseUpHandlerID) = nil;};
|
if (!isNil QGVAR(MouseUpHandlerID)) then {_mapCtrl ctrlRemoveEventHandler ["MouseButtonUp", GVAR(MouseUpHandlerID)]; GVAR(MouseUpHandlerID) = nil;};
|
||||||
GVAR(MouseUpHandlerID) = _mapCtrl ctrlAddEventHandler ["MouseButtonUp", {
|
GVAR(MouseUpHandlerID) = _mapCtrl ctrlAddEventHandler ["MouseButtonUp", {
|
||||||
|
if (!GVAR(enabled)) exitWith {};
|
||||||
|
|
||||||
params ["", "_button"];
|
params ["", "_button"];
|
||||||
|
|
||||||
if (_button == 0) then {call FUNC(endTransmit);};
|
if (_button == 0) then {call FUNC(endTransmit);};
|
||||||
|
@ -10,3 +10,5 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "\z\ace\addons\main\script_macros.hpp"
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
|
||||||
|
#define MAP_GESTURES_NO_OWNER_ID_EVENT "PlayerNameHasNoOwnerID"
|
||||||
|
Loading…
Reference in New Issue
Block a user