private void BattleEnded(bool writeReport) { if (writeReport) { BattleReport.CompleteBattle(); } AboutToExitBattle(this, Attackers, Defenders); ExitBattle(this, Attackers, Defenders); foreach (var combatObj in Defenders.AllCombatObjects().Where(combatObj => !combatObj.IsDead)) { combatObj.ExitBattle(); } foreach (var combatObj in Attackers.AllCombatObjects().Where(combatObj => !combatObj.IsDead)) { combatObj.ExitBattle(); } foreach (var group in Attackers) { WithdrawAttacker(this, group); } foreach (var group in Defenders) { WithdrawDefender(this, group); } // Delete all groups Attackers.Clear(); Defenders.Clear(); }
private void BringWaitingTroopsIntoBattle() { foreach (var defender in Defenders.AllCombatObjects().Where(co => co.IsWaitingToJoinBattle)) { defender.JoinBattle(Round); dbManager.Save(defender); } foreach (var attacker in Attackers.AllCombatObjects().Where(co => co.IsWaitingToJoinBattle)) { attacker.JoinBattle(Round); dbManager.Save(attacker); } }
public ICombatObject GetCombatObject(uint id) { return(Attackers.AllCombatObjects().FirstOrDefault(co => co.Id == id) ?? Defenders.AllCombatObjects().FirstOrDefault(co => co.Id == id)); }