Maze /Classes/KeyManager.cs

Language C# Lines 137
MD5 Hash 5ecf9cc67dceaab868c3ab32f0791255
Repository git://github.com/Concliff/Maze.git View Raw File View Project SPDX
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;


namespace Maze.Classes
{
    public class KeyManager
    {
        /// <summary>
        /// Arguments of the last KeyDown event.
        /// </summary>
        private KeyEventArgs lastKeyEventArgs;
        /// <summary>
        /// Collection of keys that are holding down at the moment.
        /// </summary>
        private List<Keys> keysDownList;

        /// <summary>
        /// Initializes a new instance of the KeyManager class.
        /// </summary>
        public KeyManager()
        {
            KeyPressed = Keys.None;
            keysDownList = new List<Keys>();
            lastKeyEventArgs = new KeyEventArgs(Keys.None);
        }

        /// <summary>
        /// Gets the count of keys that are holding down at this moment.
        /// </summary>
        public int KeysDownCount
        {
            get
            {
                return keysDownList.Count;
            }
        }

        /// <summary>
        /// Gets or sets the last pressed key.
        /// </summary>
        public Keys KeyPressed  { get; private set; }

        /// <summary>
        /// Gets a value indicating whether the CTRL key was pressed.
        /// </summary>
        public bool Control
        {
            get
            {
                return lastKeyEventArgs.Control;
            }
        }

        /// <summary>
        /// Gets a value indicating whether the ALT key was pressed.
        /// </summary>
        public bool Alt
        {
            get
            {
                return lastKeyEventArgs.Alt;
            }
        }

        /// <summary>
        /// Gets a value indicating whether the SHIFT key was pressed.
        /// </summary>
        public bool Shift
        {
            get
            {
                return lastKeyEventArgs.Shift;
            }
        }

        /// <summary>
        /// Occurs when a key is pressed
        /// </summary>
        public void EventKeyDown(object sender, KeyEventArgs e)
        {

            KeyPressed = e.KeyCode;
            lastKeyEventArgs = e;

            // Do not double add the same key
            if (!keysDownList.Contains(e.KeyCode))
                keysDownList.Add(e.KeyCode);
        }

        /// <summary>
        /// Occurs when a key is released
        /// </summary>
        public void EventKeyUp(object sender, KeyEventArgs e)
        {
            keysDownList.Remove(e.KeyCode);
        }

        /// <summary>
        /// Occurs when a key is pressed
        /// </summary>
        public void EventKeyPress(object sender, KeyPressEventArgs e)
        {
            // TODO: remove or something else
        }

        public Keys KeyDown(int Number) { return (Keys)keysDownList[Number]; }

        /// <summary>
        /// Gets the last pressed key and clear the record about that.
        /// </summary>
        public Keys ExtractKeyPressed()
        {
            Keys KeyToReturn;
            KeyToReturn = KeyPressed;
            KeyPressed = Keys.None;
            return KeyToReturn;
        }

        /// <summary>
        /// Clear All Keys
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void EventFormLostFocus(object sender, EventArgs e)
        {
            KeyPressed = Keys.None;
            keysDownList.Clear();
            lastKeyEventArgs = new KeyEventArgs(Keys.None);
        }
    }
}
Back to Top