상속: BaseWidget
예제 #1
0
        public RTSUnitDataPanel(RTSRenderer renderer, WidgetRenderer wr, UICUnitData _uic, UICCombatStats _uicCS)
        {
            uic = _uic;
            iconLib = renderer.IconLibrary;

            WidgetBase = new RectWidget(wr, renderer.LoadTexture2D(uic.PanelImage));
            WidgetBase.Width = uic.PanelSize.X;
            WidgetBase.Height = uic.PanelSize.Y;
            WidgetBase.Color = uic.PanelColor;

            icon = new RectWidget(wr);
            icon.Width = uic.IconSize;
            icon.Height = uic.IconSize;
            icon.Color = Color.White;
            icon.Offset = new Point(uic.IconBuffer, uic.IconBuffer);
            icon.Parent = WidgetBase;

            rectHealthBack = new RectWidget(wr);
            rectHealthBack.Width = uic.IconSize;
            rectHealthBack.Height = uic.HealthHeight;
            rectHealthBack.AlignX = Alignment.MID;
            rectHealthBack.OffsetAlignX = Alignment.MID;
            rectHealthBack.OffsetAlignY = Alignment.BOTTOM;
            rectHealthBack.Offset = new Point(0, uic.IconBuffer);
            rectHealthBack.Color = UserConfig.MainScheme.WidgetBorder;
            rectHealthBack.Parent = icon;

            rectHealthFore = new RectWidget(wr);
            rectHealthFore.Width = uic.IconSize;
            rectHealthFore.Height = uic.HealthHeight;
            rectHealthFore.AlignX = Alignment.MID;
            rectHealthFore.AlignY = Alignment.MID;
            rectHealthFore.OffsetAlignX = Alignment.MID;
            rectHealthFore.OffsetAlignY = Alignment.MID;
            rectHealthFore.Offset = new Point(0, 0);
            rectHealthFore.Color = uic.HealthMaxColor;
            rectHealthFore.Parent = rectHealthBack;

            txtName = new TextWidget(wr);
            txtName.Height = uic.TextHeight;
            txtName.OffsetAlignX = Alignment.RIGHT;
            txtName.Offset = new Point(uic.IconBuffer, 0);
            txtName.Color = UserConfig.MainScheme.Text;
            txtName.Parent = icon;

            combatData = new RectButton(wr, uic.CombatSize, uic.CombatSize, Color.Gray, Color.White, renderer.LoadTexture2D(uic.CombatImage));
            combatData.AlignX = Alignment.RIGHT;
            combatData.AlignY = Alignment.BOTTOM;
            combatData.OffsetAlignX = Alignment.RIGHT;
            combatData.OffsetAlignY = Alignment.BOTTOM;
            combatData.Parent = WidgetBase;

            uiCStats = new RTSUICombatStats(wr, _uicCS);
            uiCStats.WidgetBase.AlignY = Alignment.BOTTOM;
            uiCStats.WidgetBase.Anchor = new Point(1000000, 1000000);

            uiCSHover = new RTSUIHoverPanel(combatData, uiCStats.WidgetBase);
        }
예제 #2
0
 public TextInputWidget(WidgetRenderer wr, SpriteFont f = null, Texture2D t = null)
     : base(wr, f)
 {
     Caret                    = new RectWidget(wr, t);
     Caret.Parent             = this;
     Caret.Width              = 1;
     Caret.Height             = Height;
     TextInput                = new TextInput();
     TextInput.OnTextChanged += tInput_OnTextChanged;
     TextInput.OnCaretMoved  += TextInput_OnCaretMoved;
 }
예제 #3
0
 public TextInputWidget(WidgetRenderer wr, SpriteFont f = null, Texture2D t = null)
     : base(wr, f)
 {
     Caret = new RectWidget(wr, t);
     Caret.Parent = this;
     Caret.Width = 1;
     Caret.Height = Height;
     TextInput = new TextInput();
     TextInput.OnTextChanged += tInput_OnTextChanged;
     TextInput.OnCaretMoved += TextInput_OnCaretMoved;
 }
