CombatHeroXiuMianState.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. public CombatHeroXiuMianState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  13. {
  14. }
  15. protected override void ProEnter()
  16. {
  17. if (!combatHeroEntity.IsEnemy)
  18. {
  19. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle);
  20. return;
  21. }
  22. combatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(true).IsHide = true;
  23. CombatEventManager.Instance.AddEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  24. TimeLineEventLogicGroupBasic timeLineEventLogicGroup =
  25. combatHeroEntity.combatHeroTimeLineControl.TimeLineData
  26. .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>("xiumian", null);
  27. if (timeLineEventLogicGroup != null)
  28. {
  29. timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null);
  30. timeLineEventLogicGroup.TimeLineUpdateEnd = delegate { FinishTimeLine(); };
  31. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup);
  32. }
  33. else
  34. {
  35. FinishTimeLine();
  36. }
  37. }
  38. protected void FinishTimeLine()
  39. {
  40. if (CombatController.currActiveCombat.CombatTypeBasic.isActiveCombat)
  41. {
  42. ActiveHero();
  43. }
  44. }
  45. protected void ActiveHero()
  46. {
  47. TimerComponent.Instance.AddTimer(CombatCalculateTool.Instance.GetOdd(0, 2000),
  48. delegate { combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Active); });
  49. }
  50. private void ActiveCombat(IEventData eventData)
  51. {
  52. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  53. ActiveHero();
  54. }
  55. protected override void ProExit()
  56. {
  57. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  58. }
  59. protected override void ProDispose()
  60. {
  61. CombatEventManager.Instance.RemoveEventListener(CombatEventType.ActiveCombat, ActiveCombat);
  62. }
  63. }
  64. }