// by esteldunedain, LorenLuke

#include "script_component.hpp"

if (!hasInterface) exitWith {};

// Init variables
GVAR(mapGpsShow) = true;
GVAR(mapGpsNextUpdate) = -1;

GVAR(mapTool_Shown) = 0;
GVAR(mapTool_pos) = [0, 0];
GVAR(mapTool_angle) = 0;
GVAR(mapTool_isDragging) = false;
GVAR(mapTool_isRotating) = false;
GVAR(mapTool_moveToMouse) = true;  // used to display it in center of screen when opened

GVAR(plottingBoard_Shown) = 0;
GVAR(plottingBoard_pos) = [0, 0];
GVAR(plottingBoard_angle) = 0;
GVAR(plottingBoard_acrylicAngle) = 0;
GVAR(plottingBoard_rulerAngle) = 0;
GVAR(plottingBoard_isDragging) = false;
GVAR(plottingBoard_isRotating) = -1;
GVAR(plottingBoard_moveToMouse) = true;  // used to display it in center of screen when opened
GVAR(plottingBoard_markers) = createHashMap;

// Install the event handers for the map tools on the main in-game map
[{
    !isNull findDisplay 12
}, {
    private _map = (findDisplay 12) displayCtrl 51;

    _map ctrlAddEventHandler ["MouseMoving", LINKFUNC(handleMouseMove)];
    _map ctrlAddEventHandler ["MouseButtonDown", {[1, _this] call FUNC(handleMouseButton);}];
    _map ctrlAddEventHandler ["MouseButtonUp", {[0, _this] call FUNC(handleMouseButton)}];
    _map ctrlAddEventHandler ["Draw", {call FUNC(updateMapToolMarkers); call FUNC(openMapGpsUpdate);}];
}, []] call CBA_fnc_waitUntilAndExecute;

["visibleMap", {
    params ["", "_mapOn"];
    if (!_mapOn) then {
        // Handle closing map in middle of line drawing (it's never created)
        GVAR(freedrawing) = false;
    };
}] call CBA_fnc_addPlayerEventHandler;

addMissionEventHandler ["MarkerCreated", {
    [_this, false] call FUNC(handlePlottingBoardMarkers);
}];

addMissionEventHandler ["MarkerDeleted", {
    [[_this select 0, -1, objNull, _this select 1], true] call FUNC(handlePlottingBoardMarkers);
}];

GVAR(freeDrawingData) = [];
GVAR(freedrawing) = false;