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