Beispiel #1
0
        public TextField TextField(int x, int y,
                                   int sizeX, int sizeY,
                                   Color textColor,
                                   SpriteFont font,
                                   ARenderStyle style,
                                   string hint = null,
                                   IHorizontalAlignable horizontalAlignment = null,
                                   IVerticalAlignable verticalAlignment     = null,
                                   IAlignmentTransition alignmentTransition = null,
                                   IColorPattern pattern       = null,
                                   TextAppenderHelper appender = null)
        {
            TextField textField = null;

            return(textField =
                       controlFactory.CreateTextBox(appender ?? TextAppenderHelper.Default,
                                                    font,
                                                    GetTexture(sizeX, sizeY, pattern),
                                                    new Region(new Vector2(x, y),
                                                               new Vector2(sizeX, sizeY)),
                                                    textColor,
                                                    style,
                                                    hint ?? string.Empty,
                                                    horizontalAlignment ?? HorizontalAlignment.Left,
                                                    verticalAlignment ?? VerticalAlignment.Center,
                                                    alignmentTransition ?? AlignmentTransition.Instant));
        }
Beispiel #2
0
 internal void SubscribeStyle(AControl control, ARenderStyle style)
 {
     this.Clicked          += (sender, args) => style.Clicked(control);
     this.GotFocus         += (sender, args) => style.Focus(control);
     this.LostFocus        += (sender, args) => style.Default(control);
     this.LostMouseCapture += (sender, args) => style.Default(control);
     this.GotMouseCapture  += (sender, args) => style.Hover(control);
     style.Default(control);
 }
Beispiel #3
0
 public Button Button(int x, int y,
                      int sizeX, int sizeY,
                      ARenderStyle style,
                      IColorPattern pattern)
 {
     return(controlFactory.CreateButton(new Region(new Vector2(x, y),
                                                   new Vector2(sizeX, sizeY)),
                                        GetTexture(sizeX, sizeY, pattern),
                                        style));
 }
Beispiel #4
0
        public AControl(Texture2D texture, Region region, ARenderStyle style, Region parent = null)
        {
            this.Region           = region;
            this.Sprite           = new Sprite(texture);
            this.RenderParameters = new RenderParameters();
            this.Options          = new Options();
            this.Events           = new ViewEvents <ControlEventArgs>(this, () => new ControlEventArgs());
            this.RenderStyle      = style;
            this.Events.SubscribeStyle(this, RenderStyle);
            this.Padding         = new Padding();
            this.ScreenAlignment = AlignmentContext.Default;
            this.RenderTemplate  = RenderTemplate.Default;

            ScreenAlignment.OnAlignmentChanged += (sender, args) => this.Align(parent ?? Settings.ViewRegion);
            region.onSizeChange     += (sender, args) => this.Align(parent ?? Settings.ViewRegion);
            region.onPositionChange += (sender, args) => this.Align(parent ?? Settings.ViewRegion);
        }
Beispiel #5
0
 public CheckBox CreateCheckBox(Texture2D backgroundTexture,
                                Texture2D checkedTexture,
                                Texture2D unCheckedTexture,
                                ARenderStyle style,
                                Region region,
                                IHorizontalAlignable checkBoxHorizontalAlignment,
                                IVerticalAlignable checkBoxVerticalAlignment,
                                string text,
                                SpriteFont font)
 {
     return(new CheckBox(backgroundTexture,
                         region,
                         style,
                         new AlignmentContext(checkBoxHorizontalAlignment, checkBoxVerticalAlignment, AlignmentTransition.Instant),
                         checkedTexture,
                         unCheckedTexture,
                         text,
                         font));
 }
Beispiel #6
0
 public CheckBox CheckBox(int x, int y,
                          int sizeX, int sizeY,
                          Texture2D backgroundTexture,
                          Texture2D checkedTexture,
                          Texture2D unCheckedTexture,
                          ARenderStyle style,
                          string text,
                          SpriteFont font)
 {
     return(controlFactory.CreateCheckBox(backgroundTexture,
                                          checkedTexture,
                                          unCheckedTexture,
                                          style,
                                          new Region(x, y, sizeX, sizeY),
                                          HorizontalAlignment.Right,
                                          VerticalAlignment.Center,
                                          text,
                                          font));
 }
