public void Clear()
 {
     DownKeys.Clear();
     PressedKeys.Clear();
     CurrentKeyboardState  = default(KeyboardState);
     PreviousKeyboardState = default(KeyboardState);
 }
        protected virtual void OnKeyUp(KeyEventArgs e)
        {
            if (DownKeys.Contains(e.Key))
            {
                DownKeys.Remove(e.Key);
                keyEvents.Add(e);
            }

            KeyUp?.Invoke(this, e);
        }
        protected virtual void OnKeyDown(KeyEventArgs e)
        {
            if (!DownKeys.Contains(e.Key))
            {
                DownKeys.Add(e.Key);
                keyEvents.Add(e);
            }

            KeyDown?.Invoke(this, e);
        }
Exemple #4
0
        public List <TResponseType> Draw()
        {
            Console.CursorVisible = false;
            StartPosition         = Console.CursorTop;

            while (true)
            {
                Position.Write(Question);

                if (CurrentIndex < 0)
                {
                    ChangeIndex(0);
                }

                for (var index = 0; index < Options.Count; index++)
                {
                    var consoleRadioCheck = Options[index];
                    Position.WriteCleaningLine(consoleRadioCheck.ToString(), index + 1);
                }

                var key = Console.ReadKey(true);

                if (DownKeys.Contains(key.Key))
                {
                    DownIndex();
                }

                if (UpKeys.Contains(key.Key))
                {
                    UpIndex();
                }

                if (SelectKeys.Contains(key.Key))
                {
                    ToggleCurrent();
                }

                if (key.Key == ConsoleKey.Enter)
                {
                    var consoleRadioChecks = Options.Where(i => i.IsChecked).ToList();

                    if (Parameters.Required && consoleRadioChecks.Count <= 0)
                    {
                        continue;
                    }
                    Console.CursorVisible = true;
                    Clear();
                    Console.WriteLine(Question + " > " + consoleRadioChecks
                                      .Select(i => i.Message)
                                      .Aggregate((x, y) => $"{x}, {y}"));
                    return(consoleRadioChecks.Select(i => i.Value).ToList());
                }
            }
        }
Exemple #5
0
        public bool IsOtherDown(Keys key)
        {
            if (key == Keys.Alt)
            {
                return(IsOtherDown(Key.Alt));
            }
            if (key == Keys.Control)
            {
                return(IsOtherDown(Key.Ctrl));
            }
            if (key == Keys.Shift)
            {
                return(IsOtherDown(Key.Shift));
            }

            var downKeys = DownKeys.ToArray();

            return(downKeys.Length > 1 || (downKeys.Length == 1 && downKeys[0] != key));
        }
Exemple #6
0
        public bool IsOtherDown(Key key)
        {
            if (key == Key.CtrlChord)
            {
                key = Key.Ctrl;
            }
            if (key == Key.AltChord)
            {
                key = Key.Alt;
            }
            if (key == Key.ShiftChord)
            {
                key = Key.Shift;
            }

            var downKeys = DownKeys.ToArray();

            return(downKeys.Length > key.Codes.Count || downKeys.Any(k => !key.Codes.Contains(k)));
        }
        public virtual void Update()
        {
            PressedKeys.Clear();
            ReleasedKeys.Clear();

            foreach (KeyEventArgs keyEvent in keyEvents)
            {
                if (DownKeys.Contains(keyEvent.Key))
                {
                    PressedKeys.Add(keyEvent.Key);
                }
                else
                {
                    ReleasedKeys.Add(keyEvent.Key);
                }
            }

            keyEvents.Clear();
        }
Exemple #8
0
        private static void SetState(Key key, bool state)
        {
            if (StateIDs.ContainsKey(key))
            {
                StateIDs[key]++;
            }
            else
            {
                StateIDs.Add(key, 1);
            }

            if (state)
            {
                DownKeys.Add(key);
            }
            else
            {
                DownKeys.Remove(key);
            }
        }
        public void Update()
        {
            PreviousKeyboardState = CurrentKeyboardState;
            CurrentKeyboardState  = Keyboard.GetState();

            DownKeys.Clear();
            PressedKeys.Clear();
            Keys[] keys = CurrentKeyboardState.GetPressedKeys(); // TODO: per frame heap allocs
            foreach (Keys key in keys)
            {
                if (PreviousKeyboardState.IsKeyUp(key) && IsKeyDown(key))
                {
                    PressedKeys.Add(key);
                }
                //else //if (_previousKeyState.IsKeyDown(key) && _currentKeyState.IsKeyDown(key))
                //    DownKeys.Add(key);
                if (IsKeyDown(key))
                {
                    DownKeys.Add(key);
                }
            }
        }
Exemple #10
0
        public static bool IsDown(Key key)
        {
            if (key.IsModifierFlag())
            {
                if (key.IsShift())
                {
                    return(IsDown(Key.LShift) || IsDown(Key.RShift));
                }
                else if (key.IsCtrl())
                {
                    return(IsDown(Key.LCtrl) || IsDown(Key.RCtrl));
                }
                else if (key.IsAlt())
                {
                    return(IsDown(Key.LAlt) || IsDown(Key.RAlt));
                }
                else if (key.IsWin())
                {
                    return(IsDown(Key.LWin) || IsDown(Key.RWin));
                }
            }

            return(DownKeys.Contains(key));
        }
Exemple #11
0
        static internal void Update()
        {
            keyboardPrev    = keyboard;
            mousePrev       = mouse;
            mousePosPrev    = mousePos;
            prevDownKeys    = DownKeys.ToArray();
            prevDownButtons = DownButtons.ToArray();

            keyboard = Keyboard.GetState();
            mouse    = Mouse.GetState();

            if (AcceptMouse)
            {
                mousePos = new Vector2(Cursor.Position.X - MMW.X, Cursor.Position.Y - MMW.Y);
            }

            DownKeys = GetDownKeys();
            {
                var list = new List <Key>();
                foreach (var k in DownKeys)
                {
                    if (!prevDownKeys.Contains(k))
                    {
                        list.Add(k);
                    }
                }
                PressedKeys = list.ToArray();
            }
            {
                var list = new List <Key>();
                foreach (var k in prevDownKeys)
                {
                    if (!DownKeys.Contains(k))
                    {
                        list.Add(k);
                    }
                }
                ReleasedKeys = list.ToArray();
            }

            DownButtons = GetDownButtons();
            {
                var list = new List <MouseButton>();
                foreach (var b in DownButtons)
                {
                    if (!prevDownButtons.Contains(b))
                    {
                        list.Add(b);
                    }
                }
                PressedButtons = list.ToArray();
            }
            {
                var list = new List <MouseButton>();
                foreach (var b in prevDownButtons)
                {
                    if (!DownButtons.Contains(b))
                    {
                        list.Add(b);
                    }
                }
                ReleasedButtons = list.ToArray();
            }
        }
Exemple #12
0
 public bool IsKeyDown(Key key) => DownKeys.Contains(key);