private static void ResolveSecrets(IEnumerable <TurnStats> newTurnStats)
        {
            var unresolvedSecrets = 0;
            var triggeredSecrets  = 0;

            TurnStats.Play candidateSecret = null;

            foreach (var play in newTurnStats.SelectMany(turn => turn.Plays))
            {
                // is secret play
                if ((play.Type == PlayType.OpponentHandDiscard && play.CardId == "") || play.Type == PlayType.OpponentSecretPlayed)
                {
                    unresolvedSecrets++;
                    candidateSecret = play;
                    play.Type       = PlayType.OpponentSecretPlayed;
                }
                else if (play.Type == PlayType.OpponentSecretTriggered)
                {
                    if (unresolvedSecrets == 1 && candidateSecret != null)
                    {
                        candidateSecret.CardId = play.CardId;
                    }
                    triggeredSecrets++;
                    if (triggeredSecrets == unresolvedSecrets)
                    {
                        triggeredSecrets  = 0;
                        unresolvedSecrets = 0;
                    }
                }
            }
        }
        public GameDetailItem(TurnStats.Play play, int turn)
        {
            Turn   = turn.ToString();
            Player = play.Type.ToString().StartsWith("Player") ? "Player" : "Opponent";
            Action = play.Type.ToString().Replace("Player", string.Empty).Replace("Opponent", string.Empty);
            Card   = Database.GetCardFromId(play.CardId);

            if (play.Type == PlayType.PlayerHandDiscard || play.Type == PlayType.OpponentHandDiscard && (Card != null && Card.Type == "Spell"))
            {
                Action = "Play/Discard";
            }
        }