Beispiel #7
0
 public TextField CreateTextBox(TextAppenderHelper appender,
                                SpriteFont font,
                                Texture2D texture,
                                Region region,
                                Color textcolor,
                                ARenderStyle style,
                                string hint,
                                IHorizontalAlignable horizontalAlignment,
                                IVerticalAlignable verticalAlignment,
                                IAlignmentTransition transition)
 {
     return(new TextField(appender,
                          font,
                          texture,
                          region,
                          textcolor,
                          style,
                          hint,
                          new AlignmentContext(horizontalAlignment, verticalAlignment, transition)));
 }
Beispiel #8
0
 public CheckBox CheckBox(int x, int y,
                          int sizeX, int sizeY,
                          IColorPattern backgroundPattern,
                          int checkboxSizeX, int checkboxSizeY,
                          IColorPattern checkedPattern,
                          IColorPattern unCheckedPattern,
                          ARenderStyle style,
                          string text,
                          SpriteFont font)
 {
     return(controlFactory.CreateCheckBox(GetTexture(sizeX, sizeY, backgroundPattern),
                                          GetTexture(checkboxSizeX, checkboxSizeY, checkedPattern),
                                          GetTexture(checkboxSizeX, checkboxSizeY, unCheckedPattern),
                                          style,
                                          new Region(x, y, sizeX, sizeY),
                                          HorizontalAlignment.Left,
                                          VerticalAlignment.Center,
                                          text,
                                          font));
 }
Beispiel #9
0
        public Slider Slider(int x, int y,
                             int sizeX, int sizeY,
                             int sliderSizeX, int sliderSizeY,
                             SliderInfo sliderInfo,
                             IColorPattern background,
                             IColorPattern slider,
                             IColorPattern filling,
                             IColorPattern border,
                             ARenderStyle style)
        {
            int offSet = 3;

            return(controlFactory.CreateSlider(sliderInfo,
                                               GetTexture(sizeX, sizeY + offSet * 2, background),
                                               GetTexture(sliderSizeX, sliderSizeY, slider),
                                               GetTexture(1, 1, filling),
                                               GetTexture(sizeX, sizeY, border),
                                               new Region(x, y - offSet, sizeX, sizeY + offSet * 2),
                                               new Region(x, y, sizeX, sizeY),
                                               new Region(x, y, sliderSizeX, sliderSizeY),
                                               style));
        }
Beispiel #10
0
        public Slider Slider(int x, int y,
                             int sizeX, int sizeY,
                             int sliderSizeX, int sliderSizeY,
                             SliderInfo sliderInfo,
                             Texture2D backgroundTexture,
                             Texture2D slider,
                             Texture2D filling,
                             Texture2D border,
                             ARenderStyle style)
        {
            float offSet = 3.0f;

            return(controlFactory.CreateSlider(sliderInfo,
                                               backgroundTexture,
                                               slider,
                                               filling,
                                               border,
                                               new Region(x - offSet, y - offSet, sizeX + offSet * 2, sizeY + offSet * 2),
                                               new Region(x, y, sizeX, sizeY),
                                               new Region(x, y, sliderSizeX, sliderSizeY),
                                               style));
        }
Beispiel #11
0
 public Slider CreateSlider(SliderInfo sliderInfo,
                            Texture2D backgroundTexture,
                            Texture2D slider,
                            Texture2D filling,
                            Texture2D border,
                            Region region,
                            Region borderRegion,
                            Region sliderRegion,
                            ARenderStyle style)
 {
     return(new Slider(sliderInfo,
                       new SliderDrawable(slider,
                                          border,
                                          filling,
                                          borderRegion,
                                          new AlignmentContext(HorizontalAlignment.Left,
                                                               VerticalAlignment.Center,
                                                               AlignmentTransition.Instant),
                                          sliderInfo.PercentageStep),
                       backgroundTexture,
                       region,
                       style));
 }
