using System;
using UnityEngine;
namespace YIUIFramework
{
///
/// 红点 管理器
///
public partial class RedDotMgr
{
///
/// 获取这个红点数据
///
public RedDotData GetData(int key)
{
m_AllRedDotData.TryGetValue(key, out var data);
if (data == null)
{
if (!Disposed)
{
Debug.LogError($"没有获取到这个红点数据 {key} Tips:如果是新增的注意需要ET编译过 否则就是没有 请检查");
}
}
return data;
}
///
/// 添加变化监听
///
public bool AddChanged(int key, Action action)
{
var data = GetData(key);
if (data == null)
{
return false;
}
data.AddOnChanged(action);
return true;
}
///
/// 移除变化监听
///
public bool RemoveChanged(int key, Action action)
{
var data = GetData(key);
if (data == null)
{
return false;
}
data.RemoveChanged(action);
return true;
}
///
/// 设置对应红点的数量
///
public bool SetCount(int key, int count)
{
var data = GetData(key);
if (data == null) return false;
if (SyncSetCount)
{
return data.TrySetCount(count);
}
else
{
return TryDirtySetCount(data, count);
}
}
///
/// 获取某个红点的当前数量
/// 如果他的tips被关闭 数量=0
///
/// key
/// 真实数量
///
public int GetCount(int key, bool isReal = false)
{
var data = GetData(key);
if (data == null)
{
return 0;
}
return isReal ? data.RealCount : data.Count;
}
///
/// 设置此红点是否提示
/// (可关闭红点 这样红点就不会一直提示了 给玩家设置的)
///
public bool SetTips(int key, bool tips)
{
var data = GetData(key);
return data != null && data.SetTips(tips);
}
public void DeletePlayerTipsPrefs(int key)
{
var data = GetData(key);
data?.DeletePlayerTipsPrefs();
}
}
}