2025-01-02 12:15:45 +08:00

75 lines
1.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*******************************************************************************
*Create By CG
*Function
*******************************************************************************/
namespace CG.UTility
{
public class BindablePropertyRef<T> where T : class
{
private T mValue = null;
public T PreviousValue = null;
public T Value
{
get => mValue;
set
{
if (mValue!=value)
{
mValue = value;
OnValueChanged?.Invoke(value);
PreviousValue = value;
}
}
}
public System.Action<T> OnValueChanged;
}
public class BindableProperty<T> where T : System.IEquatable<T>
{
private T mValue = default(T);
public T Value
{
get => mValue;
set
{
if (!value.Equals(mValue))
{
mValue = value;
OnValueChanged?.Invoke(mValue);
}
}
}
public System.Action<T> OnValueChanged;
}
public class BindablePropertyDic<T1,T2> where T2: class
{
private Dictionary<T1, T2> _value = new Dictionary<T1, T2>();
public Dictionary<T1, T2> GetValue()
{
return _value;
}
public void SetValue(T1 key, T2 itemValue)
{
if (_value.ContainsKey(key))
{
_value[key] = itemValue;
}
else
{
_value.Add(key, itemValue);
}
OnValueChanged?.Invoke(_value);
}
public void SetDefault()
{
_value = new Dictionary<T1, T2>();
}
public System.Action<Dictionary<T1, T2>> OnValueChanged;
}
}