Пересечение движущихся лучей
Суть
Тоже самое, что и со статичными. Нужно показать игроку, что лазер пересечен. Лазер выключается, звуковой сигнал, моргает светодиодка, на экране появляется крест.
Сценарий
- На 10 секунд нельзя пересечь лазер.
- Пересеченные лучи (
gameplay.crosses) + 1 - Звуковой сигнал: “Пересечение луча”.
- Погасить луч
- Помаргать светодиодкой
Список значимых переменных
- Флаг 1 состояния лазера
- Флаг успешной калибровки
- Номер лазера
- Флаг предыдущего замера
- Флаг статуса свечения
- 3 счётчика активных пинов (на каждый мультиплексор)
- Для каждой из 24 пластин-сенсоров:
- Флаг активности пластины (по результатам калибровки)
- Порог срабатывания
Алгоритм проверки состояния лазеров
- Если номер лазера установлен
- Если калибровка успешна и лазер светит в 1 режиме
- Обнуление счётчиков активных пинов
- Подсчёт активных пинов на каждом мультиплексоре
- Для каждой пластины-сенсора:
- Переключение мультиплексора
- Если пластина активна, и значение на ней меньше или равно порога срабатывания, то декрементировать счётчик активных пинов.
- Если на каком-то из мультиплексоров счётчик не равен нулю, то установить статус свечения (иначе сбросить)
- Если флаг предыдущего замера не равен флагу статуса свечения, то:
- Если статус свечения сброшен, то отправить событие beam_crossed
- Обновление флага предыдущего замера
- Ожидание 250мс
Changelog
13.06.2018 epicstrike init
Posts
subscribe via RSS