diff --git a/lib/INIFileParser.dll b/lib/INIFileParser.dll new file mode 100644 index 0000000..d19e920 Binary files /dev/null and b/lib/INIFileParser.dll differ diff --git a/resources/Older Unity bundle/THIS BUNDLE IS FOR UNITY 5.6.1 AND OLDER.txt b/resources/Older Unity bundle/THIS BUNDLE IS FOR UNITY 5.6.1 AND OLDER.txt new file mode 100644 index 0000000..e69de29 diff --git a/resources/Older Unity bundle/explorerui.bundle b/resources/Older Unity bundle/explorerui.bundle new file mode 100644 index 0000000..28c04c7 Binary files /dev/null and b/resources/Older Unity bundle/explorerui.bundle differ diff --git a/resources/explorerui.bundle b/resources/explorerui.bundle index c6acc12..28c04c7 100644 Binary files a/resources/explorerui.bundle and b/resources/explorerui.bundle differ diff --git a/src/Config/ModConfig.cs b/src/Config/ModConfig.cs index 959fa1e..05ee6a0 100644 --- a/src/Config/ModConfig.cs +++ b/src/Config/ModConfig.cs @@ -1,18 +1,22 @@ using System; using System.IO; -using System.Xml.Serialization; using UnityEngine; +using IniParser; +using IniParser.Parser; namespace UnityExplorer.Config { public class ModConfig { - [XmlIgnore] public static readonly XmlSerializer Serializer = new XmlSerializer(typeof(ModConfig)); + public static ModConfig Instance; - //[XmlIgnore] private const string EXPLORER_FOLDER = @"Mods\UnityExplorer"; - [XmlIgnore] private const string SETTINGS_PATH = ExplorerCore.EXPLORER_FOLDER + @"\config.xml"; + internal static readonly IniDataParser _parser = new IniDataParser(); + internal const string INI_PATH = ExplorerCore.EXPLORER_FOLDER + @"\config.ini"; - [XmlIgnore] public static ModConfig Instance; + static ModConfig() + { + _parser.Configuration.CommentString = "#"; + } // Actual configs public KeyCode Main_Menu_Toggle = KeyCode.F7; @@ -31,38 +35,66 @@ namespace UnityExplorer.Config public static void OnLoad() { + Instance = new ModConfig(); + if (LoadSettings()) return; - Instance = new ModConfig(); SaveSettings(); } public static bool LoadSettings() { - if (!File.Exists(SETTINGS_PATH)) + if (!File.Exists(INI_PATH)) return false; - try + string ini = File.ReadAllText(INI_PATH); + + var data = _parser.Parse(ini); + + foreach (var config in data.Sections["Config"]) { - using (var file = File.OpenRead(SETTINGS_PATH)) - Instance = (ModConfig)Serializer.Deserialize(file); - } - catch - { - return false; + switch (config.KeyName) + { + case "Main_Menu_Toggle": + Instance.Main_Menu_Toggle = (KeyCode)Enum.Parse(typeof(KeyCode), config.Value); + break; + case "Force_Unlock_Mouse": + Instance.Force_Unlock_Mouse = bool.Parse(config.Value); + break; + case "Default_Page_Limit": + Instance.Default_Page_Limit = int.Parse(config.Value); + break; + case "Log_Unity_Debug": + Instance.Log_Unity_Debug = bool.Parse(config.Value); + break; + case "Save_Logs_To_Disk": + Instance.Save_Logs_To_Disk = bool.Parse(config.Value); + break; + case "Default_Output_Path": + Instance.Default_Output_Path = config.Value; + break; + } } - return Instance != null; + return true; } public static void SaveSettings() { - if (File.Exists(SETTINGS_PATH)) - File.Delete(SETTINGS_PATH); + var data = new IniParser.Model.IniData(); - using (var file = File.Create(SETTINGS_PATH)) - Serializer.Serialize(file, Instance); + data.Sections.AddSection("Config"); + + var sec = data.Sections["Config"]; + sec.AddKey("Main_Menu_Toggle", Instance.Main_Menu_Toggle.ToString()); + sec.AddKey("Force_Unlock_Mouse", Instance.Force_Unlock_Mouse.ToString()); + sec.AddKey("Default_Page_Limit", Instance.Default_Page_Limit.ToString()); + sec.AddKey("Log_Unity_Debug", Instance.Log_Unity_Debug.ToString()); + sec.AddKey("Save_Logs_To_Disk", Instance.Save_Logs_To_Disk.ToString()); + sec.AddKey("Default_Output_Path", Instance.Default_Output_Path); + + File.WriteAllText(INI_PATH, data.ToString()); } } } diff --git a/src/ILRepack.targets b/src/ILRepack.targets index f2ba0df..8c17eca 100644 --- a/src/ILRepack.targets +++ b/src/ILRepack.targets @@ -5,6 +5,7 @@ + ("DefaultUI"); + // Fix for games which don't ship with 'UI/Default' shader. if (Graphic.defaultGraphicMaterial.shader?.name != "UI/Default") { ExplorerCore.Log("This game does not ship with the 'UI/Default' shader, using manual Default Shader..."); - Graphic.defaultGraphicMaterial.shader = bundle.LoadAsset("DefaultUI"); + Graphic.defaultGraphicMaterial.shader = BackupShader; } ResizeCursor = bundle.LoadAsset("cursor"); diff --git a/src/UnityExplorer.csproj b/src/UnityExplorer.csproj index 29e0bb6..22569e6 100644 --- a/src/UnityExplorer.csproj +++ b/src/UnityExplorer.csproj @@ -24,13 +24,10 @@ x64 false UnityExplorer - D:\source\Unity Projects\Test\_BUILD - D:\source\Unity Projects\Test\_BUILD - @@ -72,6 +69,10 @@ true + + packages\ini-parser.2.5.2\lib\net20\INIFileParser.dll + False + diff --git a/src/packages.config b/src/packages.config index 8bea2b6..b405669 100644 --- a/src/packages.config +++ b/src/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file