/// <summary>Determines how many ModProfiles are currently stored in the cache.</summary> public static int CountModProfiles() { string profileDirectory = IOUtilities.CombinePath(PluginSettings.CACHE_DIRECTORY, "mods"); if (LocalDataStorage.GetDirectoryExists(profileDirectory)) { IList <string> modDirectories; try { modDirectories = LocalDataStorage.GetDirectories(profileDirectory); } catch (Exception e) { string warningInfo = ("[mod.io] Failed to read mod profile directory." + "\nDirectory: " + profileDirectory + "\n\n"); Debug.LogWarning(warningInfo + Utility.GenerateExceptionDebugString(e)); modDirectories = new string[0]; } return(modDirectories.Count); } return(0); }
public static IEnumerable <UserProfile> IterateAllUserProfiles() { string profileDirectory = IOUtilities.CombinePath(PluginSettings.CACHE_DIRECTORY, "users"); if (LocalDataStorage.GetDirectoryExists(profileDirectory)) { IList <string> userFiles; try { userFiles = LocalDataStorage.GetFiles(profileDirectory, null, false); } catch (Exception e) { string warningInfo = ("[mod.io] Failed to read user profile directory." + "\nDirectory: " + profileDirectory + "\n\n"); Debug.LogWarning(warningInfo + Utility.GenerateExceptionDebugString(e)); userFiles = new string[0]; } foreach (string profileFilePath in userFiles) { UserProfile profile; LocalDataStorage.ReadJSONFile(profileFilePath, out profile); if (profile != null) { yield return(profile); } } } }
/// <summary>Iterates through all of the mod profiles from the given offset.</summary> public static IEnumerable <ModProfile> IterateAllModProfilesFromOffset(int offset) { Debug.Assert(IOUtilities.CombinePath(PluginSettings.CACHE_DIRECTORY, "mods", "0") == CacheClient.GenerateModDirectoryPath(0), "[mod.io] This function relies on mod directory path being a generated in" + " a specific way. Changing CacheClient.GenerateModDirectoryPath()" + " necessitates changes in this function."); Debug.Assert(IOUtilities.CombinePath(CacheClient.GenerateModDirectoryPath(0), "profile.data") == CacheClient.GenerateModProfileFilePath(0), "[mod.io] This function relies on mod directory profile file path being a generated in" + " a specific way. Changing CacheClient.GenerateModProfileFilePath()" + " necessitates changes in this function."); string profileDirectory = IOUtilities.CombinePath(PluginSettings.CACHE_DIRECTORY, "mods"); if (LocalDataStorage.GetDirectoryExists(profileDirectory)) { IList <string> modDirectories; try { modDirectories = LocalDataStorage.GetDirectories(profileDirectory); } catch (Exception e) { string warningInfo = ("[mod.io] Failed to read mod profile directory." + "\nDirectory: " + profileDirectory + "\n\n"); Debug.LogWarning(warningInfo + Utility.GenerateExceptionDebugString(e)); modDirectories = new string[0]; } if (modDirectories.Count - offset > 0) { for (int i = offset; i < modDirectories.Count; ++i) { string profilePath = IOUtilities.CombinePath(modDirectories[i], "profile.data"); ModProfile profile; LocalDataStorage.ReadJSONFile(profilePath, out profile); if (profile != null) { yield return(profile); } else { LocalDataStorage.DeleteFile(profilePath); } } } } }
/// <summary>Iterates through all of the mod profiles returning only those matching the id filter.</summary> public static IEnumerable <ModProfile> IterateFilteredModProfiles(IList <int> idFilter) { if (idFilter == null || idFilter.Count == 0) { yield break; } Debug.Assert(IOUtilities.CombinePath(PluginSettings.CACHE_DIRECTORY, "mods", "0") == CacheClient.GenerateModDirectoryPath(0), "[mod.io] This function relies on mod directory path being a generated in" + " a specific way. Changing CacheClient.GenerateModDirectoryPath()" + " necessitates changes in this function."); Debug.Assert(IOUtilities.CombinePath(CacheClient.GenerateModDirectoryPath(0), "profile.data") == CacheClient.GenerateModProfileFilePath(0), "[mod.io] This function relies on mod directory profile file path being a generated in" + " a specific way. Changing CacheClient.GenerateModProfileFilePath()" + " necessitates changes in this function."); string profileDirectory = IOUtilities.CombinePath(PluginSettings.CACHE_DIRECTORY, "mods"); if (LocalDataStorage.GetDirectoryExists(profileDirectory)) { IList <string> modDirectories; try { modDirectories = LocalDataStorage.GetDirectories(profileDirectory); } catch (Exception e) { string warningInfo = ("[mod.io] Failed to read mod profile directory." + "\nDirectory: " + profileDirectory + "\n\n"); Debug.LogWarning(warningInfo + Utility.GenerateExceptionDebugString(e)); modDirectories = new string[0]; } foreach (string modDirectory in modDirectories) { string idPart = modDirectory.Substring(profileDirectory.Length + 1); int modId = ModProfile.NULL_ID; if (!int.TryParse(idPart, out modId)) { modId = ModProfile.NULL_ID; } if (idFilter.Contains(modId)) { string profilePath = IOUtilities.CombinePath(modDirectory, "profile.data"); ModProfile profile; LocalDataStorage.ReadJSONFile(profilePath, out profile); if (profile != null) { yield return(profile); } else { LocalDataStorage.DeleteFile(profilePath); } } } } }