Danro-Jump/Assets/Scripts/Runtime/Settings/Core/ServiceSettingsPrizeSummaryBuilder.cs
Danil Iarosh d39d160d92 Implement physical prize dispensing, service stats, and QR screen timeout
- Добавлен асинхронный процесс аппаратной выдачи физических призов (хоппер и витрина) в GameplayHudController.
- Реализована блокировка выдачи по 10-секундному таймауту датчика хоппера с гарантированной отправкой команды отключения двигателя '300'.
- Реализован автоматический таймаут неактивности на экране QR-кода с последующим переходом в главное меню.
- Расширен сервис статистики PrizeSessionStateService новыми долгосрочными счетчиками (сыгранные игры, очки, монеты, сбои связи COM, физ. выдачи и ошибки).
- Обновлен построитель сводки статистики в меню настроек для отображения новых счетчиков и списка последних 5 сессий.
- Написаны EditMode тесты для проверки инкремента счетчиков и запуска выдачи призов.
2026-06-23 10:36:13 +03:00

29 lines
1.3 KiB
C#

using DanroJump.Prizes;
namespace DanroJump.Settings
{
/// <summary>
/// Формирует операторскую сводку призовых уровней и legacy-флагов.
/// </summary>
internal static class ServiceSettingsPrizeSummaryBuilder
{
public static string Build(IReadOnlyServiceSettings settings)
{
if (settings == null)
{
return "Раздел призов открыт. Сервис настроек пока недоступен.";
}
var smallPrize = settings.GetBool(ServiceSettingsKeys.GiveSmallPrize) ? "включён" : "выключен";
var bigPrize = settings.GetBool(ServiceSettingsKeys.GiveBigPrize) ? "включён" : "выключен";
var levels = PrizeLevelTable.FromJson(settings.GetString(ServiceSettingsKeys.PrizeLevels));
if (levels.Count > 0)
{
return $"Раздел призов открыт. Настроено уровней: {levels.Count}.";
}
return $"Раздел призов открыт. Таблица уровней пустая. Legacy: малый приз {smallPrize}, большой приз {bigPrize}.";
}
}
}