Example #1
0
        public NewGameController(IEnumerable <NamedStream> staticDataSources)
        {
            foreach (var aiFactory in PlayerAssets.AIDefinitions.Values)
            {
                aiPlayers.Add(new PlayerType(PlayerControlType.LocalAI, aiFactory));
            }

            //TODO(v0.9) move to controller user
            this.players.AddRange(
                Settings.Get.LastGame.PlayersConfig != null && Settings.Get.LastGame.PlayersConfig.Length > 1 ?
                loadPlayerSetup(Settings.Get.LastGame.PlayersConfig) :
                this.defaultPlayerSetup()
                );
            this.Statics   = StaticsDB.Load(staticDataSources);
            this.evaluator = new SystemEvaluator(this.Statics);
            foreach (var populator in MapAssets.StarPopulators)
            {
                populator.SetGameData(
                    this.Statics.StarTraits,
                    this.Statics.PlanetTraits,
                    this.Statics.PlanetForumlas.ToDictionary(x => x.Key, x => x.Value.ImplicitTraits)
                    );
            }

            this.CustomStart    = LastStartingCondition ?? DefaultStartingCondition;
            this.StarPositioner = ParameterLoadingVisitor.Load(Settings.Get.LastGame.StarPositionerConfig, MapAssets.StarPositioners);
            this.StarConnector  = ParameterLoadingVisitor.Load(Settings.Get.LastGame.StarConnectorConfig, MapAssets.StarConnectors);
            this.StarPopulator  = ParameterLoadingVisitor.Load(Settings.Get.LastGame.StarPopulatorConfig, MapAssets.StarPopulators);
        }
Example #2
0
        public static MainGame CreateGame(Random rng, Player[] players, Player organellePlayer, NewGameController controller, IEnumerable <TracableStream> staticDataSources)
        {
            var statics   = StaticsDB.Load(staticDataSources);
            var states    = createStates(rng, controller, players, statics);
            var derivates = createDerivates(players, organellePlayer, controller.SelectedStart, statics, states);

            var game = new MainGame(players, organellePlayer, statics, states, derivates);

            game.CalculateDerivedEffects();

            controller.SaveLastGame();
            return(game);
        }