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; 
 | 
    } 
 | 
} 
 |