public WarSorter(GameState state, WarForcesTable forcesAllocator, IEnumerable <AttackMove> attackMoves) { Dictionary <Province, List <AttackMove> > byTargetTable = SortByTarget(attackMoves); IEnumerable <FinalWarsSetup> finalWars = GetFinalWars(state, byTargetTable, forcesAllocator).ToArray(); FinalWars = finalWars.ToArray(); }
public WarsResolver(GameState state, IEnumerable <AttackMove> attackMoves) { WarForcesTable warForcesTable = new WarForcesTable(state, attackMoves); WarSorter warSorter = new WarSorter(state, warForcesTable, attackMoves); Wars = warSorter.FinalWars.SelectMany(item => item.Wars).ToArray(); NewGameState = GetNewGameState(state, Wars); }
private IEnumerable <FactionArmies> GetAttackersForProvince(Province defender, IEnumerable <AttackMove> invaders, WarForcesTable forcesTable) { IEnumerable <IEnumerable <AttackMove> > invadersByFaction = GetInvadersByFaction(invaders).ToArray(); foreach (IEnumerable <AttackMove> invadingFaction in invadersByFaction) { FactionArmies retItem = forcesTable.GetForcesFor(invadingFaction); yield return(retItem); } }
private IEnumerable <FinalWarsSetup> GetFinalWars(GameState state, Dictionary <Province, List <AttackMove> > byTargetTable, WarForcesTable forcesTable) { foreach (KeyValuePair <Province, List <AttackMove> > item in byTargetTable) { FactionArmies defender = forcesTable.GetForcesFor(item.Key); IEnumerable <FactionArmies> invaders = GetAttackersForProvince(item.Key, item.Value, forcesTable).ToArray(); ProvinceState locationState = state.GetProvinceState(item.Key); FinalWarsSetup retItem = new FinalWarsSetup(locationState, defender, invaders); yield return(retItem); } }