diff --git a/src/CacheClient.cs b/src/CacheClient.cs index e6424024..2593cc1b 100644 --- a/src/CacheClient.cs +++ b/src/CacheClient.cs @@ -22,7 +22,7 @@ public static class CacheClient static CacheClient() { PluginSettings.Data settings = PluginSettings.data; - CacheClient.cacheDirectory = settings.cacheDirectory; + CacheClient.cacheDirectory = settings.CacheDirectory; } // ---------[ GAME PROFILE ]--------- diff --git a/src/ModManager.cs b/src/ModManager.cs index 9b0e5723..ac17368b 100644 --- a/src/ModManager.cs +++ b/src/ModManager.cs @@ -51,8 +51,8 @@ private struct PersistentData static ModManager() { PluginSettings.Data settings = PluginSettings.data; - ModManager.installationDirectory = settings.installationDirectory; - ModManager.PERSISTENTDATA_FILEPATH = IOUtilities.CombinePath(settings.cacheDirectory, PERSISTENTDATA_FILENAME); + ModManager.installationDirectory = settings.InstallationDirectory; + ModManager.PERSISTENTDATA_FILEPATH = IOUtilities.CombinePath(settings.CacheDirectory, PERSISTENTDATA_FILENAME); if(!IOUtilities.TryReadJsonObjectFile(PERSISTENTDATA_FILEPATH, out ModManager.m_data)) { diff --git a/src/PluginSettings.cs b/src/PluginSettings.cs index 463f4dbf..99902c9a 100644 --- a/src/PluginSettings.cs +++ b/src/PluginSettings.cs @@ -13,16 +13,74 @@ public struct Data // ---------[ FIELDS ]--------- [Tooltip("API URL to use when making requests")] public string apiURL; + [Tooltip("Game Id assigned to your game profile")] public int gameId; + [Tooltip("API Key assigned to your game profile")] public string gameAPIKey; + [Tooltip("Directory to use for mod installations")] - public string installationDirectory; + [SerializeField] + // Use InstallationDirectory instead! + private string installationDirectory; + private string installationDirectoryCached; + public string InstallationDirectory + { + set { installationDirectory = value; } + get + { + if (installationDirectoryCached == null) + { + installationDirectoryCached = ReplaceKeywords(installationDirectory); + } + + return installationDirectoryCached; + } + } + [Tooltip("Directory to use for cached server data")] - public string cacheDirectory; + [SerializeField] + // Use CacheDirectory instead! + private string cacheDirectory; + private string cacheDirectoryCached; + public string CacheDirectory + { + set { cacheDirectory = value; } + get + { + if (cacheDirectoryCached == null) + { + cacheDirectoryCached = ReplaceKeywords(cacheDirectory); + } + + return cacheDirectoryCached; + } + } + [Tooltip("Log all web requests made to using Debug.Log")] public bool logAllRequests; + + private string ReplaceKeywords(string input) + { + if(input != null) + { + string[] cacheDirParts = input.Split(System.IO.Path.AltDirectorySeparatorChar, + System.IO.Path.DirectorySeparatorChar); + for(int i = 0; i < cacheDirParts.Length; ++i) + { + if(cacheDirParts[i].ToUpper().Equals("$PERSISTENT_DATA_PATH$")) + { + cacheDirParts[i] = Application.persistentDataPath; + } + + cacheDirParts[i] = cacheDirParts[i].Replace("$GAME_ID$", gameId.ToString()); + } + input = IOUtilities.CombinePath(cacheDirParts); + } + + return input; + } } // ---------[ CONSTANTS & STATICS ]--------- @@ -75,46 +133,8 @@ private static void LoadDataInstance() } else { - Data settings = wrapper.m_data; - - // - Path variable replacement - - // cachedir - if(settings.cacheDirectory != null) - { - string[] cacheDirParts = settings.cacheDirectory.Split(System.IO.Path.AltDirectorySeparatorChar, - System.IO.Path.DirectorySeparatorChar); - for(int i = 0; i < cacheDirParts.Length; ++i) - { - if(cacheDirParts[i].ToUpper().Equals("$PERSISTENT_DATA_PATH$")) - { - cacheDirParts[i] = Application.persistentDataPath; - } - - cacheDirParts[i] = cacheDirParts[i].Replace("$GAME_ID$", settings.gameId.ToString()); - } - settings.cacheDirectory = IOUtilities.CombinePath(cacheDirParts); - } - - // installdir - if(settings.installationDirectory != null) - { - string[] installDirParts = settings.installationDirectory.Split(System.IO.Path.AltDirectorySeparatorChar, - System.IO.Path.DirectorySeparatorChar); - for(int i = 0; i < installDirParts.Length; ++i) - { - if(installDirParts[i].ToUpper().Equals("$PERSISTENT_DATA_PATH$")) - { - installDirParts[i] = Application.persistentDataPath; - } - - installDirParts[i] = installDirParts[i].Replace("$GAME_ID$", settings.gameId.ToString()); - } - - settings.installationDirectory = IOUtilities.CombinePath(installDirParts); - } - // apply to data instance - PluginSettings._dataInstance = settings; + PluginSettings._dataInstance = wrapper.m_data; } PluginSettings._loaded = true; @@ -144,8 +164,8 @@ private static PluginSettings InitializeAsset() apiURL = APIClient.API_URL_PRODUCTIONSERVER + APIClient.API_VERSION, gameId = 0, gameAPIKey = string.Empty, - cacheDirectory = "$PERSISTENT_DATA_PATH$/modio-$GAME_ID$", - installationDirectory = "$PERSISTENT_DATA_PATH$/modio-$GAME_ID$/_installedMods", + CacheDirectory = "$PERSISTENT_DATA_PATH$/modio-$GAME_ID$", + InstallationDirectory = "$PERSISTENT_DATA_PATH$/modio-$GAME_ID$/_installedMods", logAllRequests = false, }; diff --git a/src/UI/ModBrowser.cs b/src/UI/ModBrowser.cs index a1ac8acb..d19a85ad 100644 --- a/src/UI/ModBrowser.cs +++ b/src/UI/ModBrowser.cs @@ -161,7 +161,7 @@ private void Start() this.gameObject.SetActive(false); return; } - if(String.IsNullOrEmpty(settings.cacheDirectory)) + if(String.IsNullOrEmpty(settings.CacheDirectory)) { Debug.LogError("[mod.io] Cache Directory is missing from the Plugin Settings.\n" + "This must be configured by selecting the mod.io > Edit Settings menu" @@ -172,7 +172,7 @@ private void Start() this.gameObject.SetActive(false); return; } - if(String.IsNullOrEmpty(settings.installationDirectory)) + if(String.IsNullOrEmpty(settings.InstallationDirectory)) { Debug.LogError("[mod.io] Mod Installation Directory is missing from the Plugin Settings.\n" + "This must be configured by selecting the mod.io > Edit Settings menu" diff --git a/src/UserAuthenticationData.cs b/src/UserAuthenticationData.cs index 2be205f6..586a0a3f 100644 --- a/src/UserAuthenticationData.cs +++ b/src/UserAuthenticationData.cs @@ -21,7 +21,7 @@ public struct UserAuthenticationData }; /// Location of the settings file. - public static readonly string FILE_LOCATION = IOUtilities.CombinePath(PluginSettings.data.cacheDirectory, + public static readonly string FILE_LOCATION = IOUtilities.CombinePath(PluginSettings.data.CacheDirectory, "user.data"); // ---------[ FIELDS ]---------