Пример #1
0
        private MyObjectBuilder_AsteroidGenerator GetConfig()
        {
            if (MyAPIGateway.Utilities.FileExistsInWorldStorage(STORAGE_FILE, typeof(ProceduralGenerator)))
            {
                try
                {
                    using (var reader = MyAPIGateway.Utilities.ReadFileInWorldStorage(STORAGE_FILE, typeof(ProceduralGenerator)))
                    {
                        MyObjectBuilder_AsteroidGenerator saveFile = MyAPIGateway.Utilities.SerializeFromXML <MyObjectBuilder_AsteroidGenerator>(reader.ReadToEnd());
                        return(saveFile);
                    }
                }
                catch (Exception e)
                {
                    PluginLog.Log("Couldnt load Starsystem save file.", LogLevel.ERROR);
                    PluginLog.Log(e.Message + "\n" + e.StackTrace, LogLevel.ERROR);

                    MyAPIGateway.Utilities.DeleteFileInWorldStorage(STORAGE_FILE, typeof(ProceduralGenerator));
                    return(null);
                }
            }
            else
            {
                return(new MyObjectBuilder_AsteroidGenerator());
            }
        }
Пример #2
0
        public override void LoadData()
        {
            PluginLog.Log("Loading procedural generator data");
            Static = this;

            m_seed = MySession.Static.Settings.ProceduralSeed;

            planetModule = new ProceduralPlanetModule(m_seed);

            if (!SettingsSession.Static.Settings.Enable || !Sync.IsServer || MySession.Static.Settings.WorldSizeKm != 0)
            {
                return;
            }

            MyObjectBuilder_AsteroidGenerator b = GetConfig();

            m_existingObjectSeeds = b.ExistingObjectsSeeds;

            proceduralDensity = b.ProceduralDensity == 0 ? MySession.Static.Settings.ProceduralDensity : b.ProceduralDensity;

            if (SettingsSession.Static.Settings.GeneratorSettings.AsteroidGenerator == AsteroidGenerator.PLUGIN)
            {
                MySession.Static.Settings.ProceduralDensity = 0;
                MySession.Static.OnSavingCheckpoint        += delegate
                {
                    if (Enabled)
                    {
                        MySession.Static.Settings.ProceduralDensity = proceduralDensity;
                    }
                };
            }
            else
            {
                if (MySession.Static.Settings.ProceduralDensity != 0 && MySession.Static.Settings.ProceduralDensity != proceduralDensity)
                {
                    proceduralDensity = MySession.Static.Settings.ProceduralDensity;
                }
                else
                {
                    MySession.Static.Settings.ProceduralDensity = proceduralDensity;
                }
            }

            //if (MySession.Static.Settings.ProceduralDensity != 0) return;

            asteroidModule = new ProceduralAsteroidsRingModule(m_seed);
        }
        private void SaveConfig()
        {
            MyObjectBuilder_AsteroidGenerator conf = new MyObjectBuilder_AsteroidGenerator();

            conf.ExistingObjectsSeeds = m_existingObjectSeeds;
            conf.ProceduralDensity    = proceduralDensity;

            MyAPIGateway.Utilities.DeleteFileInWorldStorage(STORAGE_FILE, typeof(ProceduralGenerator));

            string xml = MyAPIGateway.Utilities.SerializeToXML(conf);

            using (var writer = MyAPIGateway.Utilities.WriteFileInWorldStorage(STORAGE_FILE, typeof(ProceduralGenerator)))
            {
                writer.Write(xml);
                writer.Close();
            }
        }