From 7efde4fc5a58bf78130d670de9c359dd538d211f Mon Sep 17 00:00:00 2001 From: Anairkoen Schno Date: Fri, 3 Jan 2020 00:25:52 -0600 Subject: [PATCH] Fixed #31 --- IPA.Loader/Config/ModPrefs.cs | 532 +++++++++++++++++----------------- 1 file changed, 266 insertions(+), 266 deletions(-) diff --git a/IPA.Loader/Config/ModPrefs.cs b/IPA.Loader/Config/ModPrefs.cs index a719db6b..b9635c30 100644 --- a/IPA.Loader/Config/ModPrefs.cs +++ b/IPA.Loader/Config/ModPrefs.cs @@ -1,266 +1,266 @@ -using System; -using System.Globalization; -using System.IO; -using IPA.Loader; -#if NET3 -using Path = Net3_Proxy.Path; -#endif - -namespace IPA.Config -{ - /// - /// Allows to get and set preferences for your mod. - /// - [Obsolete("Uses IniFile, which uses 16 bit system calls. Use BS Utils INI system for now.")] - public interface IModPrefs - { - /// - /// Gets a string from the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be used when no value is found. - /// Whether or not the default value should be written if no value is found. - /// - string GetString(string section, string name, string defaultValue = "", bool autoSave = false); - /// - /// Gets an int from the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be used when no value is found. - /// Whether or not the default value should be written if no value is found. - /// - int GetInt(string section, string name, int defaultValue = 0, bool autoSave = false); - /// - /// Gets a float from the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be used when no value is found. - /// Whether or not the default value should be written if no value is found. - /// - float GetFloat(string section, string name, float defaultValue = 0f, bool autoSave = false); - /// - /// Gets a bool from the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be used when no value is found. - /// Whether or not the default value should be written if no value is found. - /// - bool GetBool(string section, string name, bool defaultValue = false, bool autoSave = false); - /// - /// Checks whether or not a key exists in the ini. - /// - /// Section of the key. - /// Name of the key. - /// - bool HasKey(string section, string name); - /// - /// Sets a float in the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be written. - void SetFloat(string section, string name, float value); - /// - /// Sets an int in the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be written. - void SetInt(string section, string name, int value); - /// - /// Sets a string in the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be written. - void SetString(string section, string name, string value); - /// - /// Sets a bool in the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be written. - void SetBool(string section, string name, bool value); - } - - /// - /// - /// Allows to get and set preferences for your mod. - /// - [Obsolete("Uses IniFile, which uses 16 bit system calls. Use BS Utils INI system for now.")] - public class ModPrefs : IModPrefs - { - private static ModPrefs _staticInstance; - private static IModPrefs StaticInstance => _staticInstance ?? (_staticInstance = new ModPrefs()); - - private readonly IniFile _instance; - - /// - /// Constructs a ModPrefs object for the provide plugin. - /// - /// the plugin to get the preferences file for - public ModPrefs(PluginLoader.PluginMetadata plugin) { - _instance = new IniFile(Path.Combine(Environment.CurrentDirectory, "UserData", "ModPrefs", - $"{plugin.Name}.ini")); - } - - private ModPrefs() - { - _instance = new IniFile(Path.Combine(Environment.CurrentDirectory, "UserData", "modprefs.ini")); - } - - string IModPrefs.GetString(string section, string name, string defaultValue, bool autoSave) - { - var value = _instance.IniReadValue(section, name); - if (value != "") - return value; - else if (autoSave) - (this as IModPrefs).SetString(section, name, defaultValue); - - return defaultValue; - } - /// - /// Gets a string from the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be used when no value is found. - /// Whether or not the default value should be written if no value is found. - /// - public static string GetString(string section, string name, string defaultValue = "", bool autoSave = false) - => StaticInstance.GetString(section, name, defaultValue, autoSave); - - int IModPrefs.GetInt(string section, string name, int defaultValue, bool autoSave) - { - if (int.TryParse(_instance.IniReadValue(section, name), out var value)) - return value; - else if (autoSave) - (this as IModPrefs).SetInt(section, name, defaultValue); - - return defaultValue; - } - /// - /// Gets an int from the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be used when no value is found. - /// Whether or not the default value should be written if no value is found. - /// - public static int GetInt(string section, string name, int defaultValue = 0, bool autoSave = false) - => StaticInstance.GetInt(section, name, defaultValue, autoSave); - - float IModPrefs.GetFloat(string section, string name, float defaultValue, bool autoSave) - { - if (float.TryParse(_instance.IniReadValue(section, name), out var value)) - return value; - else if (autoSave) - (this as IModPrefs).SetFloat(section, name, defaultValue); - - return defaultValue; - } - /// - /// Gets a float from the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be used when no value is found. - /// Whether or not the default value should be written if no value is found. - /// - public static float GetFloat(string section, string name, float defaultValue = 0f, bool autoSave = false) - => StaticInstance.GetFloat(section, name, defaultValue, autoSave); - - bool IModPrefs.GetBool(string section, string name, bool defaultValue, bool autoSave) - { - string sVal = GetString(section, name, null); - if (sVal == "1" || sVal == "0") - { - return sVal == "1"; - } - else if (autoSave) - { - (this as IModPrefs).SetBool(section, name, defaultValue); - } - - return defaultValue; - } - /// - /// Gets a bool from the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be used when no value is found. - /// Whether or not the default value should be written if no value is found. - /// - public static bool GetBool(string section, string name, bool defaultValue = false, bool autoSave = false) - => StaticInstance.GetBool(section, name, defaultValue, autoSave); - - bool IModPrefs.HasKey(string section, string name) - { - return _instance.IniReadValue(section, name) != null; - } - /// - /// Checks whether or not a key exists in the ini. - /// - /// Section of the key. - /// Name of the key. - /// - public static bool HasKey(string section, string name) => StaticInstance.HasKey(section, name); - - void IModPrefs.SetFloat(string section, string name, float value) - { - _instance.IniWriteValue(section, name, value.ToString(CultureInfo.InvariantCulture)); - } - /// - /// Sets a float in the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be written. - public static void SetFloat(string section, string name, float value) - => StaticInstance.SetFloat(section, name, value); - - void IModPrefs.SetInt(string section, string name, int value) - { - _instance.IniWriteValue(section, name, value.ToString()); - } - /// - /// Sets an int in the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be written. - public static void SetInt(string section, string name, int value) - => StaticInstance.SetInt(section, name, value); - - void IModPrefs.SetString(string section, string name, string value) - { - _instance.IniWriteValue(section, name, value); - } - /// - /// Sets a string in the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be written. - public static void SetString(string section, string name, string value) - => StaticInstance.SetString(section, name, value); - - void IModPrefs.SetBool(string section, string name, bool value) - { - _instance.IniWriteValue(section, name, value ? "1" : "0"); - } - /// - /// Sets a bool in the ini. - /// - /// Section of the key. - /// Name of the key. - /// Value that should be written. - public static void SetBool(string section, string name, bool value) - => StaticInstance.SetBool(section, name, value); - } -} +using System; +using System.Globalization; +using System.IO; +using IPA.Loader; +#if NET3 +using Path = Net3_Proxy.Path; +#endif + +namespace IPA.Config +{ + /// + /// Allows to get and set preferences for your mod. + /// + [Obsolete("Uses IniFile, which uses 16 bit system calls. Use BS Utils INI system for now.")] + public interface IModPrefs + { + /// + /// Gets a string from the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be used when no value is found. + /// Whether or not the default value should be written if no value is found. + /// + string GetString(string section, string name, string defaultValue = "", bool autoSave = false); + /// + /// Gets an int from the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be used when no value is found. + /// Whether or not the default value should be written if no value is found. + /// + int GetInt(string section, string name, int defaultValue = 0, bool autoSave = false); + /// + /// Gets a float from the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be used when no value is found. + /// Whether or not the default value should be written if no value is found. + /// + float GetFloat(string section, string name, float defaultValue = 0f, bool autoSave = false); + /// + /// Gets a bool from the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be used when no value is found. + /// Whether or not the default value should be written if no value is found. + /// + bool GetBool(string section, string name, bool defaultValue = false, bool autoSave = false); + /// + /// Checks whether or not a key exists in the ini. + /// + /// Section of the key. + /// Name of the key. + /// + bool HasKey(string section, string name); + /// + /// Sets a float in the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be written. + void SetFloat(string section, string name, float value); + /// + /// Sets an int in the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be written. + void SetInt(string section, string name, int value); + /// + /// Sets a string in the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be written. + void SetString(string section, string name, string value); + /// + /// Sets a bool in the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be written. + void SetBool(string section, string name, bool value); + } + + /// + /// + /// Allows to get and set preferences for your mod. + /// + [Obsolete("Uses IniFile, which uses 16 bit system calls. Use BS Utils INI system for now.")] + public class ModPrefs : IModPrefs + { + private static ModPrefs _staticInstance; + private static IModPrefs StaticInstance => _staticInstance ?? (_staticInstance = new ModPrefs()); + + private readonly IniFile _instance; + + /// + /// Constructs a ModPrefs object for the provide plugin. + /// + /// the plugin to get the preferences file for + public ModPrefs(PluginLoader.PluginMetadata plugin) { + _instance = new IniFile(Path.Combine(Environment.CurrentDirectory, "UserData", "ModPrefs", + $"{plugin.Name}.ini")); + } + + private ModPrefs() + { + _instance = new IniFile(Path.Combine(Environment.CurrentDirectory, "UserData", "modprefs.ini")); + } + + string IModPrefs.GetString(string section, string name, string defaultValue, bool autoSave) + { + var value = _instance.IniReadValue(section, name); + if (value != "") + return value; + else if (autoSave) + (this as IModPrefs).SetString(section, name, defaultValue); + + return defaultValue; + } + /// + /// Gets a string from the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be used when no value is found. + /// Whether or not the default value should be written if no value is found. + /// + public static string GetString(string section, string name, string defaultValue = "", bool autoSave = false) + => StaticInstance.GetString(section, name, defaultValue, autoSave); + + int IModPrefs.GetInt(string section, string name, int defaultValue, bool autoSave) + { + if (int.TryParse(_instance.IniReadValue(section, name), out var value)) + return value; + else if (autoSave) + (this as IModPrefs).SetInt(section, name, defaultValue); + + return defaultValue; + } + /// + /// Gets an int from the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be used when no value is found. + /// Whether or not the default value should be written if no value is found. + /// + public static int GetInt(string section, string name, int defaultValue = 0, bool autoSave = false) + => StaticInstance.GetInt(section, name, defaultValue, autoSave); + + float IModPrefs.GetFloat(string section, string name, float defaultValue, bool autoSave) + { + if (float.TryParse(_instance.IniReadValue(section, name), out var value)) + return value; + else if (autoSave) + (this as IModPrefs).SetFloat(section, name, defaultValue); + + return defaultValue; + } + /// + /// Gets a float from the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be used when no value is found. + /// Whether or not the default value should be written if no value is found. + /// + public static float GetFloat(string section, string name, float defaultValue = 0f, bool autoSave = false) + => StaticInstance.GetFloat(section, name, defaultValue, autoSave); + + bool IModPrefs.GetBool(string section, string name, bool defaultValue, bool autoSave) + { + string sVal = GetString(section, name, null); + if (sVal == "1" || sVal == "0") + { + return sVal == "1"; + } + else if (autoSave) + { + (this as IModPrefs).SetBool(section, name, defaultValue); + } + + return defaultValue; + } + /// + /// Gets a bool from the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be used when no value is found. + /// Whether or not the default value should be written if no value is found. + /// + public static bool GetBool(string section, string name, bool defaultValue = false, bool autoSave = false) + => StaticInstance.GetBool(section, name, defaultValue, autoSave); + + bool IModPrefs.HasKey(string section, string name) + { + return (_instance.IniReadValue(section, name)?.Length ?? 0) > 0; + } + /// + /// Checks whether or not a key exists in the ini. + /// + /// Section of the key. + /// Name of the key. + /// + public static bool HasKey(string section, string name) => StaticInstance.HasKey(section, name); + + void IModPrefs.SetFloat(string section, string name, float value) + { + _instance.IniWriteValue(section, name, value.ToString(CultureInfo.InvariantCulture)); + } + /// + /// Sets a float in the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be written. + public static void SetFloat(string section, string name, float value) + => StaticInstance.SetFloat(section, name, value); + + void IModPrefs.SetInt(string section, string name, int value) + { + _instance.IniWriteValue(section, name, value.ToString()); + } + /// + /// Sets an int in the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be written. + public static void SetInt(string section, string name, int value) + => StaticInstance.SetInt(section, name, value); + + void IModPrefs.SetString(string section, string name, string value) + { + _instance.IniWriteValue(section, name, value); + } + /// + /// Sets a string in the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be written. + public static void SetString(string section, string name, string value) + => StaticInstance.SetString(section, name, value); + + void IModPrefs.SetBool(string section, string name, bool value) + { + _instance.IniWriteValue(section, name, value ? "1" : "0"); + } + /// + /// Sets a bool in the ini. + /// + /// Section of the key. + /// Name of the key. + /// Value that should be written. + public static void SetBool(string section, string name, bool value) + => StaticInstance.SetBool(section, name, value); + } +}