public Game([NotNull] NewGameSettings newGameSettings) : this() { if (newGameSettings == null) { throw new ArgumentNullException(nameof(newGameSettings)); } GalaxyGen = new GalaxyFactory(true, newGameSettings.MasterSeed); StaticRefLib.GameSettings = newGameSettings; GameLoop.GameGlobalDateTime = newGameSettings.StartDateTime; // Load Static Data if (newGameSettings.DataSets != null) { foreach (string dataSet in newGameSettings.DataSets) { StaticDataManager.LoadData(dataSet, this); } } if (StaticData.LoadedDataSets.Count == 0) { StaticDataManager.LoadData("Pulsar4x", this); } // Create SM SpaceMaster.ChangePassword(new AuthenticationToken(SpaceMaster, ""), newGameSettings.SMPassword); GameMasterFaction = FactionFactory.CreatePlayerFaction(this, SpaceMaster, "SpaceMaster Faction"); if (newGameSettings.CreatePlayerFaction ?? false) { foreach (var kvp in newGameSettings.DefaultHaltOnEvents) { //defaultPlayer.HaltsOnEvent.Add(kvp.Key, kvp.Value); } if (newGameSettings.DefaultSolStart ?? false) { //DefaultStartFactory.DefaultHumans(this, newGameSettings.DefaultFactionName); } else { //FactionFactory.CreatePlayerFaction(this, defaultPlayer, newGameSettings.DefaultFactionName); } } // Temp: This will be reworked later. GenerateSystems(new AuthenticationToken(SpaceMaster, newGameSettings.SMPassword), newGameSettings.MaxSystems); /* * GlobalManager.ManagerSubpulses.Init(GlobalManager); * foreach (StarSystem starSys in this.Systems.Values) * { * starSys.ManagerSubpulses.Init(starSys); * }*/ // Fire PostLoad event PostLoad += (sender, args) => { InitializeProcessors(); }; }
internal void CreateGame(NewGameOptionsVM options) { StatusText = "Creating Game..."; // TODO: Databind the GameSettings object in the NewGameOptionsVM var gameSettings = new NewGameSettings { GameName = "Test Game", MaxSystems = options.NumberOfSystems, SMPassword = options.GmPassword, DataSets = options.SelectedModList.Select(dvi => dvi.Directory), CreatePlayerFaction = options.CreatePlayerFaction, DefaultFactionName = options.FactionName, DefaultPlayerPassword = options.FactionPassword, DefaultSolStart = options.DefaultStart, }; Game = new Game(gameSettings); // TODO: Select default player more reliably CurrentPlayer = Game.Players[0]; CurrentAuthToken = new AuthenticationToken(CurrentPlayer, options.FactionPassword); ReadOnlyDictionary <Entity, AccessRole> roles = CurrentPlayer.GetAccessRoles(CurrentAuthToken); CurrentFaction = roles.FirstOrDefault(role => (role.Value & AccessRole.Owner) != 0).Key; SetFactionData(); var auth = new AuthDB(); CurrentFaction.SetDataBlob(auth); AuthProcessor.StorePasswordAsHash(Game, CurrentFaction, options.FactionPassword); StatusText = "Game Created."; StarSystemSelectionViewModel = new StarSystemSelectionVM(this, Game, CurrentFaction); StarSystemSelectionViewModel.Initialise(); }