#define PIXEL_X (safeZoneWAbs / (getResolution select 0))
#define PIXEL_Y (safeZoneH / (getResolution select 1))
#define XHAIR RESUNITS_X * 4
#define COMPASS_W RESUNITS_X * 20
#define COMPASS_H COMPASS_W / 15
#define COMPASS_X RESCENTRE_X - COMPASS_W / 2
#define HELP_W RESUNITS_X * 75
#define HELP_H RESUNITS_Y * 75

class ace_spectator_overlay {

    idd = 12200;
    enableSimulation = 1;
    movingEnable = 1;
    enableDisplay = 1;
    onLoad = "uiNamespace setVariable ['ace_spectator_overlay', _this select 0]; ['Init', _this] call ace_spectator_fnc_overlay";

    class controls {
    
        class Unitlist {
            
            access = 0;
            idc = 0;
            type = CT_TREE; 
            style = ST_LEFT;  
            default = 0;
            blinkingPeriod = 0;

            x = QUOTE(safeZoneX);
            y = QUOTE(safeZoneY + RESUNITS_X * 4/3);
            w = QUOTE(RESUNITS_X * 30);
            h = QUOTE(RESUNITS_Y * 50);

            colorBorder[] = {1,1,1,1};

            colorBackground[] = {0.1,0.1,0.1,1};
            colorSelect[] = {1,0.5,0,1};
            colorMarked[] = {1,0.5,0,0.5};
            colorMarkedSelected[] = {1,0.5,0,1};

            sizeEx = QUOTE(RESUNITS_Y * 2);
            font = GUI_FONT_NORMAL;
            shadow = 1;
            colorText[] = {1,1,1,1};
            colorSelectText[] = {1,1,1,1};
            colorMarkedText[] = {1,1,1,1};

            tooltip = "";
            tooltipColorShade[] = {0,0,0,1};
            tooltipColorText[] = {1,1,1,1};
            tooltipColorBox[] = {1,1,1,1};

            multiselectEnabled = 0;
            expandOnDoubleclick = 0;
            hiddenTexture = "A3\ui_f\data\gui\rsccommon\rsctree\hiddenTexture_ca.paa";
            expandedTexture = "A3\ui_f\data\gui\rsccommon\rsctree\expandedTexture_ca.paa";
            maxHistoryDelay = 1;

            class ScrollBar {
                width = 0;
                height = 0;
                scrollSpeed = 0.01;

                arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
                arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
                border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
                thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";

                color[] = {1,1,1,1};
            };

            colorDisabled[] = {0,0,0,0};
            colorArrow[] = {0,0,0,0};

            onDestroy = QUOTE(GVAR(mouseBusy) = false; false);
            onMouseEnter = QUOTE(GVAR(mouseBusy) = true; false);
            onMouseExit = QUOTE(GVAR(mouseBusy) = false; false);

            onTreeDblClick = "['Select', _this] call ace_spectator_fnc_overlay; false";
        };    
    };
};

class ace_spectator_vd {
    idd = 12201;
    enableSimulation = 1;
    enableDisplay = 0;
    movingEnable = 0;

    onLoad = "uiNamespace setVariable ['ace_spectator_vd', _this select 0]; ['Init', _this] call ace_spectator_fnc_viewDistance";
    
    class Controls {
    
        class BG: vip_rsc_box {
            x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
            y = QUOTE(safeZoneY + COMPASS_H);
            w = QUOTE(RESUNITS_X * 30);
            h = QUOTE(COMPASS_H);
            colorBackground[] = {0.1,0.1,0.1,1};
            onDestroy = QUOTE(GVAR(mouseBusy) = false; false);
        };
        
        class TitleFrame: vip_rsc_frame {
            x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
            y = QUOTE(safeZoneY + COMPASS_H);
            w = QUOTE(RESUNITS_X * 8);
            h = QUOTE(COMPASS_H);
            shadow = 2;
            colorText[]={1,1,1,1};
        };
        
        class Title: vip_rsc_text {
            style = ST_CENTER;
            x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
            y = QUOTE(safeZoneY + COMPASS_H);
            w = QUOTE(RESUNITS_X * 8);
            h = QUOTE(COMPASS_H);
            sizeEx = QUOTE(RESUNITS_Y * 2);
            font = GUI_FONT_NORMAL;
            shadow = 2;
            colorText[]={1,1,1,1};
            text = CSTRING(VD_Title);
        };
        
        class DistanceFrame: TitleFrame {
            x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 10.5);
            w = QUOTE(RESUNITS_X * 5);
        };
            
