- добавлена новая система призов:
PrizeBase, PrizeType, PrizeDatabase, LevelPrizeConfig и реализации
для hopper, QR-кода, отсутствия приза и стойки с призом
- добавлена конфигурация призов уровней через `prizes.json`
и связанная логика загрузки/обработки в менеджерах игры
- расширен UI главного меню и настроек уровней:
добавлены LevelSettingsModal, LevelPrizeSettingsModal,
QRCodeModal и PrizeStandModal
- обновлена навигация модальных окон и связанный UI-код:
ModalManager, MainMenu, RulesModal, PauseMenu,
PrizeErrorDisplay, UIRowPointer и WinBannerController
- доработаны настройки и генерация UI-элементов:
обновлены SettingsDatabase, SettingsUIGenerator,
SettingUIItem, ValueSelectorRow и editor drawer для настроек
- обновлены и добавлены UI-prefab'ы для кнопок, строк настроек,
панели групп и кнопки настроек уровня
- обновлены сцены `MainMenu` и `Level UI` под новый флоу
настройки уровней, выбора призов и отображения модалок
- добавлены файлы лаунчера в `StreamingAssets`,
включая `RRLauncher.exe`, служебные meta-файлы и документацию
- улучшено логирование через FileLogger
и удален устаревший код лицензирования
- удалены больше неиспользуемые файлы:
`Licensing.cs`, `SteppedSlider.cs` и recovery-сцены
- Добавлена проверка лицензии через внешний `RRLauncher.exe` при старте игры.
- В `GameManager` встроен асинхронный сценарий проверки лицензии с таймаутом и завершением приложения при неуспешной проверке.
- После успешной проверки лицензии добавлена принудительная установка `ExclusiveFullScreen` и разрешения `1920x1080`.
- В проект добавлен новый скрипт `Licensing.cs`.
- В `GameManager` добавлена низкоуровневая работа с WinAPI для запуска внешнего процесса и ожидания результата.
- Добавлено новое модальное окно `RulesModal` с поддержкой многостраничных правил.
- В `RulesModal` реализовано переключение страниц через `Input System` по горизонтальной навигации.
- Для окна правил добавлены индикатор текущей страницы, форматируемый текст номера страницы и поддержка точек-индикаторов.
- В `RulesModal` добавана защита от многократного листания при удержании оси навигации.
- В `ModalManager` исправлена работа singleton-инстанса при закрытии приложения и повторном входе в Play Mode.
- В `ModalManager` добавлен сброс статических полей через `RuntimeInitializeOnLoadMethod`, чтобы менеджер корректно переживал перезапуск в редакторе.
- В базовом `Modal` и связанном UI-потоке внесены доработки для более стабильной работы модальных окон.
- В систему настроек добавлена и расширена поддержка `ValueSelectorRow`.
- `ValueSelectorRow` переработан так, чтобы работать не только с `int`, но и с `float` значениями.
- В `ValueSelectorRow` добавено ускорение изменения значений при последовательном удержании влево/вправо.
- В `ValueSelectorRow` добавлен показ процентов для настроек, которые должны отображаться как процентные значения.
- В `ValueSelectorRow` улучшено поведение навигации и сброс состояния удержания при потере фокуса и деактивации.
- В `SettingsDatabase` добавлены связанные изменения для новых сценариев работы настроек.
- В `SettingsUIGenerator` и `SettingUIItem` обновлена генерация UI для новых вариантов отображения и редактирования настроек.
- В `SettingEntryDrawer` в редакторской части добавлены изменения для поддержки новых параметров настроек.
- Обновлена `MainSettingsDatabase.asset` под новую структуру и параметры настроек.
- Обновлены префабы строк настроек: `Row_Button`, `Row_Dropdown`, `Row_Input`, `Row_Slider`, `Row_Toggle`, `Row_ValueSelector`, а также `InputCell` и связанные UI-префабы.
- Обновлен `LevelButton.prefab` и связанные элементы интерфейса.
- Обновлен `Globals.prefab` с учетом новых или измененных UI/сервисных компонентов.
- В `MainMenu.unity` выполнена крупная правка интерфейса: переразложены якоря, размеры, позиционирование элементов и изменены отдельные тексты.
- В `MainMenu.unity` активированы и переработаны части UI, ранее отключенные или имевшие другие размеры/якоря.
- В `Level UI.unity` внесены изменения в структуру и конфигурацию интерфейса уровня.
- Обновлен `UICreditsTextController` для работы с измененным отображением UI или логикой текста.
- В `InputSystem_Actions.inputactions` внесены изменения в конфигурацию действий ввода.
- В `FileLogger` обновлена логика файлового логирования.
- Обновлен `.gitignore`.
- Обновлены метаданные и ресурсы, связанные с главным меню, включая `plashka_levels.png.meta`.
Система выдачи призов хоппером:
- 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
Добавлены новые UI-компоненты и исправлена надёжность подсветки
- Добавлен UIElementAnimator — универсальный аниматор UI-элементов (покачивание, движение вверх-вниз, пульсация масштаба)
- Добавлен GamePriceDisplay — отображение стоимости игры из настроек (payment.startGameCost, payment.currency)
- Добавлен метод StartIdleEffects() в GameManager для гарантированного запуска мигания шапки и последовательности эффектов
- Исправлена подсветка, не включавшаяся при переходе в главное меню: OnSceneLoaded теперь вызывает StartIdleEffects()
- Исправлено восстановление подсветки при переподключении платы: ComSystemManager использует StartIdleEffects() для MainMenu
- Добавлены LightController.IsHatOn и ResendHatState() для корректного отслеживания состояния шапки
- Исправлено зависание спецэффектов при мигании шапки: LightSequence теперь переотправляет команду эффекта каждые 2 сек
- Убраны дублирующиеся вызовы Blink/SetLight из LoadScene (теперь обрабатывается в OnSceneLoaded)
- Обновлена сцена MainMenu, ассеты шрифтов, удалён старый префаб Coin
- Добавлен LevelFinish.cs: новый компонент финиша уровня
- выдача маленького приза через PrizeSystemManager (учитывает enableHopper)
- настройки: enablePrizeOnFinish, prizeEnabledSettingKey, prizeDelay, debugMode
- защита от двойной выдачи (_prizeGiven)
- PlayerController: закомментирован старый переход на следующий уровень по тегу 'Finish'
(теперь за это отвечает LevelFinish)
- QRCodeUIController: помечен [Obsolete], QR-коды показываются только при победе
через WinBannerController.ShowWin() -> PrizeSystemManager.GetQRCodes()
- Finish.prefab: добавлен компонент LevelFinish (enablePrizeOnFinish=true, prizeDelay=0)
- Сцена 1-1: переопределён enablePrizeOnFinish=false для финиша промежуточного уровня
- Сцена 1-3: minor update
- MainMenu: правки якорей UI-элементов и активация скрытого объекта
- Добавлены публичные методы в PrizeSystem для проверки статуса выдачи приза (WasLastPrizeSuccessful, IsPrizing)
- Сохранение результата последней выдачи приза для внешнего контроля
- Исправлено вращение в TextSplash: теперь оно применяется относительно начального поворота вместо сброса до 0
- Начальное вращение сохраняется в Awake и используется как базовое для анимации покачивания
- Начата глобальная замена шрифтов в игре: добавлены BerlinSansFBCyrillic, Flatiron Casual, Flatiron Regular, RifficFree-Bold
- Заменена часть шрифтов в главном меню на новые
- Добавлены новые тайловые спрайты для фона (Forest, Hills, Sky)
- Удален лишний пробел в PlayerController.cs
- Исправлена BOM-метка в UICreditsTextController.cs
- Добавлена система анимированных текстовых сплешей (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)
- Добавлена система баланса игры (BalanceManager) для управления внутриигровой валютой
- Баланс начисляется за импульсы оплаты и списывается за начало/продолжение игры
- При старте игры весь внесенный баланс списывается, а жизни начисляются в соответствии с количеством оплат
- Добавлены проверки достаточности баланса для начала и продолжения игры
- Интегрирован BalanceManager с PaymentManager и GameManager
- Исправлен баг с возможностью снятия паузы при показе баннера проигрыша/победы
- Добавлена блокировка переключения паузы через IsActive флаг в PauseMenu
- Жизни больше не могут уйти в минус при повторной смерти во время показа баннера
- Настройки стоимости импульса, начала и продолжения игры берутся из SettingsManager
- Добавил новую систему настроек, возможности:
- Динамически создает список настроек
- Сохраняет настройки в JSON-файл
- Возможность группировать настройки
- Широкие возможности по кастомизации
- Применение настроек в реальном времени (частично)
- Добавил префабы для новых элементов настроек
- Изменил поведение игры исходя из нового формата настроек
- Исправил баг, что при бесплатной игре все равно требовалась оплата для продолжения игры
- ТЕПЕРЬ ВМЕСТО БАТАРЕЕК ЛЕТУЧИЕ МЫШКИ, УРААА
- Добавил моргание шапки автомата до начала игры
- Исправил мелкие баги с оплатой для продолжения игры
- Исправил мелкие баки в поведенчеких скриптах
- Добавил CreatureAnimationEvents.cs для унификации поведения анимационных ивентов игровых сущностей
- Добавил VFX для смерти врагов
- Добавил пул VFX, пока много багов, UNSTABLE
- Настроил исользование пула в анимационных скриптах
- Added PaymentManager integration with GameManager
- Implemented credit-based lives increment system
- Updated UI layout and anchor positions in MainMenu scene
- Added AddCredit input action bindings for keyboard and gamepad
- Refactored GameManager to use StartingLives, MaxLives properties
- Added UICreditsTextController for displaying credits and lives- Fixed prefab initialization order and component dependencies
- Updated ComWrapper serialization and prize checking logic
- Removed obsolete setLivesToDefaultAfterFirstLose setting
- Improved scene loading and player spawn management
- Created AdvancedLoggingExample class demonstrating composite and file loggers
- Implemented multi-file logging setup with separate error and full logs
- Added game event and performance logging methods
- Included key input handling for log operations (flush, clear)
- Setup proper resource disposal on application quit
- Removed deprecated ButtonPinMapping enum and related COM input classes- Updated ComInputToInputSystemAdapter with improved binding logic- Refactored GameManager to use new globals prefab path
- Enhanced GameEndUIController with event system focus management
- Modified Globals prefab to use pin-based input bindings
- Cleaned up obsolete COM system wrapper and native wrapper classes
- Adjusted input adapter to support pin bindings over action bindings
- Updated manufacturer name in virtual gamepad description
- Updated ContinueGame method to reset lives and coins- Modified GameOver and GameWin methods to invoke events
- Adjusted stage count per world from5 to 3
- Added win banner UI with header text and layout changes
- Updated canvas elements positioning and sizing
- Included new UI elements for win/lose states- Reorganized UI hierarchy in Level UI scene
- Added menu and continue buttons in win panel
- Fixed text components naming and alignment
- Added game start time tracking for play duration
- 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