public override void Update(GameTime time) { cursor = ((int)Math.Round((float)(time.TotalGameTime.Milliseconds / 250)) * 250) % 750 == 0; if (Enabled && InterfaceManager.Focus == this) { foreach (Keys key in Keyboard.GetState().GetPressedKeys()) { if (!lastKeyboardState.IsKeyDown(key)) { if (Keyboard.GetState().IsKeyDown(Keys.Back)) { Text = Text.Remove(Text.Length - 1); } else if (Text.Length < MaxLength && TextRenderer.KeyToChar(key) != (char)1) { if (Mode == TextBoxInputMode.Anything) { Text += TextRenderer.KeyToChar(key); } else if (Mode == TextBoxInputMode.Alphabetical && "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".Contains(TextRenderer.KeyToChar(key))) { Text += TextRenderer.KeyToChar(key); } else if (Mode == TextBoxInputMode.Numerical && "1234567890.".Contains(TextRenderer.KeyToChar(key))) { Text += TextRenderer.KeyToChar(key); } } } } } lastKeyboardState = Keyboard.GetState(); TextRenderer.SaveState(); TextRenderer.SetScale(Scale); MouseState mouseState = Mouse.GetState(); Rectangle mouseRect = new Rectangle((int)mouseState.X, (int)mouseState.Y, 1, 1); Vector2 textboxSize = CalculateDimensions(); TextRenderer.RestoreState(); if (State != ButtonState.Disabled) { if (State != ButtonState.Pressed) { if (mouseRect.Intersects(new Rectangle((int)CalculatedPosition.X, (int)CalculatedPosition.Y, (int)textboxSize.X, (int)textboxSize.Y))) { //System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.IBeam; if (State != ButtonState.Hovered) { EventHandler handler = OnHover; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Hovered; } else { if (mouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed && lastMouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Released) { EventHandler handler = OnPress; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Pressed; } } } else { if (State != ButtonState.Idle) { EventHandler handler = OnIdle; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Idle; } } } else { if (mouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Released) { if (mouseRect.Intersects(new Rectangle((int)CalculatedPosition.X, (int)CalculatedPosition.Y, (int)textboxSize.X, (int)textboxSize.Y))) { EventHandler handler = OnRelease; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Hovered; InterfaceManager.SetFocus(this); } else { EventHandler handler = OnRelease; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Idle; } } } } lastMouseState = mouseState; }
public override void Update(GameTime time) { MouseState mouseState = Mouse.GetState(); Rectangle mouseRect = new Rectangle((int)mouseState.X, (int)mouseState.Y, 1, 1); Vector2 buttonSize = new Vector2(Scale * 7, Scale * 7); if (State != ButtonState.Disabled) { if (State != ButtonState.Pressed) { if (mouseRect.Intersects(new Rectangle((int)CalculatedPosition.X, (int)CalculatedPosition.Y, (int)buttonSize.X, (int)buttonSize.Y))) { //System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Hand; if (State != ButtonState.Hovered) { EventHandler handler = OnHover; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Hovered; } else { if (mouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed && lastMouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Released) { EventHandler handler = OnPress; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Pressed; } } } else { if (State != ButtonState.Idle) { EventHandler handler = OnIdle; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Idle; } } } else { if (mouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Released) { if (mouseRect.Intersects(new Rectangle((int)CalculatedPosition.X, (int)CalculatedPosition.Y, (int)buttonSize.X, (int)buttonSize.Y))) { EventHandler handler = OnRelease; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Hovered; InterfaceManager.SetFocus(this); Checked = !Checked; } else { EventHandler handler = OnRelease; if (handler != null) { handler(this, new EventArgs()); } State = ButtonState.Idle; } } } } lastMouseState = mouseState; }