/// <summary>
 /// Saves the current sessions plugin settings to the world folder.
 /// </summary>
 public override void SaveData()
 {
     if (Sync.IsServer)
     {
         MyFileUtils.WriteXmlFileToWorld(Settings, FILE_NAME);
     }
 }
Пример #2
0
        /// <summary>
        /// Saves the gpss to the file
        /// </summary>
        public override void SaveData()
        {
            if (!MySettingsSession.Static.IsEnabled())
            {
                return;
            }

            MyPluginLog.Log("Saving GPS manager data");

            MyObjectBuilder_WorldGpsData ob = new MyObjectBuilder_WorldGpsData();

            foreach (var entry in m_globalGpss)
            {
                PersistentGpsData item = new PersistentGpsData();
                item.Name      = entry.Value.Name;
                item.Color     = entry.Value.Color;
                item.Position  = entry.Value.Position;
                item.PlayerIds = entry.Value.Players;
                item.Id        = entry.Key;
                item.Hidden    = entry.Value.Hidden;

                ob.PersistentGpss.Add(item);
            }

            MyFileUtils.WriteXmlFileToWorld(ob, FILENAME);

            MyPluginLog.Log("Saving GPS manager data completed");
        }
        /// <summary>
        /// Loads the savefile of the plugin settings of the world and stores it
        /// int the Settings member variable
        /// </summary>
        public override void LoadData()
        {
            MyPluginLog.Log("Loading Session settings data");
            Static = this;
            if (MyFileUtils.FileExistsInWorldStorage(FILE_NAME))
            {
                Settings = MyFileUtils.ReadXmlFileFromWorld <MyObjectBuilder_WorldSettings>(FILE_NAME);

                MyPluginLog.Log("Session settings read from file");
            }
            else
            {
                MyPluginLog.Log("Session settings do not exist, creating new ones.");
                if (MySettings.Static == null)
                {
                    var s = new MySettings();
                    s.LoadSettings();
                }
                if (MySettings.Static.SessionSettings != null)
                {
                    Settings = MySettings.Static.SessionSettings;
                }
                else
                {
                    Settings = new MyObjectBuilder_WorldSettings();
                }

                MySettings.Static.SessionSettings = null;
            }

            MyPluginLog.Log("Loading Session settings data completed");
        }
        /// <summary>
        /// Saves the system objects to a file, if the plugin is enabled.
        /// </summary>
        public override void SaveData()
        {
            if (MySettingsSession.Static.IsEnabled())
            {
                MyPluginLog.Log("Saving system data");

                MyFileUtils.WriteXmlFileToWorld(StarSystem, STORAGE_FILE);
            }
        }