예제 #4
0
        public RTSUIAlertQueue(WidgetRenderer _wr, UICAlertQueue _uic)
        {
            uic = _uic;
            wr = _wr;

            WidgetBase = new RectWidget(wr);
            WidgetBase.Color = Color.Transparent;
            WidgetBase.LayerOffset = 0.01f;
            WidgetBase.OffsetAlignX = Alignment.RIGHT;
            WidgetBase.Offset = new Point(-uic.Width, 0);

            lRects = new LinkedList<AlertTuple>();
        }
예제 #5
0
        public ScrollMenu(WidgetRenderer wr, int w, int h, int bCount, int sbw, int sbh)
        {
            Widget        = new RectWidget(wr);
            Widget.Width  = w;
            Widget.Height = h * bCount;

            scrollBar            = new ScrollBar(wr);
            scrollBar.IsVertical = true;
            scrollBar.Width      = sbw;
            scrollBar.ScrollButton.InactiveWidth  = scrollBar.Width;
            scrollBar.ScrollButton.InactiveHeight = sbh;
            scrollBar.ScrollButton.ActiveWidth    = scrollBar.Width;
            scrollBar.ScrollButton.ActiveHeight   = sbh;
            scrollBar.Height       = Widget.Height;
            scrollBar.OffsetAlignX = Alignment.RIGHT;
            scrollBar.Parent       = Widget;
            scrollBar.ScrollRatio  = 0;


            buttons     = new RectButton[bCount];
            buttonsText = new TextWidget[buttons.Length];
            for (int i = 0; i < buttons.Length; i++)
            {
                buttons[i] = new RectButton(wr, Widget.Width, h, Color.Black, Color.White);
                if (i > 0)
                {
                    buttons[i].Parent       = buttons[i - 1];
                    buttons[i].OffsetAlignY = Alignment.BOTTOM;
                    buttons[i].LayerOffset  = 0f;
                }
                else
                {
                    buttons[i].Parent = Widget;
                }
                buttonsText[i]              = new TextWidget(wr);
                buttonsText[i].Height       = (int)(TEXT_H_RATIO * buttons[i].Height);
                buttonsText[i].Text         = "";
                buttonsText[i].Offset       = new Point(TEXT_X_OFF, 0);
                buttonsText[i].AlignX       = Alignment.LEFT;
                buttonsText[i].AlignY       = Alignment.MID;
                buttonsText[i].OffsetAlignX = Alignment.LEFT;
                buttonsText[i].OffsetAlignY = Alignment.MID;
                buttonsText[i].Parent       = buttons[i];
            }

            BaseColor          = Color.Black;
            HighlightColor     = Color.DarkSlateGray;
            TextColor          = Color.White;
            ScrollBarBaseColor = Color.Red;
        }
예제 #6
0
        public ScrollMenu(WidgetRenderer wr, int w, int h, int bCount, int sbw, int sbh)
        {
            Widget = new RectWidget(wr);
            Widget.Width = w;
            Widget.Height = h * bCount;

            scrollBar = new ScrollBar(wr);
            scrollBar.IsVertical = true;
            scrollBar.Width = sbw;
            scrollBar.ScrollButton.InactiveWidth = scrollBar.Width;
            scrollBar.ScrollButton.InactiveHeight = sbh;
            scrollBar.ScrollButton.ActiveWidth = scrollBar.Width;
            scrollBar.ScrollButton.ActiveHeight = sbh;
            scrollBar.Height = Widget.Height;
            scrollBar.OffsetAlignX = Alignment.RIGHT;
            scrollBar.Parent = Widget;
            scrollBar.ScrollRatio = 0;

            buttons = new RectButton[bCount];
            buttonsText = new TextWidget[buttons.Length];
            for(int i = 0; i < buttons.Length; i++) {
                buttons[i] = new RectButton(wr, Widget.Width, h, Color.Black, Color.White);
                if(i > 0) {
                    buttons[i].Parent = buttons[i - 1];
                    buttons[i].OffsetAlignY = Alignment.BOTTOM;
                    buttons[i].LayerOffset = 0f;
                }
                else {
                    buttons[i].Parent = Widget;
                }
                buttonsText[i] = new TextWidget(wr);
                buttonsText[i].Height = (int)(TEXT_H_RATIO * buttons[i].Height);
                buttonsText[i].Text = "";
                buttonsText[i].Offset = new Point(TEXT_X_OFF, 0);
                buttonsText[i].AlignX = Alignment.LEFT;
                buttonsText[i].AlignY = Alignment.MID;
                buttonsText[i].OffsetAlignX = Alignment.LEFT;
                buttonsText[i].OffsetAlignY = Alignment.MID;
                buttonsText[i].Parent = buttons[i];
            }

            BaseColor = Color.Black;
            HighlightColor = Color.DarkSlateGray;
            TextColor = Color.White;
            ScrollBarBaseColor = Color.Red;
        }
