/// <summary> Returns the value corresponding to key in the preference file if it exists </summary> public static int GetInt(string key, int defaultValue = 0) { if (!HashBase.HasKey(key) || !CheckFile(key, DirectoryNames.IntDirectory)) { return(defaultValue); } return(int.Parse(Encoding.Default.GetString(LoadFromFile(key, DirectoryNames.IntDirectory)))); }
/// <summary> Returns the value corresponding to key in the preference file if it exists </summary> public static bool GetBool(string key, bool defaultValue = false) { if (!HashBase.HasKey(key) || !CheckFile(key, DirectoryNames.BoolDirectory)) { return(defaultValue); } return(LoadFromFile(key, DirectoryNames.BoolDirectory) == new byte[] { 1 }); }
/// <summary> Returns the value corresponding to key in the preference file if it exists </summary> public static string GetString(string key, string defaultValue = "") { if (!HashBase.HasKey(key) || !CheckFile(key, DirectoryNames.StringDirectory)) { return(defaultValue); } return(Encoding.Default.GetString(LoadFromFile(key, DirectoryNames.StringDirectory))); }
/// <summary> Returns the value corresponding to key in the preference file if it exists </summary> public static float GetFloat(string key, float defaultValue = 0f) { if (!HashBase.HasKey(key) || !CheckFile(key, DirectoryNames.FloatDirectory)) { return(defaultValue); } return(float.Parse(Encoding.Default.GetString(LoadFromFile(key, DirectoryNames.FloatDirectory)))); }
private static void SaveToFile(string key, byte[] value, DirectoryNames fileType) { string directory = $"{Application.persistentDataPath}\\Saves\\{(int)fileType}"; if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } value = Encryptor.Encrypt(value, key); using (FileStream file = File.Create($"{directory}\\{key}.{SAVE_EXT}")) { file.Write(value, 0, value.Length); file.Close(); } HashBase.AddKey(key, directory, Encryptor.GetSha256(value)); }
/// <summary> Removes key and its corresponding value from the preferences </summary> public static void DeleteKey(string key) { string directory = $"{Application.persistentDataPath}\\Saves"; if (!Directory.Exists(directory)) { return; } string[] directories = Directory.GetDirectories(directory); for (int directoryId = 0; directoryId < directories.Length; directoryId++) { if (File.Exists($"{directories[directoryId]}\\{key}.{SAVE_EXT}")) { File.Delete($"{directories[directoryId]}\\{key}.{SAVE_EXT}"); } HashBase.RemoveKey(key, directories[directoryId]); } }
private static byte[] LoadFromFile(string key, DirectoryNames fileType) { string directory = $"{Application.persistentDataPath}\\Saves\\{(int)fileType}"; using (FileStream file = File.Open($"{directory}\\{key}.{SAVE_EXT}", FileMode.Open)) { byte[] array = new byte[file.Length]; file.Read(array, 0, array.Length); if (!Encryptor.CompareByteArr(Encryptor.GetSha256(array), HashBase.GetKey(key, directory))) { file.Close(); DeleteAll(); return(new byte[0]); } array = Encryptor.Encrypt(array, key, true); file.Close(); return(array); } }
/// <summary> Returns true if key exists in the preferences </summary> public static bool HasKey(string key) => HashBase.HasKey(key);