Example #1
0
 // метод удаления кнопки из списка
 public static void Unbind(KeyCodes keyCode)
 {
     //тут просто находим объект с данным кодом в списке и удаляем
     if (InputList.Exists(i => i.KeyCode == keyCode))
     {
         KeyModel Input = InputList.Find(i => i.KeyCode == keyCode);
         InputList.Remove(Input);
     }
 }
Example #2
0
 //метод для добавления кнопки в список принимает теже параметры что и класс KeyModel
 public static void Bind(KeyCodes keyCode, KeyActions onPress, KeyActions onRelease = null)
 {
     //проверяем не назначены ли уже события для эой кнопки
     if (InputList.Exists(i => i.KeyCode == keyCode))
     {
         //если назначены получаем объект данной кнопки
         KeyModel Input = InputList.Find(i => i.KeyCode == keyCode);
         //и подписываемся на его события
         Input.OnPress   += onPress;
         Input.OnRelease += onRelease;
     }
     //если нет то просто создаем новый объект
     else
     {
         InputList.Add(new KeyModel(keyCode, onPress, onRelease));
     }
 }
Example #3
0
 //метод для проверки нажата ли какая либо клавиша из списка
 private static void CheckPressed()
 {
     //проходим по всему списку
     InputList.ForEach(i =>
     {
         //если нажата какая-то клавиша то
         if (Input.IsDown((int)i.KeyCode))
         {
             //назначаем ее обработчику сообщая ему что он занят в данный момент
             Pressed = i;
             //проверяем назначен ли метод на событие нажатия кнопки, если есть - выполняем
             if (i.OnPress != null)
             {
                 i.OnPress.Invoke();
             }
             //выходим из метода
             return;
         }
     });
 }
Example #4
0
 //сам метод обработчика, вызывается каждый кадр
 private static void Handler(List <Events.TickNametagData> nametags)
 {
     //проверяем не занят ли обработчик другим действием, если нет вызываем метод  CheckPressed
     if (Pressed.KeyCode == KeyCodes.released)
     {
         CheckPressed();
     }
     //если он занят в данный момент - ждем когда будет отпущена предыдущая кнопка
     else if (!Input.IsDown((int)Pressed.KeyCode))
     {
         //проверяем назначен ли метод на событие отпускания кнопки, если есть - выполняем
         if (Pressed.OnRelease != null)
         {
             Pressed.OnRelease.Invoke();
         }
         //сообщаем обработчику что он свободен
         Pressed = Releazed;
     }
     ;
 }