        class Distance: Title {
            idc = 1;
            x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 10.5);
            w = QUOTE(RESUNITS_X * 5);
            text = "";
        };
    
        class ButtonExit: vip_rsc_button {
            idc = 0;
            style = ST_CENTER;
            x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 5);
            y = QUOTE(safeZoneY + COMPASS_H);
            w = QUOTE(RESUNITS_X * 5);
            h = QUOTE(COMPASS_H);
            
            colorBackground[] = {1,1,1,1};
            sizeEx = QUOTE(RESUNITS_Y * 2);
            font = GUI_FONT_NORMAL;

            text = CSTRING(VD_Button);

            onButtonClick = "closeDialog 0; false";
            onMouseButtonDown = QUOTE(GVAR(mouseBusy) = true; false);
            onMouseButtonUp = QUOTE(GVAR(mouseBusy) = false; false);
        };
        
        class Slider {
            idc = 2;
        
            type = CT_XSLIDER;
            style = SL_HORZ;
            shadow = 2;
            
            x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 21.5);
            y = QUOTE(safeZoneY + COMPASS_H);
            w = QUOTE(RESUNITS_X * 9.5);
            h = QUOTE(COMPASS_H);
            color[] = {1,1,1,1};
            colorActive[] = {1,1,1,1};
            colorDisabled[] = {1,1,1,0.2};
            arrowEmpty = "\A3\ui_f\data\gui\cfg\slider\arrowEmpty_ca.paa";
            arrowFull = "\A3\ui_f\data\gui\cfg\slider\arrowFull_ca.paa";
            border = "\A3\ui_f\data\gui\cfg\slider\border_ca.paa";
            thumb = "\A3\ui_f\data\gui\cfg\slider\thumb_ca.paa";
            
            text = "";
            onSliderPosChanged = "['Slider', _this] call ace_spectator_fnc_viewDistance";
            onMouseButtonDown = QUOTE(GVAR(mouseBusy) = true; false);
            onMouseButtonUp = QUOTE(GVAR(mouseBusy) = false; false);
        };
    };
};

class ace_spectator_map {

    idd = 12202;
    enableSimulation = 1; 
    enableDisplay = 0;
    onLoad = "uiNameSpace setVariable ['ace_spectator_map', _this select 0]; ['Init', _this select 0] call ace_spectator_fnc_map";
    onUnload = "['Close', _this select 0] call ace_spectator_fnc_map";
    onKeyDown = "['KeyDown', _this] call ace_spectator_fnc_map";
    
    class controls {
        //changes stolen from ACE_map
        class Map {
            access = 0;
            idc = 1; 
            type = CT_MAP_MAIN;
            style = ST_PICTURE;
            default = 0;
            blinkingPeriod = 0; 

            x = safeZoneXAbs;
            y = safeZoneY;
            w = safeZoneWAbs;
            h = safeZoneH;

            sizeEx = GUI_GRID_CENTER_H;
            font = GUI_FONT_NORMAL;
            colorText[] = {0,0,0,1};
            text = "#(argb,8,8,3)color(1,1,1,1)"; 

            moveOnEdges = 1;

            ptsPerSquareSea =    5;
            ptsPerSquareTxt =    20;
            ptsPerSquareCLn =    10;
            ptsPerSquareExp =    10;
            ptsPerSquareCost =    10;

            ptsPerSquareFor =    9;
            ptsPerSquareForEdge =    9;
            ptsPerSquareRoad =    6;
            ptsPerSquareObj =    9;

            scaleMin = 0.001;
            scaleMax = 1.0;
            scaleDefault = 0.16;

            alphaFadeStartScale = 2;
            alphaFadeEndScale = 2;
            maxSatelliteAlpha = 0.5;
        
