using System; using System.Collections.Generic; namespace DanroJump.Prizes { /// /// Хранит текущую призовую выдачу, историю решений и блокирует повторную выдачу одной сессии. /// public interface IPrizeSessionStateService { event Action Changed; PrizeSessionRecord ActiveSession { get; } IReadOnlyList History { get; } IReadOnlyList GameplayHistory { 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( string sessionId, int score, int coins, float maxHeight, int deathCount, PrizeRewardKind rewardKind ); void RecordQrShow(); void RecordComError(); void RecordPhysicalDispense(bool success); string BuildSummary(); } }