using UnityEngine; using System.Collections.Generic; public class SkillRecordAction : RecordAction { public int SkillId; public SkillConfig skillConfig; protected SkillBase skillBase; protected List>> damageList = new List>>(); private bool isCast = false; public SkillRecordAction(int _SkillId, BattleField _battleField, BattleObject _battleObj) : base(RecordActionType.Skill, _battleField, _battleObj) { SkillId = _SkillId; 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>> _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的技能 } public override bool IsFinished() { return skillBase.IsFinished(); } public override void Run() { base.Run(); if (null == skillBase) { return; } if (!skillBase.IsFinished()) { skillBase.Run(); } if (isCast) return; if (damageList.Count > 0) { skillBase.Cast(battleObject, battleField, damageList); } else { skillBase.ForceFinished(); } isCast = true; } }