An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.7 KiB

// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine;
namespace Fungus
{
/// <summary>
/// Wrapper class for PlayerPrefs that adds the concept of multiple save slots.
/// Save slots allow you to store multiple player save profiles.
/// </summary>
public class FungusPrefs
{
/// <summary>
/// Deletes all saved values for all slots.
/// </summary>
public static void DeleteAll()
{
PlayerPrefs.DeleteAll();
}
/// <summary>
/// Removes key and its value from this save slot.
/// </summary>
public static void DeleteKey(int slot, string key)
{
string slotKey = GetSlotKey(slot, key);
PlayerPrefs.DeleteKey(slotKey);
}
/// <summary>
/// Returns the float value associated with this key in this save slot, it it exists.
/// </summary>
public static float GetFloat(int slot, string key, float defaultValue = 0f)
{
string slotKey = GetSlotKey(slot, key);
return PlayerPrefs.GetFloat(slotKey, defaultValue);
}
/// <summary>
/// Returns the int value associated with this key in this save slot, it it exists.
/// </summary>
public static int GetInt(int slot, string key, int defaultValue = 0)
{
string slotKey = GetSlotKey(slot, key);
return PlayerPrefs.GetInt(slotKey, defaultValue);
}
/// <summary>
/// Returns the string value associated with this key in this save slot, it it exists.
/// </summary>
public static string GetString(int slot, string key, string defaultValue = "")
{
string slotKey = GetSlotKey(slot, key);
return PlayerPrefs.GetString(slotKey, defaultValue);
}
/// <summary>
/// Returns true if the key exists in this save slot.
/// </summary>
public static bool HasKey(int slot, string key)
{
string slotKey = GetSlotKey(slot, key);
return PlayerPrefs.HasKey(slotKey);
}
/// <summary>
/// Writes all modified prefences to disk.
/// </summary>
public static void Save()
{
PlayerPrefs.Save();
}
/// <summary>
/// Sets the value of the preference identified by key for this save slot.
/// </summary>
public static void SetFloat(int slot, string key, float value)
{
string slotKey = GetSlotKey(slot, key);
PlayerPrefs.SetFloat(slotKey, value);
}
/// <summary>
/// Sets the value of the preference identified by key for this save slot.
/// </summary>
public static void SetInt(int slot, string key, int value)
{
string slotKey = GetSlotKey(slot, key);
PlayerPrefs.SetInt(slotKey, value);
}
/// <summary>
/// Sets the value of the preference identified by key for this save slot.
/// </summary>
public static void SetString(int slot, string key, string value)
{
string slotKey = GetSlotKey(slot, key);
PlayerPrefs.SetString(slotKey, value);
}
/// <summary>
/// Returns the combined key used to identify a key within a save slot.
/// </summary>
private static string GetSlotKey(int slot, string key)
{
return slot.ToString() + ":" + key;
}
}
}