/// <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(); }