using UnityEngine; public class Prepare_200 : SMB_Base { private Skill m_CacheSkill; private int m_LimitTime; private float m_Duration; private int m_CastTime; protected override void OnEnter(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnEnter(owner, animator, stateInfo, layerIndex); GActorFight _fight = owner as GActorFight; if (_fight == null || _fight.SkillMgr.CurCastSkill == null) { return; } m_CacheSkill = _fight.SkillMgr.Get(_fight.SkillMgr.CurCastSkill.id); m_CastTime = m_CacheSkill.skillInfo.config.CastTime; if (m_CastTime > 0) { m_CacheSkill.OnPreparingEnd += OnSkillPrepareEnd; m_CacheSkill.OnPreparingFail += OnSkillPrepareFail; } SkillHelper.EffectValue _effectValue; if (m_CacheSkill.skillInfo.effectValue.TryGetValue(1206, out _effectValue)) { m_LimitTime = _effectValue.value1; m_Duration = m_LimitTime * m_CastTime; } if (_fight.ServerInstID == PlayerDatas.Instance.PlayerId) { (_fight as GA_Hero).StopRush(); } if (_fight is GA_Player) { (_fight as GA_Player).StopMoveToPosition(); } } protected override void OnUpdate(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnUpdate(owner, animator, stateInfo, layerIndex); if (m_CacheSkill == null) { return; } } protected override void OnExit(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnExit(owner, animator, stateInfo, layerIndex); if (m_CastTime > 0) { m_CacheSkill.OnPreparingEnd -= OnSkillPrepareEnd; m_CacheSkill.OnPreparingFail -= OnSkillPrepareFail; } } private void OnSkillPrepareEnd(uint serverObjId) { GActorFight _fight = GAMgr.Instance.GetBySID(serverObjId) as GActorFight; if (_fight == null) { return; } _fight.Idle(); if (m_CacheSkill != null) { if (m_CacheSkill.skillInfo.config.Skillactmark > 10 && m_CacheSkill.skillInfo.config.Skillactmark < 100) { _fight.NextAction = m_CacheSkill.skillInfo.config.Skillactmark; return; } m_CacheSkill.SkillPreparing = false; } } private void OnSkillPrepareFail(uint serverObjId) { GActorFight _fight = GAMgr.Instance.GetBySID(serverObjId) as GActorFight; if (_fight == null) { return; } _fight.SkillMgr.DoingPrepareSkill = false; _fight.Idle(); if (m_CacheSkill != null) { m_CacheSkill.SkillPreparing = false; } } }