            colorBackground[] = {0.929412, 0.929412, 0.929412, 1.0};
            colorOutside[] = {0.929412, 0.929412, 0.929412, 1.0};
            colorSea[] = {0.4,0.6,0.8,0.5}; 
            colorForest[] = {0.6, 0.8, 0.2, 0.25};
            colorForestBorder[] = {0.6,0.8,0.4,1}; 
            colorRocks[] = {0.50, 0.50, 0.50, 0.50};  
            colorRocksBorder[] = {0,0,0,1};
            colorLevels[] = {0.0, 0.0, 0.0, 1.0};
            colorMainCountlines[] = {0.858824, 0, 0,1};
            colorCountlines[] = {0.647059, 0.533333, 0.286275, 1};
            colorMainCountlinesWater[] = {0.5,0.6,0.7,0.6};
            colorCountlinesWater[] = {0.5,0.6,0.7,0.3};
            colorPowerLines[] = {0.1,0.1,0.1,1};
            colorRailWay[] = {0.8,0.2,0,1};
            colorNames[] = {1.1,0.1,1.1,0.9};
            colorInactive[] = {1,1,0,0.5};
            colorTracks[] = {0.2,0.13,0,1};
            colorTracksFill[] = {1,0.88,0.65,0.3};
            colorRoads[] = {0.2,0.13,0,1};
            colorRoadsFill[] = {1,0.88,0.65,1};
            colorMainRoads[] = {0.0,0.0,0.0,1};
            colorMainRoadsFill[] = {0.94,0.69,0.2,1};
            colorGrid[] = {0.05,0.1,0,0.6};
            colorGridMap[] = {0.05,0.1,0,0.4};

            fontLabel="PuristaMedium";
            sizeExLabel="(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
            fontGrid="TahomaB";
            sizeExGrid = 0.032;
            fontUnits="TahomaB";
            sizeExUnits="(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
            fontNames="EtelkaNarrowMediumPro";
            sizeExNames="(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2";
            fontInfo="PuristaMedium";
            sizeExInfo="(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
            fontLevel="TahomaB";
            sizeExLevel=0.03;
            showCountourInterval = 1;

            class Task {
                icon = "#(argb,8,8,3)color(1,1,1,1)";
                color[] = {1,1,0,1};

                iconCreated = "#(argb,8,8,3)color(1,1,1,1)";
                colorCreated[] = {0,0,0,1};

                iconCanceled = "#(argb,8,8,3)color(1,1,1,1)";
                colorCanceled[] = {0,0,0,0.5};

                iconDone = "#(argb,8,8,3)color(1,1,1,1)";
                colorDone[] = {0,1,0,1};

                iconFailed = "#(argb,8,8,3)color(1,1,1,1)";
                colorFailed[] = {1,0,0,1};

                size = 8;
                importance = 1;
                coefMin = 1;
                coefMax = 1;
            };
            class ActiveMarker { //includes icons spawned by drawIcon
                color[] = {0,0,0,1};
                size = 2;
                coefMin = 1; //make sure icon doesnt scale
            };
            class Waypoint {
                coefMax = 1;
                coefMin = 4;
                color[] = {0,0,0,1};
                icon = "#(argb,8,8,3)color(0,0,0,1)";
                importance = 1;
                size = 2;
            };
            class WaypointCompleted: Waypoint{};
            class CustomMark: Waypoint{};
            class Command: Waypoint{};
            class Bush {
                icon = "";
                color[] = {0.450000, 0.640000, 0.330000, 0.0};
                size = 14;
                importance = "0.2 * 14 * 0.05";
                coefMin = 0.250000;
                coefMax = 4;
            };
            class Rock: Waypoint{color[]={0.45,0.64,0.33,0.4}; importance="0.5 * 12 * 0.05";};
            class SmallTree {
                icon = "";
                color[] = {0.450000, 0.640000, 0.330000, 0.0};
                size = 12;
                importance = "0.6 * 12 * 0.05";
                coefMin = 0.250000;
                coefMax = 4;
            };
            class Tree {
                icon = "";
                color[] = {0.450000, 0.640000, 0.330000, 0.0};
                size = 12;
                importance = "0.9 * 16 * 0.05";
                coefMin = 0.250000;
                coefMax = 4;
            };
            class Legend {
                x = SafeZoneX+SafeZoneW-.340;
                y = SafeZoneY+SafeZoneH-.152;
                font = "PuristaMedium";
                w = .340;
                h = .152;
                sizeEx = 0.039210;
                colorBackground[] = {0.906000, 0.901000, 0.880000, 0.5};
                color[] = {0, 0, 0, 0.75};
            };
            class BusStop: Waypoint{};
            class FuelStation: Waypoint{};
            class Hospital: Waypoint{};
            class Church: Waypoint{};
            class Lighthouse: Waypoint{};
            class Power: Waypoint{};
            class PowerSolar: Waypoint{};
            class PowerWave: Waypoint{};
            class PowerWind: Waypoint{};
            class Quay: Waypoint{};
            class Transmitter: Waypoint{};
            class Watertower: Waypoint{};
            class Cross: Waypoint{};
            class Chapel: Waypoint{};
            class Shipwreck: Waypoint{};
            class Bunker: Waypoint{};
            class Fortress: Waypoint{};
            class Fountain: Waypoint{};
            class Ruin: Waypoint{};
            class Stack: Waypoint{};
            class Tourism: Waypoint{};
            class ViewTower: Waypoint{};
        };
    };
};

