using System;
using System.Linq;
using Excel2Json;
using Fort23.UTool;
using Utility;
namespace Fort23.Mono
{
public class RedDotGroupData
{
public int Id;
///
/// 红点组ID
///
public int GroupId;
///
/// key层级 value id和红点信息
///
public Map> AllRedDotData = new Map>();
public void Init(int id)
{
Id = id;
GroupId = ConfigComponent.Instance.Get(id).GroupID;
AddRedDotData(id);
// Update();
}
public void AddRedDotData(int id)
{
ReddotConfig reddotConfig = ConfigComponent.Instance.Get(id);
if (AllRedDotData.ContainsKey(reddotConfig.Layer))
{
RedDotData redDotData = new RedDotData();
redDotData.Id = id;
redDotData.GroupId = GroupId;
redDotData.Layer = reddotConfig.Layer;
redDotData.EnableId = reddotConfig.Enable;
AllRedDotData[reddotConfig.Layer].Add(redDotData.Id, redDotData);
}
else
{
Map redDotDatas = new Map();
RedDotData redDotData = new RedDotData();
redDotData.Id = id;
redDotData.GroupId = GroupId;
redDotData.Layer = reddotConfig.Layer;
redDotData.EnableId = reddotConfig.Enable;
redDotDatas.Add(redDotData.Id, redDotData);
AllRedDotData.Add(redDotData.Layer, redDotDatas);
}
}
public bool TargetLayerIsEnable(int layer)
{
bool isEnable = false;
int count = AllRedDotData.Keys.Count;
for (int i = count - 1; i >= 0; i--) //优先更新最底层红点
{
try
{
int key = AllRedDotData.Keys.ToArray()[i];
Map redDotDatas = AllRedDotData[key];
foreach (var redDotData in redDotDatas)
{
if (redDotData.Value.Layer >= layer)
{
if (redDotData.Value.isEnable)
{
isEnable = true;
break;
}
}
}
}
catch (Exception e)
{
LogTool.Log(e);
return false;
}
}
// foreach (var keyValuePair in AllRedDotData)
return isEnable;
}
public void Update()
{
int count = AllRedDotData.Keys.Count;
for (int i = count - 1; i >= 0; i--) //有限更新最底层红点
{
try
{
int key = AllRedDotData.Keys.ToArray()[i];
Map redDotDatas = AllRedDotData[key];
foreach (var keyValuePair in redDotDatas)
{
keyValuePair.Value.Update();
}
}
catch (Exception e)
{
LogTool.Log(e);
}
}
}
}
}