CombatHeroXiuMianState.cs 2.7 KB

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