Danro/README.md
Danil Iarosh 79b66b2d17
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
feat: add controller disconnect/reconnect handling, MAC identification, lighting pause/resume system
- Рефакторинг системы подсветки: вместо длительности в секундах теперь
  используется количество циклов (float). Добавлена таблица длительности
  циклов эффектов `LightCycleDurations` для пересчёта циклов в секунды.
  Префикс команд подсветки изменён с `85` на `86`.
- `LightSequence`: добавлены `Pause()` / `Resume()` с запоминанием текущего
  шага последовательности; возобновление продолжает с сохранённой позиции.
- `LightController`: добавлены `PauseAll()` / `ResumeAll()` для
  приостановки и восстановления подсветки и мигания шляпы при
  отключении/переподключении платы. Свойства `IsSequencePaused`,
  `IsBlinkPaused`.
- `ComDeviceClient`: после успешной авторизации отправляются команды
  `890003` и `8600`. Добавлен запрос MAC-адреса через команду `06`
  (ответ — 12 hex-символов без префикса). Новое событие `ConnectionLost`
  при начале KeepAlive-реконнекта.
- `ComHub`: очередь `_disconnectedQueue` с типом `DeviceDisconnectMessage`
  (DeviceId + Role + Mac) — сохраняет идентификатор устройства до его
  удаления из словаря. Подписка на `ConnectionLost`.
  Добавлен `GetDeviceMac()`.
- `ComSystemManager`: при инициализации, если плата не обнаружена,
  подсветка сразу ставится на паузу. При отвале дефолтного устройства —
  `PauseAll()`, при переподключении — сравнение по MAC и роли через
  `IsSameDevice()`: та же плата → `ResumeAll()`, другая → `Blink()` с нуля.
  Добавлены событие `OnDeviceDisconnected` и метод `GetDeviceMac()`.
- `COMInput`: при событии `OnDeviceDisconnected` сбрасываются все состояния
  кнопок через `ResetAllButtons()`, генерируя `buttonUp` для зажатых кнопок.
  Устраняет баг залипания управления после переподключения платы.
- `GameManager`: расширена последовательность световых эффектов в меню
  (добавлены `DiagonalWave3`, `WaveUp`, `OrangeWave`); вызовы `SetLight`
  для game over/won переведены на float-циклы.
- Обновлены `ARCHITECTURE.md` и `README.md`: переписана документация
  на актуальную структуру проекта и текущие возможности игры.
2026-03-04 13:55:08 +03:00

48 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Данро (Danro)
`Danro` - это 2D-платформер на Unity с аркадным режимом запуска. Проект совмещает классический side-scrolling gameplay с логикой кредитов, баланса, внешнего COM-контроллера и призовой системой для инсталляций.
## Актуальное состояние игры
Сейчас в проекте реализованы и подключены в `Build Settings`:
- главное меню (`MainMenu`);
- отдельная UI-сцена игрового интерфейса (`Level UI`);
- три игровых уровня: `1-1`, `1-2`, `1-3`.
Игра уже включает:
- прохождение уровней с автоматическим переходом между сценами;
- систему жизней, монет и подсчета времени сессии;
- чекпоинты и респавн без полного сброса прогресса по уровню;
- врагов, ловушки, движущиеся и исчезающие платформы, трамплины, снаряды и интерактивные объекты;
- меню паузы, окно настроек, модальное окно выбора уровней;
- экраны победы и поражения;
- продолжение после поражения при достаточном балансе;
- аркадную механику кредитов, импульсов оплаты и бесплатного режима;
- окно статистики и админ-статистики;
- генерацию и показ QR-кодов на экране победы для призовой системы;
- поддержку клавиатуры и внешнего COM-управления.
## Управление
Базовое управление с клавиатуры:
- движение: `A` / `D` или стрелки;
- прыжок: `Space`;
- навигация по UI: через назначенные действия `Unity Input System`.
Если игра используется в аркадной стойке, ввод может приходить с внешней платы через COM-подсистему. В этом режиме часть действий, кредиты, подсветка и выдача призов зависят от конфигурации установки.
## Что важно для запуска и разработки
- Версия Unity проекта: `6000.3.8f1`.
- Основной стек: `Unity`, `C#`, `Input System`, `UGUI`, `Cinemachine`, `URP`, `VFX Graph`.
- Ключевая точка входа в runtime: `GameManager`.
## Документация
- `README.md` описывает проект с точки зрения текущих возможностей игры.
- `ARCHITECTURE.md` содержит краткий обзор структуры проекта.
- `TECHDOC.md` содержит подробную техническую документацию по архитектурным решениям, подсистемам и ограничениям.