using UnityEngine; namespace BrewMonster.Scripts { /////////////////////////////////////////////////////////////////////////// // // Class CECHPWorkSpell // /////////////////////////////////////////////////////////////////////////// public class CECHPWorkSpell : CECHPWork { public static class Spell_magic_state { public const int ST_INCANT = 0, ST_SPELL = 1; } public CECHPWorkSpell(CECHPWorkMan pWorkMan) : base(Host_work_ID.WORK_SPELLOBJECT, pWorkMan) { m_dwMask = Work_mask.MASK_SPELLOBJECT; m_dwTransMask = Work_mask.MASK_STAND | Work_mask.MASK_MOVETOPOS | Work_mask.MASK_TRACEOBJECT; Reset(); } public CECHPWorkSpell(int iWorkID, CECHPWorkMan pWorkMan) : base(iWorkID, pWorkMan) { } protected CECSkill m_pSkill; // Skill object protected CECCounter m_OverTimeCnt; // Over time counter protected int m_iState; protected int m_idTarget; // Target id // On first tick protected virtual void OnFirstTick() { //m_pHost.m_iMoveMode = CECHostPlayer::MOVE_STAND; } // Prepare cast public void PrepareCast(int idTarget, CECSkill pSkill, int iIncantTime) { } // Change state public void ChangeState(int iState) { } // Get state public int GetState() { return m_iState; } public CECSkill GetSkill() { return m_pSkill; } // Tick routine public virtual bool Tick(uint dwDeltaTime) { return false; } // Reset work public virtual void Reset() { } // Copy work data public virtual bool CopyData(CECHPWork pWork) { return false; } // Cancel work public virtual void Cancel() { } } /////////////////////////////////////////////////////////////////////////// // // Class CECHPWorkSpellMatcher // /////////////////////////////////////////////////////////////////////////// // 根据技能 ID 匹配 CECHPWorkSpell // Match CECHPWorkSpell based on skill ID public class CECHPWorkSpellMatcher : CECHPWorkMatcher { private CECSkill m_pSkill; public CECHPWorkSpellMatcher(CECSkill pSkill) { m_pSkill = pSkill; } public bool Match(CECHPWork pWork, int priority, bool isDelayWork) { bool bMatching = false; if (pWork != null && pWork.GetWorkID() == CECHPWork.Host_work_ID.WORK_SPELLOBJECT) { CECHPWorkSpell pWorkSpell = pWork as CECHPWorkSpell; if (pWorkSpell != null && m_pSkill == pWorkSpell.GetSkill()) { bMatching = true; } } return bMatching; } } }