예제 #7
0
        public RTSUIMinimap(RTSRenderer renderer, WidgetRenderer wr, Texture2D tPhys, Texture2D tImp, UICMinimap uic)
        {
            tPhysical = tPhys;
            tImpact = tImp;

            WidgetBase = new RectWidget(wr);
            WidgetBase.Width = uic.ButtonWidth + uic.MapSize + uic.Buffer * 2;
            WidgetBase.Height = uic.MapSize + uic.Buffer * 2;
            WidgetBase.Color = uic.BaseColor;

            int bh = uic.MapSize / 2;
            btnPhysical = new RectButton(wr, uic.ButtonWidth, bh,
                uic.PhysicalInactiveColor,
                uic.PhysicalActiveColor,
                renderer.LoadTexture2D(uic.PhysicalTexture)
                );
            btnImpact = new RectButton(wr, uic.ButtonWidth, bh,
                uic.ImpactInactiveColor,
                uic.ImpactActiveColor,
                renderer.LoadTexture2D(uic.ImpactTexture)
                );

            btnPhysical.Offset = new Point(uic.Buffer, uic.Buffer);
            btnPhysical.Parent = WidgetBase;
            btnImpact.OffsetAlignY = Alignment.BOTTOM;
            btnImpact.Parent = btnPhysical;

            MapRect = new RectWidget(wr, tPhysical);
            MapRect.Width = uic.MapSize;
            MapRect.Height = uic.MapSize;
            MapRect.Color = Color.White;
            MapRect.OffsetAlignX = Alignment.RIGHT;
            MapRect.Parent = btnPhysical;

            btnPhysical.OnButtonPress += (b, p) => {
                MapRect.Texture = tPhysical;
            };
            btnImpact.OnButtonPress += (b, p) => {
                MapRect.Texture = tImpact;
            };
        }
