コード例 #1
0
 public GUICheckbox(UDim2 position, UDim2 size, string checkedText, GUITheme theme)
     : this(position, size, checkedText, theme,
            theme.GetField <Image>(Image.Blank, "Checkbox.NormalImage"),
            theme.GetField <Image>(Image.Blank, "Checkbox.HoverImage"),
            theme.GetField <Image>(Image.Blank, "Checkbox.ActiveImage"))
 {
 }
コード例 #2
0
        public SingleplayerMenu(GUISystem system, GUITheme theme, MainWindow mainWindow)
            : base(system, new UDim2(0.35f, 0, 0.3f, 0), "Ace of Spades", theme)
        {
            IsDraggable = false;

            MaxSize = new UDim2(0, 400, 1f, 0);
            MinSize = new UDim2(0, 220, 0, 100);

            GUIButton backBtn = new GUIButton(new UDim2(0, 0, 0, 25), new UDim2(1f, 0, 0, 30),
                                              "Back to Main Menu", TextAlign.Center, theme);

            backBtn.OnMouseClick += (btn, mbtn) =>
            {
                if (mbtn == MouseButton.Left)
                {
                    mainWindow.SwitchScreen("MainMenu");
                }
            };

            GUIButton controlsBtn = new GUIButton(new UDim2(0, 0, 0, 60), new UDim2(1f, 0, 0, 30),
                                                  "View Controls", TextAlign.Center, theme);

            controlsBtn.OnMouseClick += (btn, mbtn) =>
            {
                if (mbtn == MouseButton.Left)
                {
                    mainWindow.StaticGui.ToggleControlsWindow(true);
                }
            };

            AddTopLevel(backBtn, controlsBtn);
        }
コード例 #3
0
        public TerraformWindow(GUISystem system, GUITheme theme)
            : base(system, new UDim2(0.25f, 0, 0.25f, 0), "Terraform Options", theme, false)
        {
            Position = new UDim2(0, 0, 0.75f, 0);
            MinSize  = new UDim2(0, 200, 0, 250);
            MaxSize  = new UDim2(0, 475, 0, 350);

            GUIForm form = new GUIForm(UDim2.Zero, new UDim2(1f, 0, 1f, 0), theme);

            GUILabel     brushSizeLabel;
            GUITextField brushSizeField;

            form.AddLabledTextField("Brush Size:", BrushSize.ToString(), new UDim2(0, 5, 0, 25),
                                    out brushSizeLabel, out brushSizeField);
            brushSizeField.OnTextChanged += BrushSizeField_OnTextChanged;

            GUILabel     riseHeightLabel;
            GUITextField riseHeightField;

            form.AddLabledTextField("Rise Height:", RiseHeight.ToString(), new UDim2(0, 5, 0, 30 + brushSizeLabel.Size.Y.Offset),
                                    out riseHeightLabel, out riseHeightField);
            riseHeightField.OnTextChanged += RiseHeightField_OnTextChanged;

            AddTopLevel(form);
        }
コード例 #4
0
 public GUIFrame(UDim2 position, UDim2 size, GUITheme theme)
     : base(theme)
 {
     Image    = theme.GetField <Image>(Image.Blank, "Frame.Image");
     Position = position;
     Size     = size;
 }
