public WinnerCard FightRound(BaseCard cardPlayerOne, BaseCard cardPlayerTwo, Arena arena) { this.cardPlayerOne = cardPlayerOne; this.cardPlayerTwo = cardPlayerTwo; switch (this.cardPlayerOne.category) { case Category.Monster when this.cardPlayerTwo.category == Category.Monster: { this.currentDamageCardOne = this.cardPlayerOne.damage; this.currentDamageCardTwo = this.cardPlayerTwo.damage; arena.ArenaLog.AddTextToLog("Fight between two Monsters!"); switch (this.cardPlayerOne.race) { case Race.Dragon when this.cardPlayerTwo.race == Race.Goblin: { arena.ArenaLog.AddTextToLog("Goblin from " + arena.playerTwo.Username.ToUpper() + " is too afraid to attack the Dragon from " + arena.playerOne.Username.ToUpper()); this.fightResult = WinnerCard.CardPlayerOne; break; } case Race.Goblin when this.cardPlayerTwo.race == Race.Dragon: { arena.ArenaLog.AddTextToLog("Goblin from " + arena.playerOne.Username.ToUpper() + " is too afraid to attack the Dragon from " + arena.playerTwo.Username.ToUpper()); this.fightResult = WinnerCard.CardPlayerTwo; break; } case Race.Wizzard when this.cardPlayerTwo.race == Race.Orc: { arena.ArenaLog.AddTextToLog("Wizzard from " + arena.playerOne.Username.ToUpper() + " controls the Orc from " + arena.playerTwo.Username.ToUpper()); this.fightResult = WinnerCard.CardPlayerOne; break; } case Race.Orc when this.cardPlayerTwo.race == Race.Wizzard: { arena.ArenaLog.AddTextToLog("Wizzard from " + arena.playerTwo.Username.ToUpper() + " controls the Orc from " + arena.playerOne.Username.ToUpper()); this.fightResult = WinnerCard.CardPlayerTwo; break; } case Race.Elve when this.cardPlayerTwo.race == Race.Dragon: { if (this.cardPlayerOne.element == Element.Fire) { arena.ArenaLog.AddTextToLog("FireElve from " + arena.playerOne.Username.ToUpper() + " evede the attack from " + arena.playerTwo.Username.ToUpper() + "'s Dragon"); this.fightResult = WinnerCard.CardPlayerOne; break; } else { this.fightResult = CheckWinner(arena); break; } } case Race.Dragon when this.cardPlayerTwo.race == Race.Elve: { if (this.cardPlayerTwo.element == Element.Fire) { arena.ArenaLog.AddTextToLog("FireElve from " + arena.playerTwo.Username.ToUpper() + " evede the attack from " + arena.playerOne.Username.ToUpper() + "'s Dragon"); this.fightResult = WinnerCard.CardPlayerTwo; break; } else { this.fightResult = CheckWinner(arena); break; } } default: { this.fightResult = CheckWinner(arena); break; } } return(this.fightResult); } case Category.Monster when this.cardPlayerTwo.category == Category.Spell: { arena.ArenaLog.AddTextToLog("Fight between one Monster and one Spell!"); fightResult = MonsterVsSpell(arena); switch (this.fightResult) { case WinnerCard.CardPlayerOne: { break; } case WinnerCard.CardPlayerTwo: { break; } case WinnerCard.Draw: { CheckElement(); this.fightResult = CheckWinner(arena); break; } } return(this.fightResult); } case Category.Spell when this.cardPlayerTwo.category == Category.Monster: { arena.ArenaLog.AddTextToLog("Fight between one Spell and one Monster!"); fightResult = MonsterVsSpell(arena); switch (this.fightResult) { case WinnerCard.CardPlayerOne: { break; } case WinnerCard.CardPlayerTwo: { break; } case WinnerCard.Draw: { CheckElement(); this.fightResult = CheckWinner(arena); break; } } return(this.fightResult); } case Category.Spell when this.cardPlayerTwo.category == Category.Spell: { arena.ArenaLog.AddTextToLog("Fight between two Spells!"); CheckElement(); this.fightResult = CheckWinner(arena); return(this.fightResult); } default: { return(this.fightResult); } } }