First Commit
This commit is contained in:
73
Assets/SubBaseVariableReference.cs
Normal file
73
Assets/SubBaseVariableReference.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace RogueUtils.Data
|
||||
{
|
||||
public abstract class SubBaseVariableReference : ScriptableObject
|
||||
{
|
||||
private event EventHandler InternalOnVariableChangeUntyped;
|
||||
private event EventHandler InternalOnValueChangeUntyped;
|
||||
|
||||
public event EventHandler OnVariableChangeUntyped
|
||||
{
|
||||
// Not thread safe.
|
||||
// Will add tracking of subscribers
|
||||
add
|
||||
{
|
||||
InternalOnVariableChangeUntyped += value;
|
||||
}
|
||||
|
||||
remove
|
||||
{
|
||||
InternalOnVariableChangeUntyped -= value;
|
||||
}
|
||||
}
|
||||
|
||||
public event EventHandler OnValueChangeUntyped
|
||||
{
|
||||
// Not thread safe.
|
||||
// Will add tracking of subscribers
|
||||
add
|
||||
{
|
||||
InternalOnValueChangeUntyped += value;
|
||||
}
|
||||
|
||||
remove
|
||||
{
|
||||
InternalOnValueChangeUntyped -= value;
|
||||
}
|
||||
}
|
||||
|
||||
public abstract SubBaseVariable GetVariableUntyped();
|
||||
|
||||
public abstract void SetVariableUntyped(SubBaseVariable value);
|
||||
|
||||
public abstract T GetValue<T>();
|
||||
|
||||
public abstract object GetValueUntyped();
|
||||
|
||||
public abstract void SetValueUntyped(object value);
|
||||
|
||||
public abstract void TriggerVariableListeners();
|
||||
|
||||
protected void SubBaseTriggerVariableListeners()
|
||||
{
|
||||
InternalOnVariableChangeUntyped?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
protected void SubBaseTriggerValueListeners()
|
||||
{
|
||||
InternalOnValueChangeUntyped?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR && false
|
||||
[BoxGroup("Debug/Trigger")]
|
||||
[Button("Trigger Variable Listeners")]
|
||||
public void EditorTriggerVariableListeners()
|
||||
{
|
||||
TriggerVariableListeners();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user