コード例 #5
0
        public FileBrowserWindow(GUISystem system, GUITheme theme, UDim2 size, string title,
                                 FileBrowserMode mode, string[] exts, FileBrowserCompleted callback)
            : base(system, size, title, theme)
        {
            this.mode     = mode;
            this.callback = callback;
            this.exts     = exts;

            BMPFont smallFont = theme.GetField <BMPFont>(null, "SmallFont", "Font");

            dirField            = new GUITextField(new UDim2(0, 0, 0, 20), new UDim2(1, -40, 0, 20), Environment.CurrentDirectory, TextAlign.Left, theme);
            dirField.Label.Font = smallFont;

            GUIButton goToDirBtn = new GUIButton(new UDim2(1, -40, 0, 20), new UDim2(0, 40, 0, 20), "Go", theme);

            goToDirBtn.OnMouseClick += (btn, mbtn) =>
            {
                ScanDir();
            };

            GUILabel fileNameLabel = new GUILabel(new UDim2(0, 0, 1, -40), new UDim2(1, -200, 0, 20), "File Name:", TextAlign.Left, theme);

            selectedFileLabel            = new GUITextField(new UDim2(0, 0, 1, -20), new UDim2(1, -200, 0, 20), "", TextAlign.Left, theme);
            selectedFileLabel.Label.Font = smallFont;
            GUIButton doneBtn = new GUIButton(new UDim2(1, -100, 1, -40), new UDim2(0, 100, 0, 40),
                                              mode == FileBrowserMode.OpenFile ? "Open" : "Save", TextAlign.Center, theme);

            doneBtn.OnMouseClick += (btn, mbtn) => { callback(this); Visible = false; };
            GUIButton cancelBtn = new GUIButton(new UDim2(1, -200, 1, -40), new UDim2(0, 100, 0, 40), "Cancel", TextAlign.Center, theme);

            cancelBtn.OnMouseClick += (btn, mbtn) => { Visible = false; };

            AddTopLevel(dirField, goToDirBtn, fileNameLabel, selectedFileLabel, doneBtn, cancelBtn);
            ScanDir();
        }
コード例 #6
0
 public GUIFrame(UDim2 position, UDim2 size)
 {
     Image       = Image.Blank;
     Image.Color = Color.Transparent;
     Position    = position;
     Size        = size;
 }
コード例 #7
0
        public void AddLabledTextField(string labelText, string defaultFieldText, UDim2 position,
                                       out GUITextField textField, UDim?fieldXLength = null)
        {
            GUILabel label;

            AddLabledTextField(labelText, defaultFieldText, position, out label, out textField, fieldXLength);
        }
コード例 #8
0
            public PlayerFrame(NetworkPlayer player, bool isOurPlayer, UDim2 position, UDim2 size, GUITheme theme)
                : base(position, size, Image.CreateBlank(Color.White))
            {
                Theme            = theme;
                NetPlayer        = player;
                this.isOurPlayer = isOurPlayer;

                nameLabel = new GUILabel(UDim2.Zero, UDim2.Fill, "", TextAlign.Left, theme)
                {
                    Parent = this
                };
                nameLabel.Font          = Theme.GetField <BMPFont>(null, "Leaderboard.PlayerLabel.Font");
                nameLabel.TextPadding.X = 6;

                scoreLabel = new GUILabel(UDim2.Zero, new UDim2(1f, -50, 1f, 0), "0", TextAlign.Right, theme)
                {
                    Parent = this
                };
                scoreLabel.Font          = Theme.GetField <BMPFont>(null, "Leaderboard.PlayerLabel.Font");
                scoreLabel.TextPadding.Z = 6;

                pingLabel = new GUILabel(UDim2.Zero, UDim2.Fill, "0ms", TextAlign.Right, theme)
                {
                    Parent = this
                };
                pingLabel.Font          = Theme.GetField <BMPFont>(null, "Leaderboard.PlayerLabel.Font");
                pingLabel.TextPadding.Z = 6;

                SetName(player.Name);
                SetScore(player.Score);
            }
コード例 #9
0
 public GUIColorPickerWindow(GUISystem system, UDim2 size, GUITheme theme,
                             bool closable = true)
     : base(system, size, "Color Picker", theme, closable)
 {
     ColorPicker = new GUIColorPicker(new UDim2(0, 5, 0, 25), new UDim2(1f, -10, 1f, -30), theme);
     AddTopLevel(ColorPicker);
 }
コード例 #10
0
 public GUIWindowBase(GUISystem system, UDim2 size)
     : base(system)
 {
     Visible = false;
     Size    = size;
     Center();
 }
コード例 #11
0
 public GUIWindowBase(GUISystem system, UDim2 position, UDim2 size)
     : base(system)
 {
     Visible  = false;
     Position = position;
     Size     = size;
 }
