2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.1 KiB
C#

2 years ago
namespace MagicaVoxelToolbox.Saving {
public abstract class Saving<T> {
public T Value {
get {
return _Value;
}
set {
if (_Value != null && !_Value.Equals(value)) {
_Value = value;
Dirty = true;
}
}
}
public string Key;
protected T DefaultValue;
private bool Dirty;
private T _Value;
public Saving (string key, T defaultValue) {
//UnityEngine.Debug.Log("[New Saving] " + key);
Key = key;
DefaultValue = defaultValue;
Value = defaultValue;
}
public void Load () {
//UnityEngine.Debug.Log("[Load] " + Key + "\nValue = " + Value + "\n PrefData = " + GetValueFromPref());
_Value = GetValueFromPref();
Dirty = false;
}
public void TrySave () {
//UnityEngine.Debug.Log("[TrySave] " + Key + "\nDirty = " + Dirty + "\n Value = " + Value + "\n PrefData = " + GetValueFromPref());
if (Dirty) {
ForceSave();
}
}
public void ForceSave () {
SetValueToPref();
Dirty = false;
}
protected abstract T GetValueFromPref ();
protected abstract void SetValueToPref ();
}
}