Пример #5
0
 /// <summary>
 /// Loads the global configuration file if it exists, otherwise creates a new one.
 /// </summary>
 public void LoadSettings()
 {
     MyPluginLog.Log("Loading the global config file");
     if (MyFileUtils.FileExistsInGlobalStorage(FILENAME))
     {
         try
         {
             using (var reader = MyFileUtils.ReadFileInGlobalStorage(FILENAME))
             {
                 MyPluginLog.Log("Reading global config file");
                 MyObjectBuilder_GlobalSettings saveFile = MyFileUtils.SerializeFromXml <MyObjectBuilder_GlobalSettings>(reader.ReadToEnd());
                 if (saveFile != null)
                 {
                     MyPluginLog.Log("Serialized global config file");
                     Settings = saveFile;
                 }
             }
         }
         catch (Exception e)
         {
             MyPluginLog.Log("Couldnt load Plugin config file.", LogLevel.ERROR);
             MyPluginLog.Log(e.Message + "\n" + e.StackTrace, LogLevel.ERROR);
             MyFileUtils.DeleteFileInGlobalStorage(FILENAME);
             Settings = new MyObjectBuilder_GlobalSettings();
             Settings.MoonDefinitions.Add("Moon");
             Settings.MoonDefinitions.Add("Titan");
             Settings.MoonDefinitions.Add("Europa");
             Settings.MoonDefinitions.Add("Triton");
             Settings.BlacklistedPlanetDefinitions.Add("EarthLikeTutorial");
             Settings.BlacklistedPlanetDefinitions.Add("MarsTutorial");
             Settings.BlacklistedPlanetDefinitions.Add("MoonTutorial");
             Settings.BlacklistedPlanetDefinitions.Add("SystemTestMap");
             Settings.BlacklistedPlanetDefinitions.Add("EarthLikeModExample");
         }
     }
     else
     {
         MyPluginLog.Log("Config does not exist, creating default one");
         Settings = new MyObjectBuilder_GlobalSettings();
         Settings.MoonDefinitions.Add("Moon");
         Settings.MoonDefinitions.Add("Titan");
         Settings.MoonDefinitions.Add("Europa");
         Settings.MoonDefinitions.Add("Triton");
         Settings.BlacklistedPlanetDefinitions.Add("EarthLikeTutorial");
         Settings.BlacklistedPlanetDefinitions.Add("MarsTutorial");
         Settings.BlacklistedPlanetDefinitions.Add("MoonTutorial");
         Settings.BlacklistedPlanetDefinitions.Add("SystemTestMap");
         Settings.BlacklistedPlanetDefinitions.Add("EarthLikeModExample");
     }
     Settings.Verify();
     MyPluginLog.Log("Config loaded");
 }
        /// <summary>
        /// Loads the system data xml file from the world folder, or,
        /// if none exist, returns a new one.
        /// </summary>
        /// <returns></returns>
        private MyObjectBuilder_SystemData LoadSystemData()
        {
            if (MyFileUtils.FileExistsInWorldStorage(STORAGE_FILE))
            {
                var data = MyFileUtils.ReadXmlFileFromWorld <MyObjectBuilder_SystemData>(STORAGE_FILE);
                if (data == null)
                {
                    data = new MyObjectBuilder_SystemData();
                }

                return(data);
            }
            return(new MyObjectBuilder_SystemData());
        }
        /// <summary>
        /// Unloads the used data of this session component.
        /// </summary>
        protected override void UnloadData()
        {
            MyPluginLog.Log("Unloading Session settings data");

            if (Sync.IsServer)
            {
                MyFileUtils.WriteXmlFileToWorld(Settings, FILE_NAME);
            }
            Settings = null;

            MySettings.Static.SessionSettings = null;

            MyPluginLog.Log("Unloading Session settings data completed");
        }
        /// <summary>
        /// Loads values from the folder of the world, which is currently edited. Used for editing world settings.
        /// </summary>
        private void LoadValues()
        {
            var path = Path.Combine(MyFileSystem.SavesPath, Checkpoint.SessionName.Replace(":", "-"));

            if (MyFileUtils.FileExistsInPath(path, MySettingsSession.FILE_NAME, typeof(PluginWorldSettings)))
            {
                PlSettings = MyFileUtils.ReadXmlFileFromPath <MyObjectBuilder_WorldSettings>(path, MySettingsSession.FILE_NAME, typeof(PluginWorldSettings));
            }
            else
            {
                PlSettings = new MyObjectBuilder_WorldSettings();
            }
            m_enablePlugin.IsChecked = PlSettings.Enabled;
        }
Пример #9
0
        /// <summary>
        /// Saves the global configuration file
        /// </summary>
        public void SaveSettings()
        {
            MyFileUtils.DeleteFileInGlobalStorage(FILENAME);

            string xml = MyFileUtils.SerializeToXml(Settings);

            MyPluginLog.Log("Saving global SEWorldGenPlugin config file: " + xml);

            using (var writer = MyFileUtils.WriteFileInGlobalStorage(FILENAME))
            {
                writer.Write(xml);
                writer.Close();
            }
        }