コード例 #12
0
        /// <inheritdoc />
        protected GuiElement()
        {
            Position         = new UDim2(0, 0, 0, 0);
            Size             = new UDim2(0, 100, 0, 100);
            CornerRadius     = 0;
            ZIndex           = 0;
            Visible          = true;
            BorderThickness  = 1;
            BorderColour     = Colour.Black;
            BackgroundColour = Colour.White;
            IsHitTestVisible = true;

            Measured          = new Signal(this);
            MouseButton1Click = new Signal(this);
            MouseButton1Down  = new Signal <int, int>(this);
            MouseButton1Up    = new Signal <int, int>(this);
            MouseButton2Click = new Signal(this);
            MouseButton2Down  = new Signal <int, int>(this);
            MouseButton2Up    = new Signal <int, int>(this);
            MouseEnter        = new Signal <int, int>(this);
            MouseLeave        = new Signal <int, int>(this);
            MouseMove         = new Signal <int, int>(this);
            MouseWheel        = new Signal <int, int, float>(this);
            GotFocus          = new Signal(this);
            LostFocus         = new Signal(this);

            MouseEnter.Event += OnMouseEnter;

            Renderer.InvokeResourceDependent(CreateResources);
        }
コード例 #13
0
 public BrowserOptionButton(UDim2 position, UDim2 size, GUITheme theme, string text, TextAlign textAlign,
                            bool gotoParent, bool isFolder)
     : base(position, size, text, textAlign, theme)
 {
     ParentOption = gotoParent;
     IsFolder     = isFolder;
 }
コード例 #14
0
 public GUIButton(UDim2 position, UDim2 size, string text, TextAlign textAlign, GUITheme theme)
     : this(position, size, text, textAlign, theme,
            theme.GetField <Image>(Image.Blank, "Button.NormalImage"),
            theme.GetField <Image>(Image.Blank, "Button.HoverImage"),
            theme.GetField <Image>(Image.Blank, "Button.ActiveImage"),
            theme.GetField <Image>(Image.Blank, "Button.ToggledImage"))
 {
 }
コード例 #15
0
 public GUILabel(UDim2 position, UDim2 size, string text, TextAlign textAlign, Color textColor, GUITheme theme)
     : this(position, size, text, textAlign,
            theme.GetField <BMPFont>(null, "Label.Font", "Font"),
            textColor,
            theme.GetField <Color?>(null, "Label.TextShadowColor"))
 {
     Theme = theme;
 }
コード例 #16
0
 public GUITextField(UDim2 position, UDim2 size, string text, GUITheme theme)
     : this(position, size, text, theme,
            theme.GetField <Image>(Image.Blank, "TextField.NormalImage"),
            theme.GetField <Image>(Image.Blank, "TextField.HoverImage"),
            theme.GetField <Image>(Image.Blank, "TextField.ActiveImage"),
            theme.GetField <Image>(Image.Blank, "TextField.ToggledImage"))
 {
 }
コード例 #17
0
 public void Center()
 {
     Position = new UDim2(
         (1f - Size.X.Scale) / 2f,
         -Size.X.Offset / 2f,
         (1f - Size.Y.Scale) / 2f,
         -Size.Y.Offset / 2f);
     Offset = Vector2.Zero;
 }
コード例 #18
0
        public MessageWindow(GUISystem system, GUITheme theme, UDim2 size, string title)
            : base(system, size, title, theme)
        {
            msgLabel = new GUILabel(UDim2.Zero, new UDim2(1f, 0, 1f, -30), "", TextAlign.Center, theme);
            GUIButton okBtn = new GUIButton(new UDim2(0.5f, -75, 1f, -30), new UDim2(0, 150, 0, 30), "Okay", theme);

            okBtn.OnMouseClick += (btn, mbtn) => { Visible = false; };
            AddTopLevel(msgLabel, okBtn);
        }
