| using System; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
|   | 
| public class SkillEffect | 
| { | 
|     protected SkillConfig skillConfig; | 
|     protected BattleObject caster; | 
|     protected HB427_tagSCUseSkill tagUseSkillAttack;// 目标列表 | 
|   | 
|     protected bool isFinish = false; | 
|   | 
|     protected bool isFinishFrameEnd = false; | 
|   | 
|     protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit; | 
|   | 
|     public SkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) | 
|     { | 
|         skillConfig = _skillConfig; | 
|         caster = _caster; | 
|         tagUseSkillAttack = _tagUseSkillAttack; | 
|     } | 
|   | 
|     //   | 
|     public virtual void Play(Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> _onHit) | 
|     { | 
|         onHit = _onHit; | 
|         if (skillConfig.EffectId > 0) | 
|         { | 
|             caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.EffectId, caster.heroRectTrans, caster.Camp); | 
|         } | 
|         if (skillConfig.EffectId2 > 0) | 
|         { | 
|             caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.EffectId2, caster.heroRectTrans, caster.Camp); | 
|         } | 
|     } | 
|   | 
|     public virtual void Run() | 
|     { | 
|   | 
|     } | 
|   | 
|     public virtual void OnMiddleFrameEnd(int times, int hitIndex) | 
|     { | 
|   | 
|     } | 
|   | 
|     public virtual void OnMiddleFrameStart(int times) | 
|     { | 
|         if (skillConfig.MStartEffectId <= 0) | 
|             return; | 
|         //  中摇固定特效 | 
|         caster.battleField.battleEffectMgr.PlayEffect(caster, skillConfig.MStartEffectId, caster.heroGo.transform, caster.Camp); | 
|     } | 
|      | 
|     /// <summary> | 
|     /// 后摇开始 | 
|     /// </summary> | 
|     public virtual void OnFinalFrameStart() | 
|     { | 
|   | 
|     } | 
|   | 
|     /// <summary> | 
|     /// 后摇结束 | 
|     /// </summary> | 
|     public virtual void OnFinalFrameEnd() | 
|     { | 
|         isFinishFrameEnd = true; | 
|     } | 
|      | 
|     public virtual bool IsFinished() | 
|     { | 
|         return isFinish && isFinishFrameEnd; | 
|     } | 
|   | 
|     public virtual void ForceFinished() | 
|     { | 
|         isFinish = true; | 
|         isFinishFrameEnd = true; | 
|     } | 
| } |