CombatHeroXiuMianState.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. combatHeroEntity.CombatAIBasic.isAlert = true;
  24. combatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(true).IsHide = true;
  25. CombatEventManager.Instance.AddEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  26. TimeLineEventLogicGroupBasic timeLineEventLogicGroup =
  27. combatHeroEntity.combatHeroTimeLineControl.TimeLineData
  28. .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>("xiumian", null);
  29. if (timeLineEventLogicGroup != null)
  30. {
  31. timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null);
  32. timeLineEventLogicGroup.TimeLineUpdateEnd = delegate { FinishTimeLine(); };
  33. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup);
  34. }
  35. else
  36. {
  37. combatHeroEntity.GameObject.SetActive(false);
  38. FinishTimeLine();
  39. }
  40. }
  41. protected void FinishTimeLine()
  42. {
  43. if (CombatController.currActiveCombat.CombatTypeBasic.isActiveCombat)
  44. {
  45. ActiveHero();
  46. }
  47. }
  48. protected void ActiveHero()
  49. {
  50. _timerEntity = TimerComponent.Instance.AddTimer(CombatCalculateTool.Instance.GetOdd(0, 2000),
  51. delegate
  52. {
  53. combatHeroEntity.GameObject.SetActive(true);
  54. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Active);
  55. });
  56. }
  57. private void ActiveCombat(IEventData eventData)
  58. {
  59. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  60. ActiveHero();
  61. }
  62. protected override void ProExit()
  63. {
  64. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  65. }
  66. public override bool IsUpdateLockTarget()
  67. {
  68. return false;
  69. }
  70. protected override void ProDispose()
  71. {
  72. TimerComponent.Instance.Remove(_timerEntity);
  73. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  74. }
  75. }
  76. }