diff --git a/Galactic Colors Control Console/Config.cs b/Galactic Colors Control Console/Config.cs index 8f36539..ad6f52a 100644 --- a/Galactic Colors Control Console/Config.cs +++ b/Galactic Colors Control Console/Config.cs @@ -16,102 +16,15 @@ namespace Galactic_Colors_Control_Console public ConsoleColor[] logBackColor = new ConsoleColor[6] { ConsoleColor.Black, ConsoleColor.Black, ConsoleColor.Black, ConsoleColor.Black, ConsoleColor.Black, ConsoleColor.Red }; public int lang = 1; - /// - /// Load config from xml file - /// App.config is too easy - /// - /// Loaded config - public Config Load() + public void PreSave() { - Console.logger.Write("Loading config", Logger.logType.info); - Config config = new Config(); - if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - if (CorrectConfig()) - { - XmlSerializer xs = new XmlSerializer(typeof(Config)); - using (StreamReader re = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - config = xs.Deserialize(re) as Config; - }; - } - else - { - Console.logger.Write("Old config in Config.xml.old", Logger.logType.warm); - File.Delete(AppDomain.CurrentDomain.BaseDirectory + "Config.xml.old"); - File.Move(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", AppDomain.CurrentDomain.BaseDirectory + "Config.xml.old"); - config.Save(); - } - } - else - { - Console.logger.Write("Any config file", Logger.logType.error); - config.Save(); - } - if (Console._debug) { config.logLevel = Logger.logType.debug; } - if (Console._dev) { config.logLevel = Logger.logType.dev; } - return config; + if (Console._debug || Console._dev) { logLevel = Logger.logType.info; } } - /// - /// Write actual config in xml file - /// - public void Save() + public void PostSave() { - XmlSerializer xs = new XmlSerializer(typeof(Config)); - if (Console._debug || Console._dev) { logLevel = Logger.logType.info; } - using (StreamWriter st = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - xs.Serialize(st, this); - }; if (Console._debug) { logLevel = Logger.logType.debug; } if (Console._dev) { logLevel = Logger.logType.dev; } } - - /// - /// Check config format using Schema - /// - public bool CorrectConfig() - { - bool isCorrect = false; - - using (Stream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", FileMode.Open)) - { - XmlReader re = new XmlTextReader(fs); - XmlSerializer xs = new XmlSerializer(typeof(Config)); - try - { - isCorrect = xs.CanDeserialize(re); - } - catch (XmlException e) - { - isCorrect = false; - Console.logger.Write("Error: " + e.Message, Logger.logType.error); - } - } - - if (isCorrect) - { - try - { - XmlDocument d = new XmlDocument(); - d.Load(AppDomain.CurrentDomain.BaseDirectory + "Config.xml"); - d.Schemas.Add("", XmlReader.Create("ConfigSchema.xsd")); - - d.Validate((o, e) => - { - Console.logger.Write("Error: " + e.Message, Logger.logType.error); - isCorrect = false; - }); - } - catch (XmlException e) - { - isCorrect = false; - Console.logger.Write("Error: " + e.Message, Logger.logType.error); - } - } - - return isCorrect; - } } } \ No newline at end of file diff --git a/Galactic Colors Control Console/Program.cs b/Galactic Colors Control Console/Program.cs index 1e21b0b..21b425b 100644 --- a/Galactic Colors Control Console/Program.cs +++ b/Galactic Colors Control Console/Program.cs @@ -2,8 +2,10 @@ using Galactic_Colors_Control_Common; using Galactic_Colors_Control_Common.Protocol; using MyCommon; +using System; using System.Reflection; using System.Threading; +using System.Xml; using Consol = MyCommon.ConsoleIO; namespace Galactic_Colors_Control_Console @@ -28,7 +30,8 @@ namespace Galactic_Colors_Control_Console System.Console.Write(">"); logger.Write(System.Console.Title, Logger.logType.fatal); logger.Write("Console " + Assembly.GetEntryAssembly().GetName().Version.ToString(), Logger.logType.error); - config = config.Load(); + config = XmlManager.Load(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", XmlManager.LoadMode.ReadCreateOrReplace, XmlReader.Create("ConfigSchema.xsd"), logger); + config.PostSave(); logger.Initialise(config.logPath, config.logBackColor, config.logForeColor, config.logLevel, _debug, _dev); multilang.Initialise(Common.dictionary); client.OnEvent += new System.EventHandler(OnEvent); //Set OnEvent function @@ -172,6 +175,9 @@ namespace Galactic_Colors_Control_Console Consol.Write(new ColorStrings(new ColorString(multilang.GetWord("CantConnect", config.lang), System.ConsoleColor.Red))); } run = false; + config.PreSave(); + XmlManager.Save(config, AppDomain.CurrentDomain.BaseDirectory + "Config.xml", logger); + config.PostSave(); logger.Join(); System.Console.Read(); } diff --git a/Galactic Colors Control GUI/Config.cs b/Galactic Colors Control GUI/Config.cs index 2aebabb..be2c039 100644 --- a/Galactic Colors Control GUI/Config.cs +++ b/Galactic Colors Control GUI/Config.cs @@ -17,102 +17,15 @@ namespace Galactic_Colors_Control_GUI public int lang = 1; public string skin = "default"; - /// - /// Load config from xml file - /// App.config is too easy - /// - /// Loaded config - public Config Load() + public void PreSave() { - Game.singleton.logger.Write("Loading config", Logger.logType.info); - Config config = new Config(); - if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - if (CorrectConfig()) - { - XmlSerializer xs = new XmlSerializer(typeof(Config)); - using (StreamReader re = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - config = xs.Deserialize(re) as Config; - }; - } - else - { - Game.singleton.logger.Write("Old config in Config.xml.old", Logger.logType.warm); - File.Delete(AppDomain.CurrentDomain.BaseDirectory + "Config.xml.old"); - File.Move(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", AppDomain.CurrentDomain.BaseDirectory + "Config.xml.old"); - config.Save(); - } - } - else - { - Game.singleton.logger.Write("Any config file", Logger.logType.error); - config.Save(); - } - if (Program._debug) { config.logLevel = Logger.logType.debug; } - if (Program._dev) { config.logLevel = Logger.logType.dev; } - return config; + if (Program._debug || Program._dev) { logLevel = Logger.logType.info; } } - /// - /// Write actual config in xml file - /// - public void Save() + public void PostSave() { - XmlSerializer xs = new XmlSerializer(typeof(Config)); - if (Program._debug || Program._dev) { logLevel = Logger.logType.info; } - using (StreamWriter st = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - xs.Serialize(st, this); - }; if (Program._debug) { logLevel = Logger.logType.debug; } if (Program._dev) { logLevel = Logger.logType.dev; } } - - /// - /// Check config format using Schema - /// - public bool CorrectConfig() - { - bool isCorrect = false; - - using (Stream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", FileMode.Open)) - { - XmlReader re = new XmlTextReader(fs); - XmlSerializer xs = new XmlSerializer(typeof(Config)); - try - { - isCorrect = xs.CanDeserialize(re); - } - catch (XmlException e) - { - isCorrect = false; - Game.singleton.logger.Write("Error: " + e.Message, Logger.logType.error); - } - } - - if (isCorrect) - { - try - { - XmlDocument d = new XmlDocument(); - d.Load(AppDomain.CurrentDomain.BaseDirectory + "Config.xml"); - d.Schemas.Add("", XmlReader.Create("ConfigSchema.xsd")); - - d.Validate((o, e) => - { - Game.singleton.logger.Write("Error: " + e.Message, Logger.logType.error); - isCorrect = false; - }); - } - catch (XmlException e) - { - isCorrect = false; - Game.singleton.logger.Write("Error: " + e.Message, Logger.logType.error); - } - } - - return isCorrect; - } } } \ No newline at end of file diff --git a/Galactic Colors Control GUI/Game.cs b/Galactic Colors Control GUI/Game.cs index de5a95c..7d9deff 100644 --- a/Galactic Colors Control GUI/Game.cs +++ b/Galactic Colors Control GUI/Game.cs @@ -9,6 +9,7 @@ using MyMonoGame.GUI; using System; using System.IO; using System.Reflection; +using System.Xml; namespace Galactic_Colors_Control_GUI { @@ -66,7 +67,8 @@ namespace Galactic_Colors_Control_GUI /// protected override void Initialize() { - config = config.Load(); + config = XmlManager.Load(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", XmlManager.LoadMode.ReadCreateOrReplace, XmlReader.Create("ConfigSchema.xsd"), logger); + config.PostSave(); logger.Write("Galactic Colors Control GUI " + Assembly.GetEntryAssembly().GetName().Version.ToString(), Logger.logType.fatal); logger.Initialise(config.logPath, config.logBackColor, config.logForeColor, config.logLevel, Program._debug, Program._dev, false); multilang.Initialise(Common.dictionary); diff --git a/Galactic Colors Control GUI/States/OptionsState.cs b/Galactic Colors Control GUI/States/OptionsState.cs index 2b21d9f..ccefe68 100644 --- a/Galactic Colors Control GUI/States/OptionsState.cs +++ b/Galactic Colors Control GUI/States/OptionsState.cs @@ -2,6 +2,8 @@ using Microsoft.Xna.Framework.Graphics; using MyMonoGame.GUI; using System.Threading; +using MyCommon; +using System; namespace Galactic_Colors_Control_GUI.States { @@ -24,7 +26,9 @@ namespace Galactic_Colors_Control_GUI.States { locked = true; Game.singleton.GUI.ResetFocus(); - Game.singleton.config.Save(); + Game.singleton.config.PreSave(); + XmlManager.Save(Game.singleton.config, AppDomain.CurrentDomain.BaseDirectory + "Config.xml", Game.singleton.logger); + Game.singleton.config.PostSave(); new Thread(() => { while (!Utilities.DoubleTo(ref Game.singleton.background.speedX, 1, 0.1)) { Thread.Sleep(20); } diff --git a/Galactic Colors Control Server/Config.cs b/Galactic Colors Control Server/Config.cs index de77e8d..fc39307 100644 --- a/Galactic Colors Control Server/Config.cs +++ b/Galactic Colors Control Server/Config.cs @@ -1,7 +1,5 @@ using MyCommon; using System; -using System.IO; -using System.Xml; using System.Xml.Serialization; namespace Galactic_Colors_Control_Server @@ -18,102 +16,15 @@ namespace Galactic_Colors_Control_Server public int lang = 1; public int partysize = 10; - /// - /// Load config from xml file - /// App.config is too easy - /// - /// Loaded config - public Config Load() + public void PreSave() { - Server.logger.Write("Loading config", Logger.logType.info); - Config config = new Config(); - if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - if (CorrectConfig()) - { - XmlSerializer xs = new XmlSerializer(typeof(Config)); - using (StreamReader re = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - config = xs.Deserialize(re) as Config; - }; - } - else - { - Server.logger.Write("Old config in Config.xml.old", Logger.logType.warm); - File.Delete(AppDomain.CurrentDomain.BaseDirectory + "Config.xml.old"); - File.Move(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", AppDomain.CurrentDomain.BaseDirectory + "Config.xml.old"); - config.Save(); - } - } - else - { - Server.logger.Write("Any config file", Logger.logType.error); - config.Save(); - } - if (Server._debug) { config.logLevel = Logger.logType.debug; } - if (Server._dev) { config.logLevel = Logger.logType.dev; } - return config; + if (Server._debug || Server._dev) { logLevel = Logger.logType.info; } } - /// - /// Write actual config in xml file - /// - public void Save() + public void PostSave() { - XmlSerializer xs = new XmlSerializer(typeof(Config)); - if (Server._debug || Server._dev) { logLevel = Logger.logType.info; } - using (StreamWriter st = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "Config.xml")) - { - xs.Serialize(st, this); - }; if (Server._debug) { logLevel = Logger.logType.debug; } if (Server._dev) { logLevel = Logger.logType.dev; } } - - /// - /// Check config format using Schema - /// - public bool CorrectConfig() - { - bool isCorrect = false; - - using (Stream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", FileMode.Open)) - { - XmlReader re = new XmlTextReader(fs); - XmlSerializer xs = new XmlSerializer(typeof(Config)); - try - { - isCorrect = xs.CanDeserialize(re); - } - catch (XmlException e) - { - isCorrect = false; - Server.logger.Write("Error: " + e.Message, Logger.logType.error); - } - } - - if (isCorrect) - { - try - { - XmlDocument d = new XmlDocument(); - d.Load(AppDomain.CurrentDomain.BaseDirectory + "Config.xml"); - d.Schemas.Add("", XmlReader.Create("ConfigSchema.xsd")); - - d.Validate((o, e) => - { - Server.logger.Write("Error: " + e.Message, Logger.logType.error); - isCorrect = false; - }); - } - catch (XmlException e) - { - isCorrect = false; - Server.logger.Write("Error: " + e.Message, Logger.logType.error); - } - } - - return isCorrect; - } } } \ No newline at end of file diff --git a/Galactic Colors Control Server/Program.cs b/Galactic Colors Control Server/Program.cs index b1868f7..5d41dc0 100644 --- a/Galactic Colors Control Server/Program.cs +++ b/Galactic Colors Control Server/Program.cs @@ -8,6 +8,7 @@ using System.Net; using System.Net.Sockets; using System.Reflection; using System.Threading; +using System.Xml; using Console = MyCommon.ConsoleIO; //TODO gui parties pages @@ -49,7 +50,8 @@ namespace Galactic_Colors_Control_Server { Console.Title = "Galactic Colors Control Server"; logger.Write(Console.Title + " " + Assembly.GetEntryAssembly().GetName().Version.ToString(), Logger.logType.fatal); - config = config.Load(); + config = XmlManager.Load(AppDomain.CurrentDomain.BaseDirectory + "Config.xml", XmlManager.LoadMode.ReadCreateOrReplace, XmlReader.Create("ConfigSchema.xsd"), logger); + config.PostSave(); logger.Initialise(config.logPath, config.logBackColor, config.logForeColor, config.logLevel, _debug, _dev); multilang.Initialise(Common.dictionary); if (args.Length > 0) @@ -114,7 +116,9 @@ namespace Galactic_Colors_Control_Server { logger.Write("Stoping server", Logger.logType.warm, Logger.logConsole.show); Utilities.Broadcast(new EventData(EventTypes.ServerKick, Strings.ArrayFromStrings("Close"))); - config.Save(); + config.PreSave(); + XmlManager.Save(config, AppDomain.CurrentDomain.BaseDirectory + "Config.xml", logger); + config.PostSave(); foreach (Socket socket in clients.Keys) { socket.Shutdown(SocketShutdown.Both);