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