class RscButton;
class RscControlsGroup;
class RscControlsGroupNoScrollbars;
class RscListNBox {
    class ScrollBar;
};
class RscMapControl;
class RscPicture;
class RscPictureKeepAspect;
class RscText;
class RscToolbox;
class RscTree;
class EGVAR(common,CompassControl);

// Based on RscDisplayEGSpectator (sadly Arma doesn't like display inheritance)
class GVAR(display) {
    idd = IDD_SPEC_DISPLAY;
    enableSimulation = 1;
    movingEnable = 0;
    closeOnMissionEnd = 1;

    onLoad = QUOTE(_this call FUNC(ui_handleLoad));
    onUnload = QUOTE(_this call FUNC(ui_handleUnload));

    onKeyDown = QUOTE(_this call FUNC(ui_handleKeyDown));
    onKeyUp = QUOTE(_this call FUNC(ui_handleKeyUp));
    onMouseMoving = QUOTE(_this call FUNC(ui_handleMouseMoving));
    onChildDestroyed = QUOTE(_this call FUNC(ui_handleChildDestroyed));

    class ControlsBackground {
        class MouseHandler: RscText {
            idc = IDC_MOUSE;

            onMouseButtonDown = QUOTE(_this call FUNC(ui_handleMouseButtonDown));
            onMouseButtonUp = QUOTE(if ((_this select 1) == 1) then { GVAR(holdingRMB) = false; };);
            onMouseButtonDblClick = QUOTE(_this call FUNC(ui_handleMouseButtonDblClick));
            onMouseZChanged = QUOTE(_this call FUNC(ui_handleMouseZChanged));

            text = "";
            x = "safeZoneXAbs";
            y = "safeZoneY";
            w = "safeZoneWAbs";
            h = "safeZoneH";
            colorBackground[] = {1,1,1,0};
            style = 16;
        };
    };
    class Controls {
        class List: RscTree {
            idc = IDC_LIST;

            onMouseEnter = QUOTE([false] call FUNC(ui_fadeList));
            onMouseExit = QUOTE([true] call FUNC(ui_fadeList));
            onTreeSelChanged = QUOTE([ARR_2(false,_this)] call FUNC(ui_handleListClick));
            onTreeDblClick = QUOTE([ARR_2(true,_this)] call FUNC(ui_handleListClick));

            x = "safeZoneX";
            y = QUOTE(safeZoneY + H_PART(1.5));
            w = QUOTE(W_PART(13.5));
            h = QUOTE(safeZoneH - H_PART(1.5));

            disableKeyboardSearch = 1;
            multiselectEnabled = 0;
            colorBorder[] = {0,0,0,0};
            colorBackground[] = {0,0,0,0.75};
            expandOnDoubleclick = 1;
            fade = 0.8;
            shadow = 1;
            colorLines[] = {0,0,0,0};
            class ScrollBar {
                width = 0;
                height = 0;
                scrollSpeed = 0.1;
                color[] = {1,1,1,0};
            };
        };
        class Tabs: RscToolbox {
            idc = IDC_TABS;

            //onToolBoxSelChanged = QUOTE(_this call FUNC(ui_handleTabSelected));
            onMouseEnter = QUOTE([false] call FUNC(ui_fadeList));
            onMouseExit = QUOTE([true] call FUNC(ui_fadeList));

            x = "safeZoneX";
            y = "safezoneY";
            w = QUOTE(W_PART(13.5));
            h = QUOTE(H_PART(1.5));

            fade = 0.5;
            rows = 1;
            columns = 1;
            strings[] = {"$STR_A3_Spectator_Entities"};
            values[] = {0};
            sizeEx = QUOTE(H_PART(1));
            colorBackground[] = {0,0,0,0.75};
            colorSelectedBg[] = {0,0,0,0.65};
        };
        class CameraTypesGroup: RscControlsGroupNoScrollbars {
            idc = IDC_CAM_TYPES;
            x = QUOTE(X_PART(15.5));
            y = QUOTE(safezoneY + safezoneH - H_PART(2.38));
            w = QUOTE(W_PART(8.6));
            h = 2.6;
            class controls {
                class CameraTypesBackground: RscText {
                    x = QUOTE(W_PART(0.6));
                    y = QUOTE(H_PART(0.4));
                    w = QUOTE(W_PART(7.5));
                    h = QUOTE(H_PART(2));
                    colorBackground[] = {0,0,0,0.75};
                };
                class Free: RscButton {
                    style = 48;
                    idc = IDC_FREE;

