using StardewModdingAPI.Framework.StateTracking;
namespace StardewModdingAPI.Framework
{
/// A snapshot of a tracked value.
/// The tracked value type.
internal class SnapshotDiff
{
/*********
** Accessors
*********/
/// Whether the value changed since the last update.
public bool IsChanged { get; private set; }
/// The previous value.
public T? Old { get; private set; }
/// The current value.
public T? New { get; private set; }
/*********
** Public methods
*********/
/// Update the snapshot.
/// Whether the value changed since the last update.
/// The previous value.
/// The current value.
public void Update(bool isChanged, T old, T now)
{
this.IsChanged = isChanged;
this.Old = old;
this.New = now;
}
/// Update the snapshot.
/// The value watcher to snapshot.
public void Update(IValueWatcher watcher)
{
this.Update(watcher.IsChanged, watcher.PreviousValue, watcher.CurrentValue);
}
}
}