public IEnumerable <ResearchProgress> ResearchOrder(ResearchProgressCollection techAdvances) { var playerTechs = techAdvances .Of[Player] .Where(x => x.CanProgress()) .OrderBy(x => x.Topic.IdCode) .ToList(); return(playerTechs); }
private static ResearchProgressCollection createResearchAdvances(Player[] players, IEnumerable <ResearchTopic> technologies) { var techProgress = new ResearchProgressCollection(); foreach (var player in players) { foreach (var tech in technologies) { techProgress.Add(new ResearchProgress(tech, player)); } } return(techProgress); }
public StatesDB(StarCollection stars, WormholeCollection wormholes, PlanetCollection planets, ColonyCollection Colonies, StellarisCollection stellarises, DevelopmentProgressCollection developmentAdvances, ResearchProgressCollection researchAdvances, TreatyCollection treaties, ReportCollection reports, DesignCollection designs, FleetCollection fleets, ColonizationCollection colonizations) { this.Colonies = Colonies; this.Planets = planets; this.Stars = stars; this.Stellarises = stellarises; this.Wormholes = wormholes; this.DevelopmentAdvances = developmentAdvances; this.ResearchAdvances = researchAdvances; this.Reports = reports; this.Designs = designs; this.Fleets = fleets; this.ColonizationProjects = colonizations; this.Treaties = treaties; }
public IEnumerable <DevelopmentProgress> DevelopmentOrder(DevelopmentProgressCollection developmentAdvances, ResearchProgressCollection researchAdvances, StaticsDB statics) { var researchLevels = researchAdvances.Of[Player].ToDictionary(x => x.Topic.IdCode, x => (double)x.Level); var playerTechs = developmentAdvances .Of[Player] .Where(x => (x.CanProgress(researchLevels, statics))) .ToList(); playerTechs.Sort(technologySort); return(playerTechs); }
private static Tuple <StatesDB, Player[], Player> loadSaveData(IkonComposite saveData, ObjectDeindexer deindexer, StaticsDB statics) { var stateData = saveData[MainGame.StatesKey].To <IkonComposite>(); var ordersData = saveData[MainGame.OrdersKey].To <IkonArray>(); var stars = new StarCollection(); foreach (var rawData in stateData[StatesDB.StarsKey].To <IEnumerable <IkonComposite> >()) { stars.Add(StarData.Load(rawData, deindexer)); } var planets = new PlanetCollection(); foreach (var rawData in stateData[StatesDB.PlanetsKey].To <IEnumerable <IkonComposite> >()) { planets.Add(Planet.Load(rawData, deindexer)); } var wormholes = new WormholeCollection(); foreach (var rawData in stateData[StatesDB.WormholesKey].To <IEnumerable <IkonComposite> >()) { wormholes.Add(Wormhole.Load(rawData, deindexer)); } var players = new List <Player>(); foreach (var rawData in saveData[MainGame.PlayersKey].To <IEnumerable <IkonComposite> >()) { players.Add(Player.Load(rawData, deindexer)); } var organellePlayer = Player.Load(saveData[MainGame.OrganellePlayerKey].To <IkonComposite>(), deindexer); var developments = new DevelopmentProgressCollection(); foreach (var rawData in stateData[StatesDB.DevelopmentAdvancesKey].To <IEnumerable <IkonComposite> >()) { developments.Add(DevelopmentProgress.Load(rawData, deindexer)); } var research = new ResearchProgressCollection(); foreach (var rawData in stateData[StatesDB.ResearchAdvancesKey].To <IEnumerable <IkonComposite> >()) { research.Add(ResearchProgress.Load(rawData, deindexer)); } var treaties = new TreatyCollection(); foreach (var rawData in stateData[StatesDB.TreatiesKey].To <IEnumerable <IkonComposite> >()) { treaties.Add(Treaty.Load(rawData, deindexer)); } var reports = new ReportCollection(); foreach (var rawData in stateData[StatesDB.ReportsKey].To <IEnumerable <IkonComposite> >()) { reports.Add(ReportFactory.Load(rawData, deindexer)); } var designs = new DesignCollection(); foreach (var rawData in stateData[StatesDB.DesignsKey].To <IEnumerable <IkonComposite> >()) { var design = Design.Load(rawData, deindexer); design.CalcHash(statics); designs.Add(design); deindexer.Add(design.ConstructionProject, design.ConstructionProject.IdCode); } var colonizations = new ColonizationCollection(); foreach (var rawData in stateData[StatesDB.ColonizationKey].To <IEnumerable <IkonComposite> >()) { colonizations.Add(ColonizationProject.Load(rawData, deindexer)); } var fleets = new FleetCollection(); foreach (var rawData in stateData[StatesDB.IdleFleetsKey].To <IEnumerable <IkonComposite> >()) { fleets.Add(Fleet.Load(rawData, deindexer)); } var colonies = new ColonyCollection(); foreach (var rawData in stateData[StatesDB.ColoniesKey].To <IEnumerable <IkonComposite> >()) { colonies.Add(Colony.Load(rawData, deindexer)); } var stellarises = new StellarisCollection(); foreach (var rawData in stateData[StatesDB.StellarisesKey].To <IEnumerable <IkonComposite> >()) { stellarises.Add(StellarisAdmin.Load(rawData, deindexer)); } for (int i = 0; i < players.Count; i++) { players[i].Orders = PlayerOrders.Load(ordersData[i].To <IkonComposite>(), deindexer); } organellePlayer.Orders = PlayerOrders.Load(saveData[MainGame.OrganelleOrdersKey].To <IkonComposite>(), deindexer); return(new Tuple <StatesDB, Player[], Player>( new StatesDB(stars, wormholes, planets, colonies, stellarises, developments, research, treaties, reports, designs, fleets, colonizations), players.ToArray(), organellePlayer )); }
public IEnumerable <DevelopmentProgress> DevelopmentOrder(DevelopmentProgressCollection developmentAdvances, ResearchProgressCollection researchAdvances, MainGame game) { var researchLevels = researchAdvances.Of[this.Player].ToDictionary(x => x.Topic.IdCode, x => (double)x.Level); var playerTechs = developmentAdvances .Of[this.Player] .Where(x => (x.CanProgress(researchLevels, game.Statics))) .ToList(); var orders = game.Orders[this.Player].DevelopmentQueue; var orderedTech = playerTechs. Where(x => orders.ContainsKey(x.Topic.IdCode)). OrderBy(x => orders[x.Topic.IdCode]). ToList(); orderedTech.AddRange( playerTechs. Where(x => !orders.ContainsKey(x.Topic.IdCode)). OrderBy(x => x.Topic.IdCode) ); return(orderedTech); }