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