Пример #10
0
        /// <summary>
        /// Loads persistent gps data
        /// </summary>
        public override void LoadData()
        {
            MyPluginLog.Log("Loading GPS manager data");
            Static = this;

            MyObjectBuilder_WorldGpsData ob;

            if (MyFileUtils.FileExistsInWorldStorage(FILENAME))
            {
                ob = MyFileUtils.ReadXmlFileFromWorld <MyObjectBuilder_WorldGpsData>(FILENAME);
            }
            else
            {
                ob = new MyObjectBuilder_WorldGpsData();
            }

            m_globalGpss  = new Dictionary <Guid, MyGpsData>();
            m_dynamicGpss = new Dictionary <Tuple <Guid, long>, int>();

            foreach (var item in ob.PersistentGpss)
            {
                var data = new MyGpsData(item.Name, item.Color, item.Position, item.Id, item.PlayerIds, item.Hidden);
                m_globalGpss[item.Id] = data;
            }

            MySession.Static.OnSavingCheckpoint += delegate
            {
                foreach (var key in m_dynamicGpss.Keys)
                {
                    MySession.Static.Gpss.SendDelete(key.Item2, m_dynamicGpss[key]);
                }
                ;
                m_dynamicGpss.Clear();
            };

            MyPluginLog.Log("Loading GPS manager data completed");
        }
        /// <summary>
        /// Builds the controls for the gui screen by first building the base
        /// controls and then adding the checkbox to enable the plugin and a button to edit
        /// its settings for the world, also initializes an instance of plugin settings to edit.
        /// Adds a new delegate to the create world button, to transfere the set plugin settings
        /// to the plugins settings session component.
        /// </summary>
        protected override void BuildControls()
        {
            base.BuildControls();

            Vector2 vector  = -m_size.Value / 2f + new Vector2(m_isNewGame ? (MARGIN_LEFT_LIST + MyGuiConstants.LISTBOX_WIDTH + MARGIN_LEFT_INFO) : MARGIN_LEFT_LIST, m_isNewGame ? (MARGIN_TOP + 0.015f) : (MARGIN_TOP - 0.105f));
            Vector2 value   = new Vector2(0f, 0.052f);
            Vector2 vector2 = m_size.Value / 2f - vector;

            vector2.X -= MARGIN_RIGHT + 0.005f;
            vector2.Y -= MARGIN_BOTTOM;
            Vector2 vector3 = vector2 * (m_isNewGame ? 0.339f : 0.329f);
            Vector2 vector4 = vector2 - vector3;

            m_enablePluginLabel = new MyGuiControlLabel(null, null, "Enable SEWorldGenPlugin");

            m_enablePlugin = new MyGuiControlCheckbox();
            m_enablePlugin.SetToolTip("Enable the SEWorldGenPlugin for this world");
            m_enablePlugin.IsCheckedChanged = (Action <MyGuiControlCheckbox>) Delegate.Combine(m_enablePlugin.IsCheckedChanged, (Action <MyGuiControlCheckbox>) delegate(MyGuiControlCheckbox s)
            {
                if (PlSettings != null)
                {
                    PlSettings.Enabled             = s.IsChecked;
                    m_pluginSettingsButton.Enabled = m_enablePlugin.IsChecked;
                }
            });

            m_enablePlugin.IsChecked = false;

            m_pluginSettingsButton = new MyGuiControlButton(null, MyGuiControlButtonStyleEnum.Small, null, null, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, null, new StringBuilder("Plugin settings"), 0.8f, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, MyGuiControlHighlightType.WHEN_ACTIVE, OnSettingsClick);
            Controls.Add(m_enablePluginLabel);
            Controls.Add(m_enablePlugin);
            Controls.Add(m_pluginSettingsButton);

            m_enablePluginLabel.Position       = vector + value * 5;
            m_enablePluginLabel.PositionY     += MyGuiConstants.BACK_BUTTON_SIZE.Y * 2;
            m_pluginSettingsButton.Enabled     = m_enablePlugin.IsChecked;
            m_enablePlugin.Position            = GetControlPosition();
            m_enablePlugin.PositionY           = m_enablePluginLabel.PositionY;
            m_enablePlugin.OriginAlign         = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            m_pluginSettingsButton.Position    = m_enablePlugin.Position;
            m_pluginSettingsButton.PositionX  += m_enablePlugin.Size.X + 0.009f;
            m_pluginSettingsButton.OriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER;
            foreach (var c in Controls)
            {
                if (c is MyGuiControlButton)
                {
                    MyGuiControlButton b = (MyGuiControlButton)c;
                    if (b.Text == MyTexts.GetString(MyCommonTexts.Start) || b.Text == MyTexts.GetString(MyCommonTexts.Ok))
                    {
                        if (!m_enablePlugin.IsChecked)
                        {
                            PlSettings         = new MyObjectBuilder_WorldSettings();
                            PlSettings.Enabled = m_enablePlugin.IsChecked;
                        }

                        if (m_isNewGame)
                        {
                            b.ButtonClicked += delegate
                            {
                                MySettings.Static.SessionSettings = PlSettings;
                                MyPluginLog.Log("Settings: " + PlSettings.ToString());
                            };
                        }
                        else
                        {
                            b.ButtonClicked += delegate
                            {
                                var name = Checkpoint.SessionName;
                                var path = Path.Combine(MyFileSystem.SavesPath, name.Replace(":", "-"));
                                MyFileUtils.WriteXmlFileToPath(PlSettings, path, MySettingsSession.FILE_NAME, typeof(PluginWorldSettings));
                            };
                        }
                    }
                }
            }

            if (m_isNewGame)
            {
                PlSettings = new MyObjectBuilder_WorldSettings();
            }
            else
            {
                LoadValues();
            }
        }