hch
2025-11-21 eb27e5fd31f73b998a4bbd85511a31e40b8c61b7
Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
@@ -3,69 +3,49 @@
public class SkillRecordAction : RecordAction
{
   public int SkillId;
   public SkillConfig skillConfig;
   protected SkillBase skillBase;
   protected List<Dictionary<int, List<int>>> damageList = new List<Dictionary<int, List<int>>>();
   private bool isCast = false;
   public SkillBase fromSkill = null;
   public SkillRecordAction(int _SkillId, BattleField _battleField, BattleObject _battleObj)
      : base(RecordActionType.Skill, _battleField, _battleObj)
   public SkillRecordAction(BattleField _battleField, BattleObject _caster, HB427_tagSCUseSkill vNetData, List<GameNetPackBasic> packList)
      : base(RecordActionType.Skill, _battleField, _caster)
   {
      SkillId = _SkillId;
      // Debug.LogError("_caster == null : " + (_caster == null));
      skillConfig = SkillConfig.Get(SkillId);
      if (null == skillConfig)
      {
         Debug.LogError("找不到技能配置 " + SkillId);
      }
      skillBase = SkillFactory.CreateSkill(skillConfig);
      // _battleObj使用了SkillId的技能
      damageList = skillBase.GetDamageList(battleObject, battleField);
   }
   public SkillRecordAction(int _SkillId, BattleField _battleField, BattleObject _battleObj, List<Dictionary<int, List<int>>> _damageList)
      : base(RecordActionType.Skill, _battleField, _battleObj)
   {
      SkillId = _SkillId;
      skillConfig = SkillConfig.Get(SkillId);
      if (null == skillConfig)
      {
         Debug.LogError("找不到技能配置 " + SkillId);
      }
      skillBase = SkillFactory.CreateSkill(skillConfig);
      damageList = _damageList;
      // _battleObj使用了SkillId的技能
      skillBase = SkillFactory.CreateSkill(_caster, vNetData, packList, _battleField);
   }
   public override bool IsFinished()
   {
      if (null == skillBase)
      {
         return true;
      }
      return skillBase.IsFinished();
   }
    public override void Run()
    public override void ForceFinish()
    {
        base.Run();
      //  设置结束flag 记得清空motionBase里的事件
      if (null != skillBase)
      {
         skillBase.ForceFinished();
      }
        base.ForceFinish();
    }
   public override void Run()
   {
      base.Run();
      if (null == skillBase)
      {
         return;
      }
      if (!skillBase.IsFinished())
      if (isCast && !skillBase.IsFinished())
      {
         skillBase.Run();
      }
@@ -73,15 +53,17 @@
      if (isCast)
         return;
      if (damageList.Count > 0)
      if (fromSkill != null)
      {
         skillBase.Cast(battleObject, battleField, damageList);
      }
      else
      {
         skillBase.ForceFinished();
         BattleDebug.LogError("cast skill from skill : " + fromSkill.skillConfig.SkillID);
      }
      // Debug.LogError("cast skill id is " + skillBase.skillConfig.SkillID);
      skillBase.fromSkill = fromSkill;
      skillBase.Cast();
      isCast = true;
    }
   }
}