ACE3/addons/map/XEH_postInitClient.sqf

155 lines
4.9 KiB
Plaintext
Raw Normal View History

// by CAA-Picard
if (!hasInterface) exitWith{};
[] spawn {
while {true} do {
sleep 5;
_markers = [];
while {AGM_Map_BFT_Enabled and {(!isNil "AGM_player") and {alive AGM_player}}} do {
_groups = [];
_playerSide = call AGM_Core_fnc_playerSide;
if (AGM_Map_BFT_HideAiGroups) then {
_groups = [allGroups, {side _this == _playerSide}] call AGM_Core_fnc_filter;
} else {
_groups = [allGroups, {
_anyPlayers = {
[_x] call AGM_Core_fnc_isPlayer
} count units _this;
(side _this == _playerSide) && _anyPlayers > 0
}] call AGM_Core_fnc_filter;
};
{
deleteMarkerLocal _x;
} forEach _markers;
_markers = [];
for "_i" from 0 to (count _groups - 1) do {
_group1 = _groups select _i;
_markerType = [_group1] call AGM_Core_fnc_getMarkerType;
_colour = format ["Color%1", side _group1];
_marker = createMarkerLocal [format ["AGM_BFT_%1", _i], [(getPos leader _group1) select 0, (getPos leader _group1) select 1]];
_marker setMarkerTypeLocal _markerType;
_marker setMarkerColorLocal _colour;
_marker setMarkerTextLocal (groupID _group1);
_markers pushBack _marker;
};
sleep AGM_Map_BFT_Interval;
};
// Delete markers as soon as the player dies
{
deleteMarkerLocal _x;
} forEach _markers;
};
};
[] spawn {
// Init variables
2015-01-15 09:51:18 +00:00
GVAR(mapToolsShown) = 0;
AGM_Map_pos = [0,0];
AGM_Map_angle = 0;
2015-01-15 09:51:18 +00:00
GVAR(mapToolDragging) = false;
GVAR(mapToolRotating) = false;
AGM_Map_mapGpsShow = true;
2015-01-15 09:51:18 +00:00
GVAR(drawing) = false;
GVAR(tempLineMarker) = [];
GVAR(lineMarkers) = [];
AGM_Map_drawColor = "ColorBlack";
2015-01-15 09:51:18 +00:00
GVAR(drawing)Controls = [36732, 36733, 36734, 36735, 36736, 36737];
AGM_Map_fnc_installEvents = {
_d = _this;
diag_log format ["Installing EH in display %1", _d];
((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["MouseMoving", {_this call AGM_Map_fnc_handleMouseMove;}];
((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["MouseButtonDown", {[1, _this] call AGM_Map_fnc_handleMouseButton;}];
((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["MouseButtonUp", {[0, _this] call AGM_Map_fnc_handleMouseButton}];
((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["Draw", {[] call AGM_Map_fnc_updateMapToolMarkers;}];
(finddisplay _d) displayAddEventHandler ["KeyDown", {_this call AGM_Map_fnc_handleKeyDown;}];
};
// Wait until the briefing map is detected
// display = 37 for SP
// display = 52 for host server on MP;
// display = 53 for MP clients)
waitUntil {(!isNull findDisplay 37) || (!isNull findDisplay 52) || (!isNull findDisplay 53) || (!isNull findDisplay 12)};
if (isNull findDisplay 12) then {
// Install event handlers on the map control of the briefing screen (control = 51)
2015-01-15 09:51:18 +00:00
GVAR(syncMarkers) = true;
if (!isNull findDisplay 52) then {
52 call AGM_Map_fnc_installEvents;
} else {
if (!isNull findDisplay 53) then {
53 call AGM_Map_fnc_installEvents;
} else {
37 call AGM_Map_fnc_installEvents;
};
};
} else {
// Briefing screen was skipped; the player is JIP, create the markers defined during the briefing
2015-01-15 09:51:18 +00:00
GVAR(syncMarkers) = false;
{
2015-01-15 09:51:18 +00:00
_x call FUNC(addLineMarker);
} forEach GVAR(serverLineMarkers);
};
// Wait until the main map display is detected (display = 12)
waitUntil { !isNull findDisplay 12 };
// Install event handlers on the map control and display (control = 51)
2015-01-15 09:51:18 +00:00
GVAR(syncMarkers) = false;
12 call AGM_Map_fnc_installEvents;
// Update the size and rotation of map tools
[] call AGM_Map_fnc_updateMapToolMarkers;
while {true} do {
waitUntil {visibleMap};
// Show and update map tools if required
[] call AGM_Map_fnc_updateMapToolMarkers;
// Show GPS if required
[AGM_Map_mapGpsShow] call AGM_Map_fnc_openMapGps;
// Update visibility of maptools and gps, handling inventory changes
[] spawn {
while {visibleMap} do {
// Show/Hide draw buttons
2015-01-15 09:51:18 +00:00
if ("ACE_MapTools" in items player) then {
{ ((finddisplay 12) displayctrl _x) ctrlShow true; } forEach GVAR(drawing)Controls;
} else {
2015-01-15 09:51:18 +00:00
{ ((finddisplay 12) displayctrl _x) ctrlShow false; } forEach GVAR(drawing)Controls;
if (GVAR(drawing)) then {
call AGM_Map_fnc_cancelDrawing;
};
};
sleep 1;
};
};
waitUntil {!visibleMap};
// Hide GPS
[false] call AGM_Map_fnc_openMapGps;
// Hide Map tools
2015-01-15 09:51:18 +00:00
deleteMarkerLocal MARKERNAME_MAPTOOL_FIXED;
deleteMarkerLocal MARKERNAME_MAPTOOL_ROTATINGNORMAL;
deleteMarkerLocal MARKERNAME_MAPTOOL_ROTATINGSMALL;
GVAR(mapToolFixed) = nil;
AGM_Map_mapToolRotatingNormal = nil;
AGM_Map_mapToolRotatingSmall = nil;
// Cancel drawing
call AGM_Map_fnc_cancelDrawing;
};
};