135 lines
3.9 KiB
C#
135 lines
3.9 KiB
C#
|
/********************************************************************************
|
|||
|
游戏中红点统一管理
|
|||
|
*********************************************************************************/
|
|||
|
|
|||
|
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);
|
|||
|
}
|
|||
|
}
|