class RscTitles {
    class ace_spectator_crosshair {

        onLoad = "uiNamespace setVariable ['ace_spectator_crosshair', _this select 0]";
        
        idd=-1;
        movingEnable=0;
        fadein=0;
        fadeout=0;
        duration=1e+011;

        class controls {
        
            class X: vip_rsc_picture {
                idc = 0;
                x = QUOTE(RESCENTRE_X - XHAIR / 2);
                y = QUOTE(RESCENTRE_Y - XHAIR * 4/3 / 2);
                w = QUOTE(XHAIR);
                h = QUOTE(XHAIR * 4/3);
                text = "\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa";
                colorText[] = {1,1,1,0.8};
            };
        };
    };

    class ace_spectator_status {

        onLoad = "uiNamespace setVariable ['ace_spectator_status', _this select 0]; [_this select 0] call ace_spectator_fnc_status";
        idd = -1;
        movingEnable=0;
        fadein=0;
        fadeout=0;
        duration=1e+011;

        class controls {
        
            class BGRight: vip_rsc_box {
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
                y = QUOTE(safeZoneY);
                w = QUOTE(RESUNITS_X * 30);
                h = QUOTE(COMPASS_H);
                colorBackground[] = {0.1,0.1,0.1,1};
            };
            
            class BGLeft: BGRight {
                x = QUOTE(safeZoneX);
            };
            
            class SpeedFrame: vip_rsc_frame {
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 5);
                y = QUOTE(safeZoneY);
                w = QUOTE(RESUNITS_X * 5);
                h = QUOTE(COMPASS_H);
                shadow = 2;
                colorText[]={1,1,1,1};
            };
            
            class Speed: vip_rsc_text {
                idc = 0;
                style = ST_CENTER;
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 5);
                y = QUOTE(safeZoneY);
                w = QUOTE(RESUNITS_X * 5);
                h = QUOTE(COMPASS_H);
                colorText[]={1,1,1,1};
                sizeEx = QUOTE(RESUNITS_Y * 2);
                font = GUI_FONT_NORMAL;
                text = "";
            };
            
