using UnityEngine; using System.Collections.Generic; public class SkillManager { private Dictionary m_SkillDict; private List m_SkillList; private uint m_OwnerID; private Skill m_CurrentSkill; public Skill CurCastSkill { get { return m_CurrentSkill; } private set { m_CurrentSkill = value; } } private bool m_DoingPrepareSkill = false; public bool DoingPrepareSkill { get { return m_DoingPrepareSkill; } set { m_DoingPrepareSkill = value; } } public SkillManager(uint sid) { m_OwnerID = sid; m_SkillDict = new Dictionary(); m_SkillList = new List(); } public Skill Get(int id) { if (id <= 0) { Debug.LogWarningFormat("传入了非法的技能id...[ {0} ]", id); return null; } if (!m_SkillDict.ContainsKey(id)) { Skill _skill = new Skill(m_OwnerID, id); m_SkillDict[id] = _skill; m_SkillList.Add(id); } return m_SkillDict[id]; } /// /// 释放给定id技能 /// /// 技能id /// 是否强制,忽略cd public void CastSkill(uint userSID, int id, bool force = false) { CurCastSkill = Get(id); if (!force) { if (!CurCastSkill.IsValid()) { return; } } CurCastSkill.SkillCompelete = false; CurCastSkill.Cast(userSID); CurCastSkill.hurtClientList.Clear(); CurCastSkill.hurtClntFightNpcList.Clear(); } public void Update() { for (int i = 0; i < m_SkillList.Count; ++i) { if (m_SkillDict.ContainsKey(m_SkillList[i]) == false) { continue; } m_SkillDict[m_SkillList[i]].Update(); } } public void Clear() { Skill _skill = null; GActorFight _owner = GAMgr.Instance.GetBySID(m_OwnerID) as GActorFight; foreach (var _skillID in m_SkillList) { _skill = m_SkillDict[_skillID]; _skill.ClearSkillKillTargets(); } } }