CombatHeroXiuMianState.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. combatHeroEntity.GameObject.SetActive(true);
  37. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Active);
  38. });
  39. }
  40. private void ActiveCombat(IEventData eventData)
  41. {
  42. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  43. ActiveHero();
  44. }
  45. protected override void ProExit()
  46. {
  47. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  48. }
  49. public override bool IsUpdateLockTarget()
  50. {
  51. return false;
  52. }
  53. protected override void ProDispose()
  54. {
  55. TimerComponent.Instance.Remove(_timerEntity);
  56. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  57. }
  58. }
  59. }