Ejemplo n.º 1
0
        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(); };
        }
Ejemplo n.º 2
0
        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();
        }