Exemplo n.º 1
0
        /// <summary>
        /// Used to log a finished round.
        /// </summary>
        /// <param name="playerADamage"></param>
        /// <param name="playerBDamage"></param>
        /// <param name="cardsLeftA"></param>
        /// <param name="cardsLeftB"></param>
        public void RoundLog(IDamage playerADamage, IDamage playerBDamage, int cardsLeftA, int cardsLeftB)
        {
            if (!(playerA is { } a) || !(playerB is { } b))
            {
                return;
            }
            var round = new Dictionary <string, object>
            {
                [a.Username] = playerA.Log.ToList(), [b.Username] = playerB.Log.ToList()
            };
            var result = new List <string>
            {
                $"{a.CardName} VS {b.CardName}",
                $"{playerADamage.ToString()} VS {playerBDamage.ToString()}"
            };

            if (playerADamage.CompareTo(playerBDamage) == 0)
            {
                result.Add("Result: Draw");
                result.Add($"Remaining Cards: {cardsLeftA} VS {cardsLeftB}");
            }
            else if (playerADamage.CompareTo(playerBDamage) > 0)
            {
                result.Add($"Result: {a.Username} Win");
                result.Add($"Remaining Cards: {cardsLeftA} VS {cardsLeftB}");
                if (a.EffectLog is {} effect)
                {
                    result.Add(effect);
                }
            }
            else
            {
                result.Add($"Result: {b.Username} Win");
                result.Add($"Remaining Cards: {cardsLeftA} VS {cardsLeftB}");
                if (b.EffectLog is {} effect)
                {
                    result.Add(effect);
                }
            }
            round["result"]         = result;
            log[$"round {counter}"] = round;
            counter++;

            playerA.Clear();
            playerB.Clear();
        }