MagicWeaponIdleState.cs 1.9 KB

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