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
|
|
|
|
{
|
2021-03-11 17:57:58 +11:00
|
|
|
|
public class ExplorerConfig
|
2020-09-10 20:31:09 +10:00
|
|
|
|
{
|
2021-03-11 17:57:58 +11:00
|
|
|
|
public static ExplorerConfig Instance;
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2020-11-25 16:40:36 +11:00
|
|
|
|
internal static readonly IniDataParser _parser = new IniDataParser();
|
2021-03-11 17:57:58 +11:00
|
|
|
|
internal static readonly string INI_PATH = Path.Combine(ExplorerCore.Loader.ConfigFolder, "config.ini");
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2021-03-11 17:57:58 +11:00
|
|
|
|
static ExplorerConfig()
|
2020-11-25 16:40:36 +11:00
|
|
|
|
{
|
|
|
|
|
_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;
|
2021-03-11 17:57:58 +11:00
|
|
|
|
public string Default_Output_Path = ExplorerCore.ExplorerFolder + @"\Output";
|
2020-11-08 21:04:41 +11:00
|
|
|
|
public bool Log_Unity_Debug = false;
|
2021-02-27 17:04:47 +11:00
|
|
|
|
public bool Hide_On_Startup = false;
|
|
|
|
|
//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()
|
|
|
|
|
{
|
2021-03-11 17:57:58 +11:00
|
|
|
|
Instance = new ExplorerConfig();
|
2020-11-25 16:40:36 +11:00
|
|
|
|
|
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)
|
|
|
|
|
{
|
2021-02-27 17:04:47 +11:00
|
|
|
|
case nameof(Main_Menu_Toggle):
|
2020-11-25 16:40:36 +11:00
|
|
|
|
Instance.Main_Menu_Toggle = (KeyCode)Enum.Parse(typeof(KeyCode), config.Value);
|
|
|
|
|
break;
|
2021-02-27 17:04:47 +11:00
|
|
|
|
case nameof(Force_Unlock_Mouse):
|
2020-11-25 16:40:36 +11:00
|
|
|
|
Instance.Force_Unlock_Mouse = bool.Parse(config.Value);
|
|
|
|
|
break;
|
2021-02-27 17:04:47 +11:00
|
|
|
|
case nameof(Default_Page_Limit):
|
2020-11-25 16:40:36 +11:00
|
|
|
|
Instance.Default_Page_Limit = int.Parse(config.Value);
|
|
|
|
|
break;
|
2021-02-27 17:04:47 +11:00
|
|
|
|
case nameof(Log_Unity_Debug):
|
2020-11-25 16:40:36 +11:00
|
|
|
|
Instance.Log_Unity_Debug = bool.Parse(config.Value);
|
|
|
|
|
break;
|
2021-02-27 17:04:47 +11:00
|
|
|
|
case nameof(Default_Output_Path):
|
2020-11-25 16:40:36 +11:00
|
|
|
|
Instance.Default_Output_Path = config.Value;
|
|
|
|
|
break;
|
2021-02-27 17:04:47 +11:00
|
|
|
|
case nameof(Hide_On_Startup):
|
|
|
|
|
Instance.Hide_On_Startup = bool.Parse(config.Value);
|
|
|
|
|
break;
|
|
|
|
|
//case nameof(Save_Logs_To_Disk):
|
|
|
|
|
// Instance.Save_Logs_To_Disk = bool.Parse(config.Value);
|
|
|
|
|
// break;
|
2020-11-25 16:40:36 +11:00
|
|
|
|
}
|
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"];
|
2021-02-27 17:04:47 +11:00
|
|
|
|
sec.AddKey(nameof(Main_Menu_Toggle), Instance.Main_Menu_Toggle.ToString());
|
|
|
|
|
sec.AddKey(nameof(Force_Unlock_Mouse), Instance.Force_Unlock_Mouse.ToString());
|
|
|
|
|
sec.AddKey(nameof(Default_Page_Limit), Instance.Default_Page_Limit.ToString());
|
|
|
|
|
sec.AddKey(nameof(Log_Unity_Debug), Instance.Log_Unity_Debug.ToString());
|
|
|
|
|
sec.AddKey(nameof(Default_Output_Path), Instance.Default_Output_Path);
|
|
|
|
|
sec.AddKey(nameof(Hide_On_Startup), Instance.Hide_On_Startup.ToString());
|
|
|
|
|
//sec.AddKey("Save_Logs_To_Disk", Instance.Save_Logs_To_Disk.ToString());
|
2020-09-10 20:31:09 +10:00
|
|
|
|
|
2021-03-11 17:57:58 +11:00
|
|
|
|
if (!Directory.Exists(ExplorerCore.Loader.ConfigFolder))
|
|
|
|
|
Directory.CreateDirectory(ExplorerCore.Loader.ConfigFolder);
|
|
|
|
|
|
2020-11-25 16:40:36 +11:00
|
|
|
|
File.WriteAllText(INI_PATH, data.ToString());
|
2020-09-10 20:31:09 +10:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|