예제 #8
0
        public RTSUICombatStats(WidgetRenderer wr, UICCombatStats _uic)
        {
            uic = _uic;

            WidgetBase = new RectWidget(wr);
            WidgetBase.Color = uic.BaseColor;
            WidgetBase.Width = uic.PanelWidth;
            WidgetBase.Height = (uic.TextHeight + uic.TextBuffer) * 5 + uic.TextBuffer;
            WidgetBase.LayerDepth = 0.1f;

            texts = new TextWidget[2 * 5];
            string[] s = {
                "Damage",
                "Range",
                "Attack Speed",
                "Armor",
                "Crit. Chance"
            };
            for(int i = 0; i < texts.Length; i++) {
                texts[i] = new TextWidget(wr);
                texts[i].OffsetAlignX = Alignment.MID;
                texts[i].AlignY = Alignment.BOTTOM;
                texts[i].Height = uic.TextHeight;
                texts[i].Color = uic.TextColor;
                if(i % 2 == 0) {
                    texts[i].AlignX = Alignment.RIGHT;
                    texts[i].Offset = new Point(-uic.TextSeparation / 2, (i / 2 + 1) * (uic.TextHeight + uic.TextBuffer));
                    texts[i].Text = s[i / 2];
                }
                else {
                    texts[i].AlignX = Alignment.LEFT;
                    texts[i].Offset = new Point(uic.TextSeparation / 2, (i / 2 + 1) * (uic.TextHeight + uic.TextBuffer));
                }
                texts[i].Parent = WidgetBase;
            }
        }
        public RTSUITeamDataPanel(WidgetRenderer wr)
        {
            rectBase = new RectWidget(wr);
            rectBase.Height = 60;

            rectPopPic = new RectWidget(wr);
            rectPopPic.Height = rectBase.Height - 4;
            rectPopPic.Width = rectPopPic.Height;
            rectPopPic.Offset = new Point(2, 2);
            rectPopPic.Parent = rectBase;

            rectCapital = new RectWidget(wr);
            rectCapital.Height = rectBase.Height / 2;
            rectCapital.OffsetAlignX = Alignment.RIGHT;
            rectCapital.AlignX = Alignment.RIGHT;
            rectCapital.Parent = rectBase;
            rectCapital.Color = Color.Transparent;

            textPopCur = new TextWidget(wr);
            textPopCur.Offset = new Point(5, 0);
            textPopCur.OffsetAlignX = Alignment.RIGHT;
            textPopCur.AlignY = Alignment.BOTTOM;
            textPopCur.OffsetAlignY = Alignment.MID;
            textPopCur.Height = rectBase.Height / 2;
            textPopCur.Parent = rectPopPic;

            textPopCap = new TextWidget(wr);
            textPopCap.Offset = new Point(5, 0);
            textPopCap.OffsetAlignX = Alignment.RIGHT;
            textPopCap.AlignY = Alignment.TOP;
            textPopCap.OffsetAlignY = Alignment.MID;
            textPopCap.Height = rectBase.Height / 2;
            textPopCap.Parent = rectPopPic;

            textCapital = new TextWidget(wr);
            textCapital.AlignX = Alignment.MID;
            textCapital.AlignY = Alignment.MID;
            textCapital.OffsetAlignX = Alignment.MID;
            textCapital.OffsetAlignY = Alignment.MID;
            textCapital.Height = (int)(rectCapital.Height * 0.9);
            textCapital.Parent = rectCapital;

            textVictory = new TextWidget(wr);
            textVictory.AlignX = Alignment.MID;
            textVictory.AlignY = Alignment.TOP;
            textVictory.OffsetAlignX = Alignment.MID;
            textVictory.OffsetAlignY = Alignment.BOTTOM;
            textVictory.Height = (int)(rectCapital.Height * 0.9);
            textVictory.Parent = rectCapital;

            Width = 400;

            ColorBase = UserConfig.MainScheme.WidgetBase;
            ColorPop = Color.White;
            ColorText = UserConfig.MainScheme.Text;

            VictoryText = "Victory Condition";
            Capital = 0;
            Population = 0;
            PopulationCap = 0;
        }
예제 #10
0
 public void Dispose()
 {
     if(rectBase != null) {
         rectBase.Dispose();
         rectBase = null;
     }
     if(rectPopPic != null) {
         rectPopPic.Dispose();
         rectPopPic = null;
     }
     if(rectCapital != null) {
         rectCapital.Dispose();
         rectCapital = null;
     }
     if(textPopCur != null) {
         textPopCur.Dispose();
         textPopCur = null;
     }
     if(textPopCap != null) {
         textPopCap.Dispose();
         textPopCap = null;
     }
     if(textCapital != null) {
         textCapital.Dispose();
         textCapital = null;
     }
     if(textVictory != null) {
         textVictory.Dispose();
         textVictory = null;
     }
 }