                    onButtonClick = QUOTE([MODE_FREE] call FUNC(cam_setCameraMode));

                    x = QUOTE(W_PART(1.3));
                    y = QUOTE(H_PART(0.8));
                    w = QUOTE(W_PART(1.63));
                    h = QUOTE(H_PART(1.37));

                    colorBackground[] = {0,0,0,0};
                    colorBackgroundDisabled[] = {0,0,0,0};
                    colorBackgroundActive[] = {0,0,0,0};
                    colorFocused[] = {0,0,0,0};
                    text = CAM_ICON_FREE;
                    tooltip = "$STR_A3_Spectator_free_camera_tooltip";
                };
                class Follow: RscButton {
                    style = 48;
                    idc = IDC_FOLLOW;

                    onButtonClick = QUOTE([MODE_FOLLOW] call FUNC(cam_setCameraMode));

                    x = QUOTE(W_PART(3.6));
                    y = QUOTE(H_PART(0.8));
                    w = QUOTE(W_PART(1.63));
                    h = QUOTE(H_PART(1.37));

                    colorBackground[] = {0,0,0,0};
                    colorBackgroundDisabled[] = {0,0,0,0};
                    colorBackgroundActive[] = {0,0,0,0};
                    colorFocused[] = {0,0,0,0};
                    text = CAM_ICON_FOLLOW;
                    tooltip = "$STR_A3_Spectator_3pp_camera_tooltip";
                };
                class Fps: RscButton {
                    style = 48;
                    idc = IDC_FPS;

                    onButtonClick = QUOTE([MODE_FPS] call FUNC(cam_setCameraMode));

                    x = QUOTE(W_PART(5.8));
                    y = QUOTE(H_PART(0.8));
                    w = QUOTE(W_PART(1.63));
                    h = QUOTE(H_PART(1.37));

                    colorBackground[] = {0,0,0,0};
                    colorBackgroundDisabled[] = {0,0,0,0};
                    colorBackgroundActive[] = {0,0,0,0};
                    colorFocused[] = {0,0,0,0};
                    text = CAM_ICON_FPS;
                    tooltip = "$STR_A3_Spectator_1pp_camera_tooltip";

                };
            };
        };
        class MapGroup: RscControlsGroupNoScrollbars {
            idc = IDC_MAP_GROUP;
            x = 0;
            y = 0.1;
            w = 1;
            h = 0.8;
            class controls {
                class MapHeader: RscText {
                    x = 0;
                    y = 0;
                    w = 1;
                    h = 0.05;
                    colorBackground[] = {0,0,0,0.75};
                };
                class MapFooter: RscText {
                    idc = IDC_MAP_FOOTER;
                    x = 0;
                    y = 0.75;
                    w = 1;
                    h = 0.05;
                    text = "";
                    style = 2;
                    colorBackground[] = {0,0,0,0.75};
                    sizeEx = QUOTE(H_PART(1));
                };
                class GameTimeText: RscText {
                    idc = IDC_TIME;
                    x = 0.01;
                    y = 0.76;
                    w = 0.29;
                    h = 0.03;
                    text = "00:00:00";
                    sizeEx = QUOTE(H_PART(1));
                };
                class MapTitle: RscText {
                    idc = IDC_MAP_TITLE;
                    x = 0.01;
                    y = 0.01;
                    w = 0.69;
                    h = 0.03;
                    text = "";
                    colorText[] = {1,1,1,1};
                    sizeEx = QUOTE(H_PART(1));
                };
                class SpectatorsCount: RscText {
                    idc = IDC_MAP_SPEC_NUM;
                    x = 0.97;
                    y = 0.01;
                    w = 0.03;
                    h = 0.03;
                    text = "";
                    colorText[] = {1,1,1,1};
                    sizeEx = QUOTE(H_PART(1));
                };
                class SpectatorsIcon: RscPictureKeepAspect {
                    x = 0.94;
                    y = 0.01;
                    w = 0.03;
                    h = 0.03;
                    text = CAM_ICON_FPS_SELECTED;
                };
            };
        };
        class Map: RscMapControl {
            idc = IDC_MAP;

