CombatHeroDieState.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
  2. using GameLogic.Combat.CombatTool;
  3. namespace GameLogic.Combat.Hero.State
  4. {
  5. public class CombatHeroDieState : CombatHeroStateBasic
  6. {
  7. public float resurrectionTime;
  8. protected bool isStartResurrection;
  9. protected bool isSwitch = false;
  10. private TimeLineEventLogicGroupBasic _timeLineEventLogicGroupBasic;
  11. public CombatHeroDieState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  12. {
  13. }
  14. public override bool IsSwitch(IState nextState)
  15. {
  16. return isSwitch;
  17. }
  18. protected override void ProEnter()
  19. {
  20. isSwitch = false;
  21. resurrectionTime = 0;
  22. TimeLineEventLogicGroupBasic timeLineEventLogicGroup =
  23. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("die");
  24. if (timeLineEventLogicGroup != null)
  25. {
  26. timeLineEventLogicGroup.TimeLineUpdateEnd = delegate
  27. {
  28. if (combatHeroEntity.IsEnemy)
  29. {
  30. CombatController.currActiveCombat.CombatHeroController.RemoveDieHero(combatHeroEntity);
  31. }
  32. else
  33. {
  34. isStartResurrection = true;
  35. _timeLineEventLogicGroupBasic =
  36. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("die_idle");
  37. }
  38. };
  39. }
  40. else
  41. {
  42. if (combatHeroEntity.IsEnemy)
  43. {
  44. CombatController.currActiveCombat.CombatHeroController.RemoveDieHero(combatHeroEntity);
  45. }
  46. else
  47. {
  48. isStartResurrection = true;
  49. _timeLineEventLogicGroupBasic =
  50. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup("die_idle");
  51. }
  52. }
  53. // combatHeroEntity.Dispose();
  54. }
  55. protected override void ProExit()
  56. {
  57. _timeLineEventLogicGroupBasic?.BreakTimeLine(combatHeroEntity);
  58. }
  59. protected override void ProUpdate(float t)
  60. {
  61. if (isStartResurrection)
  62. {
  63. resurrectionTime += t;
  64. if (resurrectionTime > 60)
  65. {
  66. isSwitch = true;
  67. isStartResurrection = false;
  68. resurrectionTime = 0;
  69. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Resurrection);
  70. }
  71. }
  72. }
  73. }
  74. }