예제 #11
0
        public LEMenu(WidgetRenderer wr, UICLEMenu _uic)
        {
            uic = _uic;
            WidgetBase = new RectWidget(wr);
            WidgetBase.Color = UserConfig.MainScheme.WidgetBase;
            WidgetBase.Width = uic.TextInputBufferSize.X + uic.WidgetSpacing * 2;

            btns = new RectButton[5];
            for(int i = 0; i < btns.Length; i++) {
                btns[i] = new RectButton(wr,
                    i == 0 ? uic.TextInputBufferSize.X : (uic.TextInputBufferSize.X - uic.WidgetSpacing) / 2,
                    uic.TextInputBufferSize.Y,
                    UserConfig.MainScheme.WidgetInactive,
                    UserConfig.MainScheme.WidgetActive
                    );
            }
            txts = new TextWidget[3];
            for(int i = 0; i < txts.Length; i++) {
                txts[i] = new TextWidget(wr);
                txts[i].Height = uic.TextHeight;
                txts[i].Color = UserConfig.MainScheme.Text;
                txts[i].OffsetAlignX = Alignment.MID;
                txts[i].AlignX = Alignment.MID;
                if(i != 0) {
                    txts[i].OffsetAlignY = Alignment.MID;
                    txts[i].AlignY = Alignment.MID;
                }
            }
            txts[0].Text = "Map Name";
            txts[1].Text = "Save";
            txts[2].Text = "Load";

            tInputs = new TextInputWidget[3];
            for(int i = 0; i < tInputs.Length; i++) {
                tInputs[i] = new TextInputWidget(wr);
                tInputs[i].Height = uic.TextHeight;
                tInputs[i].Color = UserConfig.MainScheme.Text;
                tInputs[i].Caret.Width = 1;
                tInputs[i].Caret.Color = uic.CaretColor;
                tInputs[i].OffsetAlignX = Alignment.MID;
                tInputs[i].OffsetAlignY = Alignment.MID;
                tInputs[i].AlignX = Alignment.MID;
                tInputs[i].AlignY = Alignment.MID;
            }
            MapLocation = uic.DefaultMapLocText;
            MapWidth = uic.DefaultWidth;
            MapHeight = uic.DefaultHeight;

            txts[0].Parent = WidgetBase;
            txts[0].Offset = new Point(0, uic.WidgetSpacing);

            btns[0].OffsetAlignX = Alignment.MID;
            btns[0].OffsetAlignY = Alignment.BOTTOM;
            btns[0].Offset = new Point(0, uic.WidgetSpacing);
            btns[0].AlignX = Alignment.MID;
            btns[0].Parent = txts[0];
            btns[1].OffsetAlignX = Alignment.LEFT;
            btns[1].OffsetAlignY = Alignment.BOTTOM;
            btns[1].Offset = new Point(0, uic.WidgetSpacing);
            btns[1].AlignX = Alignment.LEFT;
            btns[1].Parent = btns[0];
            btns[2].OffsetAlignX = Alignment.RIGHT;
            btns[2].OffsetAlignY = Alignment.BOTTOM;
            btns[2].Offset = new Point(0, uic.WidgetSpacing);
            btns[2].AlignX = Alignment.RIGHT;
            btns[2].Parent = btns[0];
            for(int i = 0; i < 3; i++)
                tInputs[i].Parent = btns[i];
            for(int i = 0; i < 2; i++) {
                btns[i + 3].OffsetAlignY = Alignment.BOTTOM;
                btns[i + 3].Offset = new Point(0, uic.WidgetSpacing);
                btns[i + 3].Parent = btns[i + 1];
                txts[i + 1].Parent = btns[i + 3];
            }
            WidgetBase.Height = btns[4].Y + btns[4].Height + uic.WidgetSpacing;

            for(int i = 0; i < 3; i++) {
                btns[i].OnButtonPress += GetInputActivator(i);
            }
        }
예제 #12
0
 private void BuildBounds(RTSRenderer renderer)
 {
     rectBounds = new RectWidget(wrMain);
     rectBounds.Color = Color.Transparent;
     rectBounds.Anchor = new Point(0, 0);
     rectBounds.AlignX = Alignment.LEFT;
     rectBounds.AlignY = Alignment.TOP;
     rectBounds.Width = renderer.G.Viewport.Width;
     rectBounds.Height = renderer.G.Viewport.Height;
     renderer.Window.ClientSizeChanged += (sender, args) => {
         rectBounds.Width = renderer.G.Viewport.Width;
         rectBounds.Height = renderer.G.Viewport.Height;
     };
     rectBounds.LayerDepth = 1f;
 }
예제 #13
0
            public AlertTuple(int frames, WidgetRenderer wr, int buf, int w, int h, int th)
            {
                FramesLeft = frames;

                Base = new RectWidget(wr);
                Base.Color = UserConfig.MainScheme.WidgetBase;
                Base.Width = w;
                Base.Height = h;

                Icon = new RectWidget(wr);
                Icon.Offset = new Point(buf, buf);
                Icon.Color = Color.White;
                Icon.Height = h - buf * 2;
                Icon.Width = Icon.Height;
                Icon.Parent = Base;

                Text = new TextWidget(wr);
                Text.AlignY = Alignment.MID;
                Text.OffsetAlignX = Alignment.RIGHT;
                Text.OffsetAlignY = Alignment.MID;
                Text.Color = UserConfig.MainScheme.Text;
                Text.Offset = new Point(buf, 0);
                Text.Parent = Icon;
                Text.Height = th;
            }