2020-11-08 21:04:41 +11:00
|
|
|
|
using System;
|
|
|
|
|
using System.IO;
|
2020-09-10 20:31:09 +10:00
|
|
|
|
using UnityEngine;
|
2020-11-25 16:40:36 +11:00
|
|
|
|
using IniParser;
|
|
|
|
|
using IniParser.Parser;
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-11-03 20:59:13 +11:00
|
|
|
|
namespace UnityExplorer.Config
|
2020-09-10 20:31:09 +10:00
|
|
|
|
{
|
|
|
|
|
public class ModConfig
|
|
|
|
|
{
|
2020-11-25 16:40:36 +11:00
|
|
|
|
public static ModConfig Instance;
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-11-25 16:40:36 +11:00
|
|
|
|
internal static readonly IniDataParser _parser = new IniDataParser();
|
|
|
|
|
internal const string INI_PATH = ExplorerCore.EXPLORER_FOLDER + @"\config.ini";
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-11-25 16:40:36 +11:00
|
|
|
|
static ModConfig()
|
|
|
|
|
{
|
|
|
|
|
_parser.Configuration.CommentString = "#";
|
|
|
|
|
}
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-10-08 06:15:42 +11:00
|
|
|
|
// Actual configs
|
2020-11-08 21:04:41 +11:00
|
|
|
|
public KeyCode Main_Menu_Toggle = KeyCode.F7;
|
|
|
|
|
public bool Force_Unlock_Mouse = true;
|
2020-11-12 16:15:41 +11:00
|
|
|
|
public int Default_Page_Limit = 25;
|
2020-11-08 21:04:41 +11:00
|
|
|
|
public string Default_Output_Path = ExplorerCore.EXPLORER_FOLDER;
|
|
|
|
|
public bool Log_Unity_Debug = false;
|
2020-11-12 20:31:08 +11:00
|
|
|
|
public bool Save_Logs_To_Disk = true;
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-11-08 21:04:41 +11:00
|
|
|
|
public static event Action OnConfigChanged;
|
|
|
|
|
|
|
|
|
|
internal static void InvokeConfigChanged()
|
2020-09-10 20:31:09 +10:00
|
|
|
|
{
|
2020-11-08 21:04:41 +11:00
|
|
|
|
OnConfigChanged?.Invoke();
|
|
|
|
|
}
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-11-08 21:04:41 +11:00
|
|
|
|
public static void OnLoad()
|
|
|
|
|
{
|
2020-11-25 16:40:36 +11:00
|
|
|
|
Instance = new ModConfig();
|
|
|
|
|
|
2020-10-28 06:39:26 +11:00
|
|
|
|
if (LoadSettings())
|
|
|
|
|
return;
|
2020-09-11 00:17:13 +10:00
|
|
|
|
|
|
|
|
|
SaveSettings();
|
2020-09-10 20:31:09 +10:00
|
|
|
|
}
|
|
|
|
|
|
2020-10-01 18:57:28 +10:00
|
|
|
|
public static bool LoadSettings()
|
2020-09-10 20:31:09 +10:00
|
|
|
|
{
|
2020-11-25 16:40:36 +11:00
|
|
|
|
if (!File.Exists(INI_PATH))
|
2020-09-11 00:17:13 +10:00
|
|
|
|
return false;
|
|
|
|
|
|
2020-11-25 16:40:36 +11:00
|
|
|
|
string ini = File.ReadAllText(INI_PATH);
|
|
|
|
|
|
|
|
|
|
var data = _parser.Parse(ini);
|
|
|
|
|
|
|
|
|
|
foreach (var config in data.Sections["Config"])
|
2020-09-11 00:17:13 +10:00
|
|
|
|
{
|
2020-11-25 16:40:36 +11:00
|
|
|
|
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;
|
|
|
|
|
}
|
2020-09-11 00:17:13 +10:00
|
|
|
|
}
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-11-25 16:40:36 +11:00
|
|
|
|
return true;
|
2020-09-10 20:31:09 +10:00
|
|
|
|
}
|
|
|
|
|
|
2020-10-01 18:57:28 +10:00
|
|
|
|
public static void SaveSettings()
|
2020-09-10 20:31:09 +10:00
|
|
|
|
{
|
2020-11-25 16:40:36 +11:00
|
|
|
|
var data = new IniParser.Model.IniData();
|
|
|
|
|
|
|
|
|
|
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);
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-11-25 16:40:36 +11:00
|
|
|
|
File.WriteAllText(INI_PATH, data.ToString());
|
2020-09-10 20:31:09 +10:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|