private BattleArmyDTO GetArmy(int userCityId, List <UnitType> attackPriority) { var userArmy = new BattleArmyDTO(); var userArchers = this.archersRepo.AllAsNoTracking().Where(x => x.CityId == userCityId).To <BattleUnitDTO>().FirstOrDefault(); userArchers.Type = UnitType.Archers; userArchers.AttackPriority = attackPriority; var userInfantry = this.infatryRepo.AllAsNoTracking().Where(x => x.CityId == userCityId).To <BattleUnitDTO>().FirstOrDefault(); userInfantry.Type = UnitType.Infantry; userInfantry.AttackPriority = attackPriority; var userCavalry = this.calalryRepo.AllAsNoTracking().Where(x => x.CityId == userCityId).To <BattleUnitDTO>().FirstOrDefault(); userCavalry.Type = UnitType.Cavalry; userCavalry.AttackPriority = attackPriority; var userArtillery = this.artilleryRepo.AllAsNoTracking().Where(x => x.CityId == userCityId).To <BattleUnitDTO>().FirstOrDefault(); userArtillery.Type = UnitType.Artillery; userArtillery.AttackPriority = attackPriority; userArmy.Army.Add(userArchers); userArmy.Army.Add(userInfantry); userArmy.Army.Add(userCavalry); userArmy.Army.Add(userArtillery); return(userArmy); }
private static void UpdateBattleResult(string attackerId, string defenderId, BattleArmyDTO attackerArmy, BattleArmyDTO opponentArmy, BattleResult battleResult) { battleResult.Winner = attackerArmy.TotalArmyCount > 0 ? attackerId : defenderId; battleResult.AttackerArchersLost = battleResult.AttackerArchers - attackerArmy.Army.FirstOrDefault(x => x.Type == UnitType.Archers).Count; battleResult.AttackerArtilleryLost = battleResult.AttackerArtillery - attackerArmy.Army.FirstOrDefault(x => x.Type == UnitType.Artillery).Count; battleResult.AttackerCavalryLost = battleResult.AttackerCavalry - attackerArmy.Army.FirstOrDefault(x => x.Type == UnitType.Cavalry).Count; battleResult.AttackerInfantryLost = battleResult.AttackerInfantry - attackerArmy.Army.FirstOrDefault(x => x.Type == UnitType.Infantry).Count; battleResult.DefenderArchersLost = battleResult.DefenderArchers - opponentArmy.Army.FirstOrDefault(x => x.Type == UnitType.Archers).Count; battleResult.DefenderArtilleryLost = battleResult.DefenderArtillery - opponentArmy.Army.FirstOrDefault(x => x.Type == UnitType.Artillery).Count; battleResult.DefenderCavalryLost = battleResult.DefenderCavalry - opponentArmy.Army.FirstOrDefault(x => x.Type == UnitType.Cavalry).Count; battleResult.DefenderInfantryLost = battleResult.DefenderInfantry - opponentArmy.Army.FirstOrDefault(x => x.Type == UnitType.Infantry).Count; }
private BattleResult SetInitialBattleResultData(BattleArmyDTO userArmy, BattleArmyDTO opponentArmy, string attackerId, string defenderId) { var battleResult = new BattleResult(); battleResult.Attacker = attackerId; battleResult.Defender = defenderId; battleResult.BattleType = "Arena"; battleResult.AttackerArchers = userArmy.Army.FirstOrDefault(x => x.Type == UnitType.Archers).Count; battleResult.AttackerArtillery = userArmy.Army.FirstOrDefault(x => x.Type == UnitType.Artillery).Count; battleResult.AttackerCavalry = userArmy.Army.FirstOrDefault(x => x.Type == UnitType.Cavalry).Count; battleResult.AttackerInfantry = userArmy.Army.FirstOrDefault(x => x.Type == UnitType.Infantry).Count; battleResult.DefenderArchers = opponentArmy.Army.FirstOrDefault(x => x.Type == UnitType.Archers).Count; battleResult.DefenderArtillery = opponentArmy.Army.FirstOrDefault(x => x.Type == UnitType.Artillery).Count; battleResult.DefenderCavalry = opponentArmy.Army.FirstOrDefault(x => x.Type == UnitType.Cavalry).Count; battleResult.DefenderInfantry = opponentArmy.Army.FirstOrDefault(x => x.Type == UnitType.Infantry).Count; return(battleResult); }
private static BattleUnitDTO SelectDefendingUnit(List <UnitType> attackPriority, BattleArmyDTO defenderArmy) { BattleUnitDTO defendingUnit = null; for (int i = 0; i < 4; i++) { defendingUnit = defenderArmy.Army.FirstOrDefault(x => x.Type == attackPriority[i] && x.Count > 0); if (defendingUnit != null) { break; } } return(defendingUnit); }