- добавлены проектные инструкции AGENTS.md:
зафиксированы правила работы с документацией, сообщениями коммитов,
MCP-инструментами и Unity MCP workflow для дальнейшей разработки
- проверка лицензии вынесена из GameManager в отдельный StartupLicenseManager:
код WinAPI, запуск RRLauncher.exe, обработка таймаута, возврат фокуса,
установка fullscreen-режима и клик в центр перенесены в отдельный
долгоживущий компонент
- обновлена инициализация глобальных сервисов:
GlobalsManager теперь добавляет и инициализирует StartupLicenseManager,
а Globals.prefab содержит новый компонент рядом с остальными runtime-сервисами
- обновлены Unity Editor и зависимости проекта:
версия проекта поднята до 6000.3.14f1, обновлены ai.inference,
collab-proxy, inputsystem, timeline, visualscripting и связанные lock-записи
- синхронизированы проектные настройки и generated assets после обновления Unity:
обновлены ProjectSettings, URP global settings, TMP/font assets,
tile/prefab meta-данные и связанные ресурсы сцен
- скорректирован MainMenu UI:
символ валюты заменен на текстовое обозначение руб., а также сохранены
небольшие Unity-сериализованные изменения layout/scrollbar-значений
- добавлены правила .gitignore для локальных служебных артефактов:
Codex/RAG-индекса, .NET SDK telemetry/cache и Unity recovery-сцен
- удалены из отслеживания ранее попавшие в репозиторий файлы .dotnet и Assets/_Recovery:
новые служебные файлы этих каталогов больше не будут засорять рабочее дерево
Система выдачи призов хоппером:
- PrizeSystemManager теперь читает enableHopper из настройки prizes.giveSmallPrize
вместо захардкоженного SerializeField (реагирует на изменения в реальном времени)
- LevelFinish: исправлен ключ настройки на prizes.giveSmallPrize
- Добавлен HopperCheckController для тестирования выдачи приза кнопкой в настройках
- Проверка датчика хоппера перенесена в ComDeviceClient (2-й бит INPUT)
- PrizeGivenBuffer заменён с PlayerPrefs на потокобезопасный Interlocked-буфер
(исправлен краш при вызове PlayerPrefs из фонового потока платы)
- Добавлен PrizeSystem.OnPrizeResult (Action<bool>) — событие результата выдачи
Отображение ошибки выдачи приза:
- Добавлен PrizeErrorDisplay — UI-компонент, подписанный на OnPrizeResult
- Зависит от настройки prizes.showPrizeError (реагирует на изменения в реальном времени)
QR-коды:
- PrizeSystemManager подписан на изменение prizes.phoneNumber — QR-коды
перегенерируются автоматически при смене номера
- WinBannerController показывает QR-коды только при включённой prizes.giveBigPrize
Прочее:
- Добавлен Levitator — компонент плавной левитации объекта (высота, скорость, плавность)
- Настройки: группы поддержки/тестов реорганизованы, добавлена кнопка btn.hopper_test
- Добавлена система анимированных текстовых сплешей (TextSplash) с настройками масштаба, покачивания, движения и цвета
- Добавлена поддержка циклического воспроизведения анимации сплешей
- Добавлена настройка частоты покачивания для более плавной и непрерывной анимации
- Добавлено отображение валюты в компоненте BalanceDisplay (берется из настройки payment.currency)
- Добавлены поля для отображения номера поддержки и суперприза в главном меню
- Добавлена возможность форматирования текстов через string.Format в MainMenu (supportNumberFormat, superPrizeFormat)
- Валюта и тексты автоматически обновляются при изменении настроек
- Добавлена система ввода текста через модальное окно с ячейками для аркадного автомата
- Реализован TextInputModal с поддержкой кастомных алфавитов и навигации
- Добавлен TextInputCell для ввода отдельных символов с циклической навигацией
- Создан TextInputSettingsBinder для интеграции ввода текста с системой настроек
- Реализована компактная сериализация настроек (только нужные поля в JSON)
- Внедрена система баланса игрока (BalanceManager)
- Баланс начисляется при оплате импульсом, списывается при начале/продолжении игры
- Добавлен InactivityManager для выхода в меню при отсутствии активности (5 минут)
- Улучшена система настроек
- Добавлены флаги shownInSettings и exposed для управления видимостью настроек
- Реализована автоматическая регистрация/отписка SettingsButtonBinder при активации/деактивации
- Исправлена загрузка настроек с проверкой типов через Sanitize()
- SettingsApplier упрощен - оставлена только поддержка AudioManager
- Добавлен ValueSelectorRow для выбора целочисленных значений с шагом
- Удалены примеры и документация из production кода (QUICK_SETUP.md, TextInputExample, AdvancedLoggingExample)
- Убран весь отладочный вывод Debug.Log из системы настроек и ввода текста
- Очищены неразрывные пробелы из файлов проекта
- Добавлены префабы UI (InputCell)
- Добавил новую систему настроек, возможности:
- Динамически создает список настроек
- Сохраняет настройки в JSON-файл
- Возможность группировать настройки
- Широкие возможности по кастомизации
- Применение настроек в реальном времени (частично)
- Добавил префабы для новых элементов настроек
- Изменил поведение игры исходя из нового формата настроек
- Теперь игрок при смерти будет падать вниз
- Изменил поведение игрока при смерти
- Изменил поведение врагов при смерти игрока
- Изменил поведение ловушек при смерти игрока
- Исправил баг, что при первом запуске игры на автомате, если не сохранить настройки, ток при включенной бесплатной игре девочка возрождалась не на чекпоинте, а на месте смерти
- Increased SFX pool size from 8 to 16 in AudioManager
- Enabled preloadAudioData for multiple SFX files
- Removed unused VisualScripting import from Checkpoint script
- Reordered using statements in several scripts for consistency
- Added CoinCollectible component to Coin prefab with pickup effects
- Updated sorting layers and mesh LOD settings in Coin prefabs
- Fixed typo in Interfaces.cs: optionaAttachPoint to optionalAttachPoint
- Modified AddCoin method to accept count parameter and handle coin overflow
- Moved projectile scripts (BasicProjectile, EnemyBasicProjectile, PhysicsProjectile, PickableProjectile)
- Cleaned up unused namespaces and imports across various scripts