| using UnityEngine; | 
| using System.Collections.Generic; | 
|   | 
| public class SkillRecordAction : RecordAction | 
| { | 
|     protected SkillBase skillBase; | 
|   | 
|     private bool isCast = false; | 
|   | 
|     public int fromSkillId = 0; | 
|   | 
|     public SkillRecordAction(BattleField _battleField, BattleObject _caster, HB427_tagSCUseSkill vNetData, List<GameNetPackBasic> packList) | 
|         : base(RecordActionType.Skill, _battleField, _caster) | 
|     { | 
|         // Debug.LogError("_caster == null : " + (_caster == null)); | 
|   | 
|         skillBase = SkillFactory.CreateSkill(_caster, vNetData, packList, _battleField); | 
|     } | 
|   | 
|     public override bool IsFinished() | 
|     { | 
|         if (null == skillBase) | 
|         { | 
|             return true; | 
|         } | 
|         return skillBase.IsFinished(); | 
|     } | 
|   | 
|     public override void ForceFinish() | 
|     { | 
|         //  设置结束flag 记得清空motionBase里的事件 | 
|         if (null != skillBase) | 
|         { | 
|             skillBase.ForceFinished(); | 
|         } | 
|         base.ForceFinish(); | 
|     } | 
|   | 
|     public override void Run() | 
|     { | 
|         base.Run(); | 
|   | 
|         if (null == skillBase) | 
|         { | 
|             return; | 
|         } | 
|   | 
|         if (isCast && !skillBase.IsFinished()) | 
|         { | 
|             skillBase.Run(); | 
|         } | 
|   | 
|         if (isCast) | 
|             return; | 
|   | 
|         if (fromSkillId > 0) | 
|         { | 
|             BattleDebug.LogError("cast skill from skill : " + fromSkillId); | 
|         } | 
|   | 
|         // Debug.LogError("cast skill id is " + skillBase.skillConfig.SkillID); | 
|   | 
|         skillBase.fromSkillId = fromSkillId; | 
|   | 
|         skillBase.Cast(); | 
|   | 
|         isCast = true; | 
|     } | 
| } |