using UnityEngine; using System.Collections; using System.Collections.Generic; namespace Games.ImpactModle { public enum BUFFICON { MAX_BUFFICONUM = 5, //主角头像显示的最大buff 图标位 加一个宠物Buff 但是最多只能显示4个buff } public enum BUFFTYPE { DEBUFF =0, //减益BUFF BUFF =1,//增益BUFF } //玩家身上的一些buff产生的效果 public enum DISABLESTATE { None = -1, Disable_UseSkill = 0, //不能使用技能 Disable_Move, //不能移动 Disable_Select, //不能选择目标 GodState, //无敌状态 StealState, //隐身状态 TauntState, //嘲讽状态 BlackScreen, //黑屏状态 Chaos, //混乱 Disable_BeSelect, // 不可被选中状态 } public class ImpactInfo { public void CleanUp() { m_nHandleId = 0; m_nIsForever = false;//Buff 是否永久 m_nRemainTime = 0;//Buff 剩余时间(单位s) m_nAddnum = 0; //叠加个数 } private uint m_nHandleId;//Buff Id public uint HandleId { get { return m_nHandleId; } set { m_nHandleId = value; } } private bool m_nIsForever;//Buff 是否永久 public bool IsForever { get { return m_nIsForever; } set { m_nIsForever = value; } } private float m_nRemainTime;//Buff 剩余时间(单位s) public float RemainTime { get { return m_nRemainTime; } set { m_nRemainTime = value; } } private int m_nAddnum; public int AddNum { get { return m_nAddnum; } set { m_nAddnum = value; } } } public class ClientImpactInfo { public string m_BuffDescribe = ""; public void CleanUp() { m_nImpactId =-1;//Buff Id m_BuffDescribe = ""; } List<ImpactInfo> m_ImpactInfos = new List<ImpactInfo>(); public void RemoveBuff(uint handleId) { for (int i = 0; i < m_ImpactInfos.Count; i++) { if (m_ImpactInfos[i].HandleId == handleId) { m_ImpactInfos.RemoveAt(i); break; } } } public void AddBuff(ImpactInfo impact) { for(int i=0;i< m_ImpactInfos.Count;i++) { if(m_ImpactInfos[i].HandleId == impact.HandleId) { m_ImpactInfos.RemoveAt(i); break; } } m_ImpactInfos.Add(impact); } public bool IsVaild() { return (m_nImpactId != -1 && m_ImpactInfos.Count > 0); } private int m_nImpactId;//Buff Id public int ImpactId { get { return m_nImpactId; } set { m_nImpactId = value; } } public bool IsForever { get { for (int i = 0; i < m_ImpactInfos.Count; i++) { if (m_ImpactInfos[i].IsForever == true) return true; } return false; } } public int AddNum { get { int num = 0; for (int i = 0; i < m_ImpactInfos.Count; i++) { num += m_ImpactInfos[i].AddNum; } return num; } } public float RemainTime { get { float remain = 0; for (int i = 0; i < m_ImpactInfos.Count; i++) { if (remain < m_ImpactInfos[i].RemainTime) remain = m_ImpactInfos[i].RemainTime; } return remain; } } } }