            onDraw = QUOTE(_this call FUNC(ui_handleMapDraw));
            onMouseButtonClick = QUOTE(_this call FUNC(ui_handleMapClick));

            x = 0;
            y = 0.15;
            w = 1;
            h = 0.7;

            maxSatelliteAlpha = 0.75;
            colorBackground[] = {1,1,1,1};
        };
        class HelpBackground: RscText {
            idc = IDC_HELP_BACK;
            x = QUOTE(safezoneX + safezoneW - W_PART(12));
            y = QUOTE(safezoneY + safezoneH - H_PART(8));
            w = QUOTE(W_PART(12));
            h = QUOTE(H_PART(8));
            colorBackground[] = {0,0,0,0.75};
        };
        class Help: RscListNBox {
            class ListScrollBar: ScrollBar {};
            disableOverflow = 0;
            rowHeight = QUOTE(H_PART(1));
            idc = IDC_HELP;
            x = QUOTE(safezoneX + safezoneW - W_PART(12));
            y = QUOTE(safezoneY + safezoneH - H_PART(12));
            w = QUOTE(W_PART(12));
            h = QUOTE(H_PART(12));
        };
        class FocusInfo: RscControlsGroupNoScrollbars {
            idc = IDC_WIDGET;
            x = QUOTE(X_PART(12.9));
            y = QUOTE(Y_PART(24));
            w = QUOTE(W_PART(14.2));
            h = QUOTE(H_PART(3.5));
            class controls {
                class UpperBackground: RscText {
                    x = 0;
                    y = 0;
                    w = QUOTE(W_PART(14.2));
                    h = QUOTE(H_PART(1.4));
                    colorBackground[] = {0,0,0,0.75};
                };
                class StatsBackground: RscText {
                    x = 0;
                    y = QUOTE(H_PART(1.5));
                    w = QUOTE(W_PART(6));
                    h = QUOTE(H_PART(2));
                    colorBackground[] = {0,0,0,0.75};
                };
                class WeaponBackground: RscText {
                    x = QUOTE(W_PART(6.1));
                    y = QUOTE(H_PART(1.5));
                    w = QUOTE(W_PART(6));
                    h = QUOTE(H_PART(2));
                    colorBackground[] = {1,1,1,0.4};
                };
                class ThrowableBackground: RscText {
                    x = QUOTE(W_PART(12.2));
                    y = QUOTE(H_PART(1.5));
                    w = QUOTE(W_PART(2));
                    h = QUOTE(H_PART(2));
                    colorBackground[] = {1,1,1,0.4};
                };
                class Name: RscText {
                    shadow = 0;
                    idc = IDC_WIDGET_NAME;
                    text = "";
                    x = QUOTE(W_PART(0.1));
                    y = QUOTE(H_PART(0.1));
                    w = QUOTE(W_PART(10.8));
                    h = QUOTE(H_PART(1.2));
                    sizeEx = QUOTE(H_PART(1));
                };
                class VehiclePos: RscPictureKeepAspect {
                    idc = IDC_WIDGET_VEHICLE_POS;
                    text = "";
                    x = QUOTE(W_PART(11));
                    y = QUOTE(H_PART(0.2));
                    w = QUOTE(W_PART(1));
                    h = QUOTE(H_PART(1));
                };
                class VehicleType: RscPicture {
                    idc = IDC_WIDGET_VEHICLE;
                    text = "";
                    x = QUOTE(W_PART(12.1));
                    y = QUOTE(H_PART(0.2));
                    w = QUOTE(W_PART(2));
                    h = QUOTE(H_PART(1));
                };
                class UnitType: RscPictureKeepAspect {
                    idc = IDC_WIDGET_UNIT;
                    text = "";
                    x = QUOTE(W_PART(13.1));
                    y = QUOTE(H_PART(0.2));
                    w = QUOTE(W_PART(1));
                    h = QUOTE(H_PART(1));
                };
                class Kills: RscPictureKeepAspect {
                    text = "a3\Ui_f\data\IGUI\Cfg\MPTable\infantry_ca.paa";
                    x = QUOTE(W_PART(0.1));
                    y = QUOTE(H_PART(1.6));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.8));
                };
                class LandKills: RscPictureKeepAspect {
                    text = "a3\Ui_f\data\IGUI\Cfg\MPTable\soft_ca.paa";
                    x = QUOTE(W_PART(1.1));
                    y = QUOTE(H_PART(1.6));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.8));
                };
                class ArmoredKills: RscPictureKeepAspect {
                    text = "a3\Ui_f\data\IGUI\Cfg\MPTable\armored_ca.paa";
                    x = QUOTE(W_PART(2.1));
                    y = QUOTE(H_PART(1.6));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.8));
                };
                class AirKills: RscPictureKeepAspect {
                    text = "a3\Ui_f\data\IGUI\Cfg\MPTable\air_ca.paa";
                    x = QUOTE(W_PART(3.1));
                    y = QUOTE(H_PART(1.6));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.8));
                };
                class Deaths: RscPictureKeepAspect {
                    text = "a3\Ui_f\data\IGUI\Cfg\MPTable\killed_ca.paa";
                    x = QUOTE(W_PART(4.1));
                    y = QUOTE(H_PART(1.6));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.8));
                };
                class Total: RscPictureKeepAspect {
                    text = "a3\Ui_f\data\IGUI\Cfg\MPTable\total_ca.paa";
                    x = QUOTE(W_PART(5.1));
                    y = QUOTE(H_PART(1.6));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.8));
                };
                class Kills_Count: RscText {
                    style = 2;
                    shadow = 0;
                    idc = IDC_WIDGET_KILLS;
                    text = "";
                    x = QUOTE(W_PART(0.1));
                    y = QUOTE(H_PART(2.5));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.9));
                    sizeEx = QUOTE(H_PART(0.7));
                };
                class LandKills_Count: RscText {
                    style = 2;
                    shadow = 0;
                    idc = IDC_WIDGET_LAND;
                    text = "";
                    x = QUOTE(W_PART(1.1));
                    y = QUOTE(H_PART(2.5));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.9));
                    sizeEx = QUOTE(H_PART(0.7));
                };
                class ArmoredKills_Count: RscText {
                    style = 2;
                    shadow = 0;
                    idc = IDC_WIDGET_ARMORED;
                    text = "";
                    x = QUOTE(W_PART(2.1));
                    y = QUOTE(H_PART(2.5));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.9));
                    sizeEx = QUOTE(H_PART(0.7));
                };
                class AirKills_Count: RscText {
                    style = 2;
                    shadow = 0;
                    idc = IDC_WIDGET_AIR;
                    text = "";
                    x = QUOTE(W_PART(3.1));
                    y = QUOTE(H_PART(2.5));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.9));
                    sizeEx = QUOTE(H_PART(0.7));
                };
                class Deaths_Count: RscText {
                    style = 2;
                    shadow = 0;
                    idc = IDC_WIDGET_DEATHS;
                    text = "";
                    x = QUOTE(W_PART(4.1));
                    y = QUOTE(H_PART(2.5));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.9));
                    sizeEx = QUOTE(H_PART(0.7));
                };
                class Total_Count: RscText {
                    style = 2;
                    shadow = 0;
                    idc = IDC_WIDGET_TOTAL;
                    text = "";
                    x = QUOTE(W_PART(5.1));
                    y = QUOTE(H_PART(2.5));
                    w = QUOTE(W_PART(0.8));
                    h = QUOTE(H_PART(0.9));
                    sizeEx = QUOTE(H_PART(0.7));
                };
                class WeaponPicture: RscPictureKeepAspect {
                    idc = IDC_WIDGET_WEAPON;
                    text = "";
                    x = QUOTE(W_PART(6.2));
                    y = QUOTE(H_PART(1.6));
                    w = QUOTE(W_PART(5.8));
                    h = QUOTE(H_PART(1.8));
                };
                class ThrowablePicture: RscPictureKeepAspect {
                    idc = IDC_WIDGET_THROWABLE;
                    text = "";
                    x = QUOTE(W_PART(12.3));
                    y = QUOTE(H_PART(1.6));
                    w = QUOTE(W_PART(1.8));
                    h = QUOTE(H_PART(1.8));
                };
            };
        };
        class compass: EGVAR(common,CompassControl) {};
    };
};