コード例 #19
0
        /// <summary>
        /// Updates <see cref="AbsoluteSize" /> and <see cref="AbsolutePosition" />.
        /// </summary>
        public virtual void Measure()
        {
            var parentGui      = Parent as GuiBase2D;
            var parentSize     = parentGui?.AbsoluteSize ?? (parentGui?.AbsoluteSize ?? new Vector2());
            var parentPosition = parentGui?.AbsolutePosition ?? new Vector2();

            AbsoluteSize = Size.toAbsolute(parentSize).round();

            var position = Position;

            var xScaleOffset    = 0.0f;
            var yScaleOffset    = 0.0f;
            var xAbsoluteOffset = 0;
            var yAbsoluteOffset = 0;
            var xMult           = 1;
            var yMult           = 1;

            if (_alignmentX == AlignmentX.Right)
            {
                xScaleOffset    = 1;
                xAbsoluteOffset = (int)-AbsoluteSize.X;
                xMult           = -1;
            }
            else if (_alignmentX == AlignmentX.Center)
            {
                xScaleOffset    = 0.5f;
                xAbsoluteOffset = (int)-AbsoluteSize.X / 2;
            }

            if (_alignmentY == AlignmentY.Bottom)
            {
                yScaleOffset    = 1;
                yAbsoluteOffset = (int)-AbsoluteSize.Y;
                yMult           = -1;
            }
            else if (_alignmentY == AlignmentY.Middle)
            {
                yScaleOffset    = 0.5f;
                yAbsoluteOffset = (int)-AbsoluteSize.Y / 2;
            }

            position = new UDim2(xScaleOffset + position.Scale.X * xMult, xAbsoluteOffset + position.Absolute.X * xMult,
                                 yScaleOffset + position.Scale.Y * xMult, yAbsoluteOffset + position.Absolute.Y * yMult);

            AbsolutePosition = (parentPosition + position.toAbsolute(parentSize)).round();

            Measured?.Fire();

            Arrange();

            foreach (var kv in Children)
            {
                var el = kv as GuiElement;
                el?.Measure();
            }
        }
コード例 #20
0
        public UDim2 Lerp(UDim2 other, float alpha)
        {
            float scaleX  = X.Scale + ((other.X.Scale - X.Scale) * alpha);
            int   offsetX = X.Offset + (int)((other.X.Offset - X.Offset) * alpha);

            float scaleY  = Y.Scale + ((other.Y.Scale - Y.Scale) * alpha);
            int   offsetY = Y.Offset + (int)((other.Y.Offset - Y.Offset) * alpha);

            return(new UDim2(scaleX, offsetX, scaleY, offsetY));
        }
コード例 #21
0
            public GUIHueSlider(GUIColorPicker picker, UDim2 position, UDim2 size, Image image)
                : base(position, size, image)
            {
                this.picker         = picker;
                CapturesMouseClicks = true;

                tracker = new GUIFrame(new UDim2(0, 0, 0, -1), new UDim2(1f, 0, 0, 3), Image.Blank)
                {
                    Parent = this, NeverCaptureMouse = true
                };
            }
コード例 #22
0
        public void WriteProperty(Property prop, XmlDocument doc, XmlNode node)
        {
            UDim2 value = prop.CastValue <UDim2>();

            UDim xUDim = value.X;

            UDimToken.WriteUDim(doc, node, xUDim, "X");

            UDim yUDim = value.Y;

            UDimToken.WriteUDim(doc, node, yUDim, "Y");
        }
コード例 #23
0
        public ObjectEditWindow(GUISystem system, GUITheme theme)
            : base(system, new UDim2(0.25f, 0, 0.25f, 0), "Edit <Object>", theme, false)
        {
            Position = new UDim2(0, 0, 0.75f, 0);
            MinSize  = new UDim2(0, 200, 0, 250);
            MaxSize  = new UDim2(0, 475, 0, 350);

            elements = new List <GUIElement>();

            form = new GUIForm(UDim2.Zero, new UDim2(1f, 0, 1f, 0), theme);
            AddTopLevel(form);

            Visible = false;
        }
コード例 #24
0
        public ChatBox(UDim2 position, UDim2 size, GUITheme theme, MultiplayerScreen screen)
            : base(position, size, theme)
        {
            this.screen = screen;
            items       = new List <ChatItem>();
            Image       = null;
            font        = AssetManager.LoadFont("arial-bold-11");

            textField = new GUITextField(new UDim2(0, 0, 1f, -15), new UDim2(1f, 0, 0, 30), theme)
            {
                Parent = this
            };

            textField.OnEnterPressed += TextField_OnEnterPressed;
        }
