Files
JJBB/Assets/Project/Script/RedTipPoint.cs

135 lines
3.9 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
/********************************************************************************
*********************************************************************************/
using UnityEngine;
using System.Collections.Generic;
public class RedTipPoint : MonoBehaviour
{
public enum PointType
{
WorldBoss,
PrivateBoss,
Boss,
HomeBoss,
PetBook,
PetBookLevel,
GuildXiulian,
//FunctionEx上的红点
Equip, // 锻造
Skill, // 技能
Pet, //宠物
Marry, // 婚姻
MeridiaSoul, // 境界
Magic, // 法宝
Ride, //坐骑
Piano, // 竖琴
Wing, // 翅膀
Qilinbi, //麒麟臂
Soul, // 魂器
Mask, // 面具
Huopao, //火炮
GuildApply,
None,
}
private static List<RedTipPoint> Static_RedTipPoints = new List<RedTipPoint>();
private static Dictionary<PointType, int> Static_PointStates = new Dictionary<PointType, int>();
public static void RedPointStateChange(PointType pointType, bool state)
{
if (state == false && Static_PointStates.ContainsKey(pointType) == false)
return;
if (state && Static_PointStates.ContainsKey(pointType))
return;
if (state)
Static_PointStates[pointType] = 1;
else if (Static_PointStates.ContainsKey(pointType))
Static_PointStates.Remove(pointType);
for(int i=0;i< Static_RedTipPoints.Count;i++)
{
Static_RedTipPoints[i].StateChange();
}
}
//FunctionEx上的进阶红点特殊判断一下
/// <summary>
/// 设置进阶项Icon红点状态
/// </summary>
/// <param name="advanceType">进阶类型AdvanceBase.AdvanceType</param>
/// <param name="state">状态</param>
public static void SetAdvanceRedTipState(AdvanceBase.AdvanceType advanceType, bool state)
{
PointType realType = PointType.None;
switch (advanceType)
{
case AdvanceBase.AdvanceType.Ride: realType = PointType.Ride; break;
case AdvanceBase.AdvanceType.Piano: realType = PointType.Piano; break;
case AdvanceBase.AdvanceType.Wing: realType = PointType.Wing; break;
case AdvanceBase.AdvanceType.Qilinbi: realType = PointType.Qilinbi; break;
case AdvanceBase.AdvanceType.Soul: realType = PointType.Soul; break;
case AdvanceBase.AdvanceType.Mask: realType = PointType.Mask; break;
case AdvanceBase.AdvanceType.Huopao: realType = PointType.Huopao; break;
}
if (realType != PointType.None)
{
RedPointStateChange(realType, state);
}
}
public static void DelResScript(RedTipPoint red)
{
if (Static_RedTipPoints.Contains(red))
Static_RedTipPoints.Remove(red);
}
public static void AddResScript(RedTipPoint red)
{
if (Static_RedTipPoints.Contains(red) == false)
Static_RedTipPoints.Add(red);
}
public PointType _Type;
public PointType[] _Types;
public void StateChange()
{
if (gameObject == null)
return;
bool isShow = false;
if (Static_PointStates.ContainsKey(_Type))
isShow = true;
if(isShow==false)
{
for(int i=0;i<_Types.Length;i++)
{
if(Static_PointStates.ContainsKey(_Types[i]))
{
isShow = true;
break;
}
}
}
gameObject.SetActive(isShow);
}
public void Init()
{
Awake();
}
private void Awake()
{
StateChange();
AddResScript(this);
}
private void OnDestroy()
{
DelResScript(this);
}
}