Beispiel #1
0
        private void UpdateEnterLeave()
        {
            bool leftMouseDown   = InputManager.Instance.IsMouseDown(MouseButton.Left);
            bool rightMouseDown  = InputManager.Instance.IsMouseDown(MouseButton.Right);
            bool middleMouseDown = InputManager.Instance.IsMouseDown(MouseButton.Middle);
            bool onLeftMouseDown = InputManager.Instance.OnMouseDown(MouseButton.Left);

            Point mouseScreenPos            = InputManager.Instance.MouseScreenPos();
            Point lastMouseScreenPos        = InputManager.Instance.LastMouseScreenPos();
            int   mouseScrollWheelValue     = InputManager.Instance.CurrentMouseScrollWheelValue();
            int   lastMouseScrollWheelValue = InputManager.Instance.LastMouseScrollWheelValue();
            int   mouseScrollWheelDelta     = lastMouseScrollWheelValue - mouseScrollWheelValue;
            bool  containsMouse             = AbsoluteBounds.Contains(mouseScreenPos);
            bool  lastContainsMouse         = AbsoluteBounds.Contains(lastMouseScreenPos);

            if (containsMouse && !lastContainsMouse)
            {
                OnMouseEnter(new MouseEventArgs(leftMouseDown, rightMouseDown, middleMouseDown, mouseScreenPos, mouseScrollWheelDelta));
                //input.Engine.Console.WriteLine("OnMouseEnter");
            }
            else if (!containsMouse && lastContainsMouse)
            {
                OnMouseLeave(new MouseEventArgs(leftMouseDown, rightMouseDown, middleMouseDown, mouseScreenPos, mouseScrollWheelDelta));
                //input.Engine.Console.WriteLine("OnMouseLeave");
            }
        }
Beispiel #2
0
        public virtual bool IsMouseOver()
        {
            IWrapper wrapper = GetWrapper();

            if (wrapper is IWrapper)
            {
                return(AbsoluteBounds.Contains(wrapper.CurrentMousePosition));
            }

            return(false);
        }
Beispiel #3
0
        public override bool Update()
        {
            if (!AbsoluteBounds.Contains(InputManager.Instance.MouseScreenPos()) && InputManager.Instance.OnMouseDown(MouseButton.Left))
            {
                RequestUnCapture();
            }

            if (Text == null)
            {
                Text = "";
            }

            if (!Selected)
            {
                anchorIndex = -1;
                caretIndex  = Text.Length;
            }

            if (caretIndex > Text.Length)
            {
                caretIndex = Text.Length;
            }
            if (caretIndex < 0)
            {
                caretIndex = 0;
            }
            if (Selected)
            {
                // Blink the caret
                if (CaretBlinkTimer.Expired())
                {
                    displayCaret = !displayCaret;
                    CaretBlinkTimer.Start();
                }

                if (InputManager.Instance.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Right) || InputManager.Instance.IsKeyDown(Microsoft.Xna.Framework.Input.Keys.Left))
                {
                    displayCaret = true;
                }
            }
            else
            {
                displayCaret = false;
            }

            return(base.Update());
        }
Beispiel #4
0
        public override void Update(float time)
        {
            if (AbsoluteBounds.Contains(Input.MousePos.X, Input.MousePos.Y))
            {
                hoverTime += time;
            }
            else
            {
                hoverTime = 0f;
            }

            if (hoverTime > 0 && Input.lastms.Buttons[0] && !Input.ms.Buttons[0])
            {
                Click();
            }

            base.Update(time);
        }
Beispiel #5
0
        public override void Update(GameTime time)
        {
            if (AbsoluteBounds.Contains(new Point(Input.ms.X, Input.ms.Y)))
            {
                if (hoverTime == 0)
                {
                    ClickSound.Play();
                }
                hoverTime += (float)time.ElapsedGameTime.TotalSeconds;
            }
            else
            {
                hoverTime = 0f;
            }
            if (hoverTime > 0 && Input.ms.LeftButton == ButtonState.Released && Input.lastms.LeftButton == ButtonState.Pressed)
            {
                action();
            }

            base.Update(time);
        }
Beispiel #6
0
        public override void Update(GameTime time)
        {
            if (Input.ms.LeftButton == ButtonState.Released && Input.lastms.LeftButton == ButtonState.Pressed)
            {
                if (AbsoluteBounds.Contains(new Point(Input.ms.X, Input.ms.Y)))
                {
                    Focused = true;
                }
                else
                {
                    Focused = false;
                }
            }

            // typing
            if (Focused)
            {
                Keys[] ck = Input.ks.GetPressedKeys();
                Keys[] lk = Input.lastks.GetPressedKeys();
                for (int i = 0; i < ck.Length; i++)
                {
                    if (!lk.Contains(ck[i]))
                    {
                        Keys k = ck[i];
                        KeyPressed(k);
                        switch (k)
                        {
                        case Keys.Left:
                            CursorPos = Math.Min(CursorPos + 1, Text.Length - 1);
                            break;

                        case Keys.Right:
                            CursorPos = Math.Max(CursorPos - 1, 0);
                            break;

                        case Keys.Back:
                            if (Text.Length > 0)
                            {
                                Text = Text.Remove(Text.Length - CursorPos - 1);
                            }
                            break;

                        case Keys.Enter:
                            EnterPressed();
                            break;

                        case Keys.OemTilde:
                            // for the command window
                            break;

                        default:
                            char c;
                            if (Input.TryConvertKeyboardInput(k, out c))
                            {
                                if (CursorPos == 0)
                                {
                                    Text += c;
                                }
                                else
                                {
                                    Text = Text.Insert(Text.Length - CursorPos, c.ToString());
                                }
                            }
                            break;
                        }
                    }
                }
                t -= (float)time.ElapsedGameTime.TotalSeconds;
                if (t < 0)
                {
                    t += 1;
                }
            }
            else
            {
                t = 1;
            }

            base.Update(time);
        }