            class FovFrame: SpeedFrame {
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 10.5);
            };
            
            class Fov: Speed {
                idc = 4;
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 10.5);
            };
            
            class TimeAccFrame: SpeedFrame {
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 21.5);
            };
            
            class TimeAcc: Speed {
                idc = 5;
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 21.5);
            };
            
            class FocusFrame: SpeedFrame {
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 16);
            };
            
            class Focus: Speed {
                idc = 6;
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 16);
            };
            
            class NameFrame: SpeedFrame {    
                x = QUOTE(safeZoneX);
                w = QUOTE(RESUNITS_X * 24.5);
            };
            
            class Name: Speed {
                idc = 1;
                x = QUOTE(safeZoneX);
                w = QUOTE(RESUNITS_X * 24.5);
            };
            
            class ModeFrame: SpeedFrame {
                x = QUOTE(safeZoneX + RESUNITS_X * 25);
            };
            
            class Mode: Speed {
                idc = 2;
                x = QUOTE(safeZoneX + RESUNITS_X * 25);    
            };
            
            class TimeFrame: SpeedFrame {
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
                w = QUOTE(RESUNITS_X * 8);
            };
            
            class Time: Speed {
                idc = 3;
                x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
                w = QUOTE(RESUNITS_X * 8);
            };
        };
    };

    class ace_spectator_compass {

        onLoad = "uiNamespace setVariable ['ace_spectator_compass', _this select 0]";
        onUnload = "";
        idd=-1;
        movingEnable=0;
        fadein=0;
        fadeout=0;
        duration=1e+011;

        class controls {
            
            class BG: vip_rsc_box {
                x = QUOTE(COMPASS_X);
                y = QUOTE(safeZoneY);
                w = QUOTE(COMPASS_W);
                h = QUOTE(COMPASS_H);
                colorBackground[] = {0.1,0.1,0.1,1};
            };
            
            class 0_90: vip_rsc_picture {
                idc = 1;
                x = QUOTE(RESCENTRE_X);
                y = QUOTE(safeZoneY);
                w = QUOTE(COMPASS_W / 2);
                h = QUOTE(COMPASS_H);
                text = "A3\ui_f_curator\data\cfgIngameUI\compass\texture180_ca.paa";
            };
            
            class 90_180: 0_90 {
                idc = 2;
                x = QUOTE(RESCENTRE_X + COMPASS_W / 2);
                text = "A3\ui_f_curator\data\cfgIngameUI\compass\texture270_ca.paa";
            };
            
            class 180_270: 0_90 {
                idc = 3;
                x = QUOTE(RESCENTRE_X + COMPASS_W);
                text = "A3\ui_f_curator\data\cfgIngameUI\compass\texture0_ca.paa";
            };
            
            class 270_0: 0_90 {
                idc = 4;
                x = QUOTE(RESCENTRE_X + COMPASS_W * 1.5);
                text = "A3\ui_f_curator\data\cfgIngameUI\compass\texture90_ca.paa";
            };
            
            class Post: vip_rsc_box {
                x = QUOTE(COMPASS_X + COMPASS_W / 2);
                y = QUOTE(safeZoneY);
                w = QUOTE(PIXEL_X * 2);
                h = QUOTE(COMPASS_H);
                colorBackground[]={1,0,0,1};
            };
            
            class LeftBlocker: vip_rsc_box {
                x = QUOTE(COMPASS_X - COMPASS_W / 2);
                y = QUOTE(safeZoneY);
                w = QUOTE(COMPASS_W / 2);
                h = QUOTE(COMPASS_H);
                colorBackground[] = {0.1,0.1,0.1,1};
            };
            
            class RightBlocker: LeftBlocker {
                x = QUOTE(COMPASS_X + COMPASS_W);
            };
            
            class Frame: vip_rsc_frame {
                x = QUOTE(COMPASS_X);
                y = QUOTE(safeZoneY);
                w = QUOTE(COMPASS_W);
                h = QUOTE(COMPASS_H);
                shadow=2;
                colorText[]={1,1,1,1};
            };
        };
    };

    class ace_spectator_help {

        onLoad = "uiNamespace setVariable ['ace_spectator_help', _this select 0]; ['Help', _this select 0] call ace_spectator_fnc_camera";
        idd = -1;
        movingEnable=0;
        fadein=0;
        fadeout=0;
        duration=1e+011;

        class controls {
        
            class BG: vip_rsc_box {
                idc = -1;
                x = QUOTE(RESCENTRE_X - HELP_W / 2);
                y = QUOTE(RESCENTRE_Y - HELP_H / 2);
                w = QUOTE(HELP_W);
                h = QUOTE(HELP_H);
                colorBackground[] = {0.1,0.1,0.1,1};
            };
            
            class Title: vip_rsc_text {
                idc = 0;
                style = ST_CENTER;
                x = QUOTE(RESCENTRE_X - RESUNITS_X * 25);
                y = QUOTE(RESCENTRE_Y - (HELP_H / 2) + RESUNITS_Y * 3);
                w = QUOTE(RESUNITS_X * 50);
                h = QUOTE(RESUNITS_Y * 4);
                colorText[]={1,1,1,1};
                sizeEx = QUOTE(RESUNITS_Y * 4);
                font = GUI_FONT_NORMAL;
                text = "ACE Spectator Controls";
            };
            
            class LeftColumn1 {
                idc = 1;
                type = CT_STRUCTURED_TEXT;
                style = ST_LEFT;
                x = QUOTE(RESCENTRE_X - HELP_W / 2 + RESUNITS_X * 3);
                y = QUOTE(RESCENTRE_Y - (HELP_H / 2) + RESUNITS_Y * 10);
                w = QUOTE(RESUNITS_X * 16.75);
                h = QUOTE(RESUNITS_Y * 63);
                text = "";
                size = QUOTE(RESUNITS_Y * 2.5);
                colorBackground[] = {0,0,0,0};
            };
            
            class LeftColumn2: LeftColumn1 {
                idc = 2;
                x = QUOTE(RESCENTRE_X - HELP_W / 2 + RESUNITS_X * 19.75);
            };
            
            class RightColumn1: LeftColumn1 {
                idc = 3;
                x = QUOTE(RESCENTRE_X + HELP_W / 2 - RESUNITS_X * 3 - RESUNITS_X * 29.5);
            };
            
            class RightColumn2: LeftColumn1 {
                idc = 4;
                x = QUOTE(RESCENTRE_X + HELP_W / 2 - RESUNITS_X * 3 - RESUNITS_X * 11.75);
            };
        };
    };
};