ACE3/addons/map/XEH_postInitClient.sqf

146 lines
5.8 KiB
Plaintext
Raw Normal View History

2015-01-15 21:50:48 +00:00
#include "script_component.hpp"
//Delete map glow lights from disconnecting players #2810
if (isServer) then {
addMissionEventHandler ["HandleDisconnect",{
params ["_disconnectedPlayer"];
if ((!GVAR(mapGlow)) || {isNull _disconnectedPlayer}) exitWith {};
{
if (_x isKindOf "ACE_FlashlightProxy_White") then {
// ACE_LOGINFO_2("Deleting leftover light [%1:%2] from DC player [%3]", _x, typeOf _x, _disconnectedPlayer);
detach _x;
deleteVehicle _x;
};
} forEach attachedObjects _disconnectedPlayer;
2016-05-03 00:32:44 +00:00
nil
}];
};
2015-06-21 19:10:50 +00:00
// Exit on Headless as well
2015-08-11 17:49:39 +00:00
if (!hasInterface) exitWith {};
2015-06-21 19:10:50 +00:00
LOG(MSG_INIT);
2015-01-16 08:13:29 +00:00
// Calculate the maximum zoom allowed for this map
call FUNC(determineZoom);
2015-01-16 08:13:29 +00:00
2015-08-11 17:49:39 +00:00
[{
if (isNull findDisplay 12) exitWith {};
2015-01-16 08:13:29 +00:00
GVAR(lastStillPosition) = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5];
2016-03-02 10:01:39 +00:00
GVAR(lastStillTime) = CBA_missionTime;
GVAR(isShaking) = false;
2015-01-16 08:13:29 +00:00
2015-08-11 17:49:39 +00:00
//map sizes are multiples of 1280
GVAR(worldSize) = worldSize / 1280;
GVAR(mousePos) = [0.5,0.5];
//Allow panning the lastStillPosition while mapShake is active
GVAR(rightMouseButtonLastPos) = [];
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", {_this call FUNC(updateMapEffects)}];
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseMoving", {
if (GVAR(isShaking) && {(count GVAR(rightMouseButtonLastPos)) == 2}) then {
private _lastPos = (_this select 0) ctrlMapScreenToWorld GVAR(rightMouseButtonLastPos);
private _newPos = (_this select 0) ctrlMapScreenToWorld (_this select [1,2]);
GVAR(lastStillPosition) set [0, (GVAR(lastStillPosition) select 0) + (_lastPos select 0) - (_newPos select 0)];
GVAR(lastStillPosition) set [1, (GVAR(lastStillPosition) select 1) + (_lastPos select 1) - (_newPos select 1)];
GVAR(rightMouseButtonLastPos) = _this select [1,2];
TRACE_3("Mouse Move",_lastPos,_newPos,GVAR(rightMouseButtonLastPos));
};
}];
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseButtonDown", {
if ((_this select 1) == 1) then {
GVAR(rightMouseButtonLastPos) = _this select [2,2];
};
}];
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseButtonUp", {
if ((_this select 1) == 1) then {
GVAR(rightMouseButtonLastPos) = [];
};
}];
2015-08-11 17:49:39 +00:00
//get mouse position on map
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseMoving", {
GVAR(mousePos) = (_this select 0) ctrlMapScreenToWorld [_this select 1, _this select 2];
}];
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseHolding", {
GVAR(mousePos) = (_this select 0) ctrlMapScreenToWorld [_this select 1, _this select 2];
}];
[_this select 1] call CBA_fnc_removePerFrameHandler;
}, 0] call CBA_fnc_addPerFrameHandler;
["ace_settingsInitialized", {
2015-09-29 16:36:30 +00:00
if (isMultiplayer && {GVAR(DefaultChannel) != -1}) then {
//Set the chat channel once the map has finished loading
[{
if ((isNull findDisplay 37) && {isNull findDisplay 52} && {isNull findDisplay 53} && {isNull findDisplay 12}) exitWith {};
[_this select 1] call CBA_fnc_removePerFrameHandler;
setCurrentChannel GVAR(DefaultChannel);
if (currentChannel == GVAR(DefaultChannel)) then {
// ACE_LOGINFO_1("Channel Set - %1", currentChannel);
} else {
ACE_LOGERROR_2("Failed To Set Channel %1 (is %2)", GVAR(DefaultChannel), currentChannel);
};
}, 0, []] call CBA_fnc_addPerFrameHandler;
};
// Start Blue Force Tracking if Enabled
if (GVAR(BFT_Enabled)) then {
GVAR(BFT_markers) = [];
[FUNC(blueForceTrackingUpdate), GVAR(BFT_Interval), []] call CBA_fnc_addPerFrameHandler;
};
2015-08-11 17:49:39 +00:00
//illumination settings
if (GVAR(mapIllumination)) then {
["loadout", {
params ["_player", ""];
private _flashlightItems = [_player] call FUNC(getUnitFlashlights);
private _unitLight = _player getVariable [QGVAR(flashlight), ["", objNull]];
_unitLight params ["_flashlight", "_glow"];
if (!(_flashlight isEqualTo "") && {!(_flashlight in _flashlightItems)}) then {
if (!isNull _glow) then {
_glow = [_player, "", false] call FUNC(flashlightGlow);
};
_player setVariable [QGVAR(flashlight), ["", _glow], true];
2015-08-11 17:49:39 +00:00
};
}] call CBA_fnc_addPlayerEventHandler;
2015-08-11 17:49:39 +00:00
if (GVAR(mapGlow)) then {
2016-06-12 22:39:16 +00:00
["ace_visibleMapChanged", {
2015-08-11 17:49:39 +00:00
params ["_player", "_mapOn"];
private _unitLight = _player getVariable [QGVAR(flashlight), ["", objNull]];
_unitLight params ["_flashlight", "_glow"];
private _flashlightOn = !(_flashlight isEqualTo "");
2015-08-11 17:49:39 +00:00
if (_mapOn) then {
if (_flashlightOn && {isNull _glow}) then {
[_player, _flashlight] call FUNC(flashlightGlow);
playSound QGVAR(flashlightClick);
2015-08-11 17:49:39 +00:00
};
} else {
if (!isNull _glow) then {
[_player, ""] call FUNC(flashlightGlow);
2015-08-11 17:49:39 +00:00
};
};
2016-06-12 22:39:16 +00:00
}] call CBA_fnc_addEventHandler;
2015-08-11 17:49:39 +00:00
};
};
}] call CBA_fnc_addEventHandler;
2015-09-01 23:59:07 +00:00
// hide clock on map if player has no watch
GVAR(hasWatch) = true;
["loadout", {
2015-09-01 23:59:07 +00:00
if (isNull (_this select 0)) exitWith {
GVAR(hasWatch) = true;
};
GVAR(hasWatch) = false;
{
if (_x isKindOf ["ItemWatch", configFile >> "CfgWeapons"]) exitWith {GVAR(hasWatch) = true;};
false
} count (assignedItems ACE_player);
}] call CBA_fnc_addPlayerEventHandler;