class RscOpticsValue;
class RscMapControl;
class RscText;
class RscPicture;

class RscInGameUI {
    class RscUnitInfo;
    class GVAR(RscUnitInfo): RscUnitInfo {
        onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); {((_this select 0) displayCtrl _x) ctrlShow false} forEach [ARR_4(IDC_RETICLE,IDC_BODY,IDC_BLACK_LEFT,IDC_BLACK_RIGHT)]);
        controls[] = {"CA_FOVMode","ScriptedReticleHelper","trippleHeadLeft","trippleHeadRight","Reticle","Body"}; // don't change this order

        class CA_FOVMode: RscOpticsValue {  // idea by Taosenai. Apparently this can be used via isNil check to determine wheter the scope or the kolimator is used
            idc = 154;
            w = 0;
            h = 0;
        };

        class ScriptedReticleHelper: RscMapControl {
            onDraw = QUOTE(ctrlParent (_this select 0) call FUNC(animateReticle));
            idc = -1;
            w = 0;
            h = 0;
        };

        class Reticle: RscPicture {
            idc = IDC_RETICLE;
            text = QPATHTOF(rsc\spotting_scope_reticle_co.paa);
            x = POS_X;
            y = POS_Y;
            w = POS_W;
            h = POS_H;
        };

        class Body: Reticle {
            idc = IDC_BODY;
            text = QPATHTOF(rsc\spotting_scope_body_co.paa);
        };

        //These are just black side panels to cover the areas that the optics p3d doesn't cover
        //It will ONLY effect tripple head users as (safezoneX == safeZoneXAbs) for everyone else
        class trippleHeadLeft: RscText {
            idc = IDC_BLACK_LEFT;
            x = "safeZoneXAbs";
            Y = "safezoneY";
            w = QUOTE(POS_X_BASE(SIZEX) - safeZoneXAbs);
            h = "safeZoneH";
            colorBackground[] = {0,0,0,1};
        };

        class trippleHeadRight: trippleHeadLeft {
            idc = IDC_BLACK_RIGHT;
            x = QUOTE(safeZoneXAbs + safeZoneWAbs - (POS_X_BASE(SIZEX) - safeZoneXABS));
        };   
    };
};