Danro-Jump/Assets/Scripts/Runtime/Prizes/PrizeSessionRecord.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

51 lines
1.5 KiB
C#
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.

using System;
namespace DanroJump.Prizes
{
/// <summary>
/// Запись истории решения о призе и его выдачи.
/// </summary>
public sealed class PrizeSessionRecord
{
public PrizeSessionRecord(
string sessionId,
PrizeFlowResult result,
PrizeSessionStatus status,
DateTime startedAtUtc,
DateTime? updatedAtUtc,
string note = null)
{
SessionId = sessionId ?? string.Empty;
Result = result;
Status = status;
StartedAtUtc = startedAtUtc;
UpdatedAtUtc = updatedAtUtc ?? startedAtUtc;
Note = note ?? string.Empty;
}
public PrizeSessionRecord(
string sessionId,
PrizeFlowResult result,
PrizeSessionStatus status,
DateTime startedAtUtc,
string note = null)
: this(sessionId, result, status, startedAtUtc, null, note)
{
}
public string SessionId { get; }
public PrizeFlowResult Result { get; }
public PrizeSessionStatus Status { get; private set; }
public DateTime StartedAtUtc { get; }
public DateTime UpdatedAtUtc { get; private set; }
public string Note { get; private set; }
public void SetStatus(PrizeSessionStatus status, DateTime updatedAtUtc, string note = null)
{
Status = status;
UpdatedAtUtc = updatedAtUtc;
Note = note ?? string.Empty;
}
}
}