- Добавлен асинхронный процесс аппаратной выдачи физических призов (хоппер и витрина) в GameplayHudController. - Реализована блокировка выдачи по 10-секундному таймауту датчика хоппера с гарантированной отправкой команды отключения двигателя '300'. - Реализован автоматический таймаут неактивности на экране QR-кода с последующим переходом в главное меню. - Расширен сервис статистики PrizeSessionStateService новыми долгосрочными счетчиками (сыгранные игры, очки, монеты, сбои связи COM, физ. выдачи и ошибки). - Обновлен построитель сводки статистики в меню настроек для отображения новых счетчиков и списка последних 5 сессий. - Написаны EditMode тесты для проверки инкремента счетчиков и запуска выдачи призов.
39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace DanroJump.Prizes
|
|
{
|
|
/// <summary>
|
|
/// Хранит текущую призовую выдачу, историю решений и блокирует повторную выдачу одной сессии.
|
|
/// </summary>
|
|
public interface IPrizeSessionStateService
|
|
{
|
|
event Action Changed;
|
|
|
|
PrizeSessionRecord ActiveSession { get; }
|
|
IReadOnlyList<PrizeSessionRecord> History { get; }
|
|
int StartedCount { get; }
|
|
int CompletedCount { get; }
|
|
int FailedCount { get; }
|
|
int DuplicateBlockedCount { get; }
|
|
|
|
int TotalGamesPlayed { get; }
|
|
int TotalScore { get; }
|
|
int TotalCoins { get; }
|
|
int QrShows { get; }
|
|
int PhysicalDispenses { get; }
|
|
int PhysicalDispenseFailures { get; }
|
|
int ComErrors { get; }
|
|
|
|
bool TryBeginSession(PrizeFlowResult result, out PrizeSessionRecord record);
|
|
bool MarkActiveSessionShown();
|
|
bool CompleteActiveSession(string note = null);
|
|
bool FailActiveSession(string reason);
|
|
void RecordGameplaySession(int score, int coins);
|
|
void RecordQrShow();
|
|
void RecordComError();
|
|
void RecordPhysicalDispense(bool success);
|
|
string BuildSummary();
|
|
}
|
|
}
|