예제 #1
0
        //MouseState previousMouse;
        public override void Update(float deltaTime)
        {
            if (!Visible)
            {
                return;
            }

            if (flashTimer > 0.0f)
            {
                flashTimer -= deltaTime;
            }
            if (!Enabled)
            {
                return;
            }

            if (rect.Contains(PlayerInput.MousePosition) && Enabled &&
                (MouseOn == null || MouseOn == this || IsParentOf(MouseOn) || MouseOn.IsParentOf(this)))
            {
                state = ComponentState.Hover;
                if (PlayerInput.LeftButtonClicked())
                {
                    Select();
                    OnSelected?.Invoke(this, Keys.None);
                }
            }
            else
            {
                state = ComponentState.None;
            }

            if (CaretEnabled)
            {
                caretTimer  += deltaTime;
                caretVisible = ((caretTimer * 1000.0f) % 1000) < 500;
            }

            if (keyboardDispatcher.Subscriber == this)
            {
                state = ComponentState.Selected;
                Character.DisableControls = true;
                if (OnEnterPressed != null && PlayerInput.KeyHit(Keys.Enter))
                {
                    string input = Text;
                    Text = "";
                    OnEnterPressed(this, input);
                }
#if LINUX
                else if (PlayerInput.KeyHit(Keys.Back) && Text.Length > 0)
                {
                    Text = Text.Substring(0, Text.Length - 1);
                }
#endif
            }
            else if (Selected)
            {
                Deselect();
            }

            textBlock.State = state;
            textBlock.Update(deltaTime);
        }