Пересечение движущихся лучей

Суть

Тоже самое, что и со статичными. Нужно показать игроку, что лазер пересечен. Лазер выключается, звуковой сигнал, моргает светодиодка, на экране появляется крест.

Сценарий

  1. На 10 секунд нельзя пересечь лазер.
  2. Пересеченные лучи (gameplay.crosses) + 1
  3. Звуковой сигнал: “Пересечение луча”.
  4. Погасить луч
  5. Помаргать светодиодкой

Список значимых переменных

  • Флаг 1 состояния лазера
  • Флаг успешной калибровки
  • Номер лазера
  • Флаг предыдущего замера
  • Флаг статуса свечения
  • 3 счётчика активных пинов (на каждый мультиплексор)
  • Для каждой из 24 пластин-сенсоров:
    • Флаг активности пластины (по результатам калибровки)
    • Порог срабатывания

Алгоритм проверки состояния лазеров

  • Если номер лазера установлен
  • Если калибровка успешна и лазер светит в 1 режиме
  • Обнуление счётчиков активных пинов
  • Подсчёт активных пинов на каждом мультиплексоре
  • Для каждой пластины-сенсора:
    • Переключение мультиплексора
    • Если пластина активна, и значение на ней меньше или равно порога срабатывания, то декрементировать счётчик активных пинов.
  • Если на каком-то из мультиплексоров счётчик не равен нулю, то установить статус свечения (иначе сбросить)
  • Если флаг предыдущего замера не равен флагу статуса свечения, то:
    • Если статус свечения сброшен, то отправить событие beam_crossed
  • Обновление флага предыдущего замера
  • Ожидание 250мс

Changelog

13.06.2018 epicstrike init

Posts

subscribe via RSS