CombatHeroXiuMianState.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using Common.Utility.CombatEvent;
  3. using Fort23.Core;
  4. using GameLogic.Combat.CombatTool;
  5. namespace GameLogic.Combat.Hero.State
  6. {
  7. /// <summary>
  8. /// 英雄的休眠状态
  9. /// </summary>
  10. public class CombatHeroXiuMianState : CombatHeroStateBasic
  11. {
  12. private TimerEntity _timerEntity;
  13. public CombatHeroXiuMianState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  14. {
  15. }
  16. protected override void ProEnter()
  17. {
  18. // if (!combatHeroEntity.IsEnemy)
  19. // {
  20. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  21. return;
  22. // }
  23. }
  24. protected void FinishTimeLine()
  25. {
  26. if (CombatController.currActiveCombat.CombatTypeBasic.isActiveCombat)
  27. {
  28. ActiveHero();
  29. }
  30. }
  31. protected void ActiveHero()
  32. {
  33. _timerEntity = TimerComponent.Instance.AddTimer(CombatCalculateTool.Instance.GetOdd(0, 300),
  34. delegate
  35. {
  36. _timerEntity = null;
  37. combatHeroEntity.GameObject.SetActive(true);
  38. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Active);
  39. });
  40. }
  41. private void ActiveCombat(IEventData eventData)
  42. {
  43. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  44. ActiveHero();
  45. }
  46. protected override void ProExit()
  47. {
  48. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  49. }
  50. public override bool IsUpdateLockTarget()
  51. {
  52. return false;
  53. }
  54. protected override void ProDispose()
  55. {
  56. TimerComponent.Instance.Remove(_timerEntity);
  57. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  58. }
  59. }
  60. }