#include "..\script_component.hpp" #include "\a3\ui_f\hpp\defineResincl.inc" /* * Author: commy2 * * Public: No */ params ["_display"]; if (ctrlIDD _display != IDD_MAIN_MAP) exitWith {}; private _control = _display displayCtrl IDC_MAP; GVAR(lastStillPosition) = _control ctrlMapScreenToWorld [0.5, 0.5]; [{ if (!GVAR(isShaking)) then { // player map position won't be correct until a frame later GVAR(lastStillPosition) = _this ctrlMapScreenToWorld [0.5, 0.5]; }; }, _control] call CBA_fnc_execNextFrame; GVAR(lastStillTime) = CBA_missionTime; GVAR(isShaking) = false; //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) = []; _control ctrlAddEventHandler ["Draw", {_this call FUNC(updateMapEffects)}]; _control ctrlAddEventHandler ["MouseMoving", { params ["_control", "_x", "_y"]; if (GVAR(isShaking) && {count GVAR(rightMouseButtonLastPos) == 2}) then { private _lastPos = _control ctrlMapScreenToWorld GVAR(rightMouseButtonLastPos); private _newPos = _control ctrlMapScreenToWorld [_x, _y]; 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) = [_x, _y]; TRACE_3("Mouse Move",_lastPos,_newPos,GVAR(rightMouseButtonLastPos)); }; }]; _control ctrlAddEventHandler ["MouseButtonDown", { params ["", "_button", "_x", "_y"]; if (_button == 1) then { GVAR(rightMouseButtonLastPos) = [_x, _y]; }; }]; _control ctrlAddEventHandler ["MouseButtonUp", { params ["", "_button"]; if (_button == 1) then { GVAR(rightMouseButtonLastPos) = []; }; }]; //get mouse position on map _control ctrlAddEventHandler ["MouseMoving", { params ["_control", "_x", "_y"]; GVAR(mousePos) = _control ctrlMapScreenToWorld [_x, _y]; }]; _control ctrlAddEventHandler ["MouseHolding", { params ["_control", "_x", "_y"]; GVAR(mousePos) = _control ctrlMapScreenToWorld [_x, _y]; }];