Beispiel #7
0
        /// <summary>
        /// Updates the control and its events
        /// </summary>
        public virtual bool Update()
        {
            bool interacted = false;

            if (Visible && Enabled)
            {
                foreach (Control child in Children)
                {
                    child.UpdateEnterLeave();
                }
                foreach (Control child in Children)
                {
                    interacted = child.Update();
                    if (interacted)
                    {
                        break;
                    }
                }
                if (ToolTip != null)
                {
                    ToolTip.Update();
                }

                if (!interacted)
                {
                    Point mouseScreenPos = InputManager.Instance.MouseScreenPos();
                    bool  containsMouse  = AbsoluteBounds.Contains(mouseScreenPos);

                    if (containsMouse)
                    {
                        bool leftMouseDown     = InputManager.Instance.IsMouseDown(MouseButton.Left);
                        bool rightMouseDown    = InputManager.Instance.IsMouseDown(MouseButton.Right);
                        bool middleMouseDown   = InputManager.Instance.IsMouseDown(MouseButton.Middle);
                        bool onLeftMouseDown   = InputManager.Instance.OnMouseDown(MouseButton.Left);
                        bool onRightMouseDown  = InputManager.Instance.OnMouseDown(MouseButton.Right);
                        bool onMiddleMouseDown = InputManager.Instance.OnMouseDown(MouseButton.Middle);
                        bool onLeftMouseUp     = InputManager.Instance.OnMouseUp(MouseButton.Left);
                        bool onRightMouseUp    = InputManager.Instance.OnMouseUp(MouseButton.Right);
                        bool onMiddleMouseUp   = InputManager.Instance.OnMouseUp(MouseButton.Middle);

                        Point lastMouseScreenPos        = InputManager.Instance.LastMouseScreenPos();
                        int   mouseScrollWheelValue     = InputManager.Instance.CurrentMouseScrollWheelValue();
                        int   lastMouseScrollWheelValue = InputManager.Instance.LastMouseScrollWheelValue();
                        int   mouseScrollWheelDelta     = lastMouseScrollWheelValue - mouseScrollWheelValue;
                        bool  lastContainsMouse         = AbsoluteBounds.Contains(lastMouseScreenPos);

                        if (onLeftMouseDown || onRightMouseDown || onMiddleMouseDown)
                        {
                            OnMouseDown(new MouseEventArgs(onLeftMouseDown, onRightMouseDown, onMiddleMouseDown, mouseScreenPos, mouseScrollWheelDelta));
                            //input.Engine.Console.WriteLine($"OnMouseDown {onLeftMouseDown}:{onRightMouseDown}:{onMiddleMouseDown}");
                        }

                        if (onLeftMouseUp || onRightMouseUp || onMiddleMouseUp)
                        {
                            OnMouseClick(new MouseEventArgs(onLeftMouseUp, onRightMouseUp, onMiddleMouseUp, mouseScreenPos, mouseScrollWheelDelta));
                            //input.Engine.Console.WriteLine($"OnMouseClick {onLeftMouseUp}:{onRightMouseUp}:{onMiddleMouseUp}");
                            OnMouseUp(new MouseEventArgs(onLeftMouseUp, onRightMouseUp, onMiddleMouseUp, mouseScreenPos, mouseScrollWheelDelta));
                            //input.Engine.Console.WriteLine($"OnMouseUp {onLeftMouseUp}:{onRightMouseUp}:{onMiddleMouseUp}");
                        }

                        if (mouseScreenPos == lastMouseScreenPos)
                        {
                            OnMouseHover(new MouseEventArgs(leftMouseDown, middleMouseDown, rightMouseDown, mouseScreenPos, mouseScrollWheelDelta));
                            //input.Engine.Console.WriteLine("OnMouseHover");
                        }
                        else if (mouseScreenPos != lastMouseScreenPos)
                        {
                            OnMouseMove(new MouseEventArgs(leftMouseDown, middleMouseDown, rightMouseDown, mouseScreenPos, mouseScrollWheelDelta));
                            //input.Engine.Console.WriteLine("OnMouseMove");
                        }

                        if (mouseScrollWheelDelta != 0)
                        {
                            OnMouseWheel(new MouseEventArgs(leftMouseDown, middleMouseDown, rightMouseDown, mouseScreenPos, mouseScrollWheelDelta));
                            //input.Engine.Console.WriteLine($"OnMouseWheel {mouseScrollWheelDelta}");
                        }

                        interacted = true;
                    }
                }
            }
            OnUpdated(EventArgs.Empty);
            return(interacted);
        }
Beispiel #8
0
        public virtual bool WasMouseOver()
        {
            IWrapper wrapper = GetWrapper();

            return(AbsoluteBounds.Contains(wrapper.LastMousePosition));
        }