コード例 #25
0
ファイル: Util.cs プロジェクト: ShitpostMDX/LibRbxl
        public static UDim2[] ReadUDim2Array(EndianAwareBinaryReader reader, int count)
        {
            var scaleXValues  = ReadFloatArray(reader, count);
            var scaleYValues  = ReadFloatArray(reader, count);
            var offsetXValues = ReadInt32Array(reader, count);
            var offsetYValues = ReadInt32Array(reader, count);

            var values = new UDim2[count];

            for (var i = 0; i < count; i++)
            {
                values[i] = new UDim2(offsetXValues[i], scaleXValues[i], offsetYValues[i], scaleYValues[i]);
            }
            return(values);
        }
コード例 #26
0
            public ChatItem(GUITheme theme, float height, int numFeed,
                            string text, BMPFont font)
                : base(UDim2.Zero, UDim2.Zero, image: null)
            {
                Position = new UDim2(0, 0, 0, 20 + (height * numFeed));
                Size     = new UDim2(0, 1f, 0, height);

                label = new GUILabel(UDim2.Zero, new UDim2(0, 1, 1f, 0), text, TextAlign.Left, Color.White, theme)
                {
                    Parent = this
                };

                label.Font = font;

                TimeLeft = 60f;
            }
コード例 #27
0
        public void AddLabledCheckbox(string labelText, bool checkboxDefaultState, UDim2 position,
                                      out GUILabel label, out GUICheckbox checkbox)
        {
            label = new GUILabel(position, UDim2.Zero, labelText, TextAlign.Left, Theme);
            Vector2 textSize = label.Font.MeasureString(labelText);

            label.Size = new UDim2(0, textSize.X, 0, textSize.Y + (ElementPadding * 2));

            UDim labelXPos = position.X + new UDim(0, textSize.X + ElementPadding);

            checkbox           = new GUICheckbox(new UDim2(labelXPos, position.Y), label.Size.Y.Offset, Theme);
            checkbox.IsChecked = checkboxDefaultState;

            label.Parent    = this;
            checkbox.Parent = this;
        }
コード例 #28
0
        public GUICheckbox(UDim2 position, UDim2 size, string checkedText,
                           BMPFont font, Color textColor,
                           Image normalImg, Image hoverImg, Image activeImg)
        {
            Position = position;
            Size     = size;

            CapturesMouseClicks = true;
            Label = new GUILabel(UDim2.Zero, new UDim2(1f, 0, 1f, 0), checkedText, TextAlign.Center, font, textColor)
            {
                Parent = this, Visible = false
            };

            NormalImage = normalImg;
            HoverImage  = hoverImg;
            ActiveImage = activeImg;
        }
コード例 #29
0
        /// <inheritdoc />
        public BillboardGui()
        {
            _size        = new UDim2(0, 128, 0, 128);
            _offset      = Vector3.Zero;
            _alwaysOnTop = false;

            BuildTexture();
            UpdateRenderData();

            /*
             * InstanceBuffer = new Buffer(Renderer.Device, GraphicsManager.RenderDataObjectSize, ResourceUsage.Dynamic,
             *      BindFlags.VertexBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None,
             *      GraphicsManager.RenderDataObjectSize);
             *
             * GraphicsManager.BillboardVao.Add(this);
             */
        }
コード例 #30
0
            public GUIAlphaSlider(GUIColorPicker picker, UDim2 position, UDim2 size,
                                  Image checkerImage, Image alphaImage)
                : base(position, size, checkerImage)
            {
                this.picker         = picker;
                CapturesMouseClicks = true;

                overlay = new GUIFrame(UDim2.Zero, new UDim2(1f, 0, 1f, 0), alphaImage)
                {
                    Parent = this, NeverCaptureMouse = true
                };

                tracker = new GUIFrame(new UDim2(0, 0, 0, -1), new UDim2(1f, 0, 0, 3), Image.Blank)
                {
                    Parent = this, NeverCaptureMouse = true, ZIndex = 1
                };
            }