Beispiel #12
0
        internal TextField(TextAppenderHelper appender,
                           SpriteFont font,
                           Texture2D texture,
                           Region region,
                           Color textcolor,
                           ARenderStyle style,
                           string hint,
                           AlignmentContext alignmentContext)
            : base(texture, region, style)
        {
            int padding = 5;

            this.font         = font;
            this.appender     = appender;
            Events.LostFocus += (sender, args) => ShouldProcessInput = false;
            Events.GotFocus  += (sender, args) => ShouldProcessInput = true;

            timer          = new Timer();
            timer.Elapsed += new ElapsedEventHandler((sender, args) => showCursor = !showCursor);
            timer.Interval = appender.CursorFlickInterval;
            timer.Enabled  = true;

            this.hint = new StandardText(font, Vector2.Zero, hint, alignmentContext);
            this.hint.RenderParameters.Color = new Color(textcolor.R, textcolor.G, textcolor.B, 0.4f);
            Text = new StandardText(font, Vector2.Zero, null, alignmentContext);
            Text.RenderParameters.Color = textcolor;
            Text.Padding.Left           = padding;
            Text.Padding.Right          = padding;
            this.hint.Padding.Left      = padding;
            SetupCursor();

            //check if the buffer is not full
            appender.ShouldHandleKey += (key, keyToChar) =>
                                        ((Text.Region.Frame.Right + Text.Padding.Left + Text.Padding.Right
                                          + (font.MeasureString(keyToChar.ToString()).X) * Configuration.Settings.Scale.X)
                                         < (this.Region.Frame.Right));
        }
Beispiel #13
0
        internal CheckBox(Texture2D texture,
                          Region region,
                          ARenderStyle style,
                          AlignmentContext checkBoxAlignment,
                          Texture2D checkedTexture,
                          Texture2D unCheckedTexture,
                          string text,
                          SpriteFont font)
            : base(texture, region, style)
        {
            int offset = 3;

            this.RenderStyle = style;
            checkBox         = new Button(unCheckedTexture, new Region(0, 0, unCheckedTexture.Width, unCheckedTexture.Height), Style.NoStyle, this.Region);
            checkBox.ScreenAlignment.HorizontalAlignment = checkBoxAlignment.HorizontalAlignment;
            checkBox.ScreenAlignment.VerticalAlignment   = checkBoxAlignment.VerticalAlignment;
            checkBox.Padding.Left = offset;
            checkBox.ScreenAlignment.Transition = checkBoxAlignment.Transition;
            checkBox.Sprite.Add("checked", checkedTexture);
            this.Events.Clicked += (sender, args) =>
            {
                IsChecked = !IsChecked;
                if (IsChecked)
                {
                    checkBox.Sprite.SwitchSprite("checked");
                }
                else
                {
                    checkBox.Sprite.SwitchSprite();
                }
            };
            Text = new StandardText(font, Vector2.Zero, text);
            Text.Alignment.HorizontalAlignment = HorizontalAlignment.RelativeTo(() => (checkBox.Region.Frame.Right) + offset * Configuration.Settings.Scale.X);
            Text.Alignment.VerticalAlignment   = checkBoxAlignment.VerticalAlignment;
            checkBox.Region.onPositionChange  += (args, sender) => Text.Align(this.Region);
        }
Beispiel #14
0
 internal Button(Texture2D texture, Region region, ARenderStyle style, Region parent = null)
     : base(texture, region, style, parent)
 {
 }
Beispiel #15
0
 public Button CreateButton(Region region, Texture2D texture, ARenderStyle style)
 {
     return(new Button(texture, region, style));
 }
Beispiel #16
0
        internal Slider(SliderInfo sliderInfo, SliderDrawable sliderDrawable, Texture2D texture, Region region, ARenderStyle style)
            : base(texture, region, style, null)
        {
            this.sliderInfo     = sliderInfo;
            this.sliderDrawable = sliderDrawable;
            this.sliderDrawable.OnFinishedMoving += (sender, args) => sliderInfo.SetPositionByPercentage(sliderDrawable.Percentage);
            this.sliderDrawable.OnFinishedMoving += (sender, args) => ValueChanged();
            this.sliderDrawable.OnNewDestination += (sender, destination) => ValueChanging(destination);

            this.sliderDrawable.MoveByPercentage(sliderInfo.PositionPercent);
            this.keyRepetition = new KeyRepetition {
                KeyRepeatDuration = 0.01d, KeyRepeatStartDuration = 0.3d
            };

            Subtract += () => InputManager.Mouse.IsWheelMovingUp() ||
                        InputManager.GamePad.IsButtonPressed(InputManager.GamePadInputKeys.Left) ||
                        InputManager.Keyboard.IsKeyPressed(InputManager.KeyboardInputKeys.Left);

            Add += () => InputManager.Mouse.IsWheelMovingDown() ||
                   InputManager.GamePad.IsButtonPressed(InputManager.GamePadInputKeys.Right) ||
                   InputManager.Keyboard.IsKeyPressed(InputManager.KeyboardInputKeys.Right);
        }