Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
- завершен спринт 24 марта - 2 апреля с опережением плана и закрытием задач раньше срока - расширена и стабилизирована система призов: добавлены и доработаны QR-tier конфиги, новые типы и модели данных, сохранение `qrCodes` в `prizes.json`, fallback-логика и синхронизация через `PrizeSystemManager`, `PrizeDatabase` и `LevelPrizeConfig` - переработан flow настройки QR-призов: добавлены `QRCodeSettingsModal` и связанный UI-код, разнесены короткий текст приза и полный текст сообщения, добавлены шаблоны форматирования, корректная подстановка текста в QR и в UI-модалках, а также сохранение конфигурации между запусками - доработан flow суперприза и текстовых настроек: добавлены fallback-правила показа, корректная обработка пустых строк и строк из одних пробелов, обновлены binders и показ текста в меню - реализована и обновлена отдельная настройка витрины: добавлена `PrizeStandSettingsModal`, обновлена навигация строк, логика выбора ячейки и порогов очков, циклический выбор ячеек, ускорение изменения значений и исправления для keyboard/gamepad UX - доработана игровая модалка витрины `PrizeStandModal`: добавлен вывод очков игрока, форматируемый текст счета, улучшено отображение ячеек и связанная логика выбора приза - исправлен подсчет очков и интеграция с prize flow: `ScoreSystem` переведен на событийное обновление текущего счета, добавлены `CurrentScore`, `CurrentScoreChanged` и корректный display score, витрина и связанные UI-элементы теперь получают актуальные очки, а не нулевые или несвоевременные preview-значения - переработаны модальные окна и навигация UI: улучшены `Modal`, `ModalManager`, `UIRowPointer`, `RulesModal`, `QRCodeModal`, `PrizeStandModal`, `LevelPrizeSettingsModal` и др., чтобы фокус, указатель и submit работали консистентно без мыши - обновлен win/prize UI: доработаны `WinBannerController`, `GameEndUIController`, `MainMenu`, `QRCodeUIController`, `TopPanelTextController` и настройки UI, улучшены тексты баннеров, отображение призов и итогового счета - обновлены сцены и ассеты под новый flow: `MainMenu`, `Level UI`, prefab'ы строк настроек и кнопок, глобальные префабы, шрифты TMP, иконки, recovery-данные и ресурсы UI - добавлены вспомогательные UI-компоненты и служебные скрипты: `ButtonTextFocusColor`, `SelectableDescriptionTarget`, `QRTier` и другие изменения, поддерживающие новый конфигурируемый prize UI
64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using RR.Common.Utility;
|
|
|
|
namespace RR.Common.Prizes
|
|
{
|
|
/// <summary>
|
|
/// Конфигурация приза для одного уровня.
|
|
/// Сериализуется в JSON через <see cref="PrizeDatabase"/>.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class LevelPrizeConfig
|
|
{
|
|
public PrizeType type = PrizeType.None;
|
|
public QRTier qrTier = QRTier.None;
|
|
|
|
// ── Хоппер ──
|
|
public int hopperCapsuleCount = 1;
|
|
public float hopperDelayBetweenCapsules = 1f;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Настройки одной ячейки витрины.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class PrizeStandBoxConfig
|
|
{
|
|
public int boxNumber = 1;
|
|
public int requiredScore;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Глобальные настройки витрины для всей игры.
|
|
/// </summary>
|
|
[Serializable]
|
|
public class PrizeStandSettings
|
|
{
|
|
public List<PrizeStandBoxConfig> boxes = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Запись «уровень → приз» для JSON-сериализации.
|
|
/// JsonUtility не поддерживает Dictionary, поэтому используем список.
|
|
/// </summary>
|
|
[Serializable]
|
|
internal class PrizeLevelEntry
|
|
{
|
|
public string level;
|
|
public LevelPrizeConfig config = new();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Корневая структура файла prizes.json.
|
|
/// </summary>
|
|
[Serializable]
|
|
internal class PrizesFileData
|
|
{
|
|
public PrizeStandSettings prizeStandSettings = new();
|
|
public List<QRCodeInfo> qrCodes = new();
|
|
public List<PrizeLevelEntry> levels = new();
|
|
}
|
|
}
|
|
|