CombatHeroDieState.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. public CombatHeroDieState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
  11. {
  12. }
  13. public override bool IsSwitch(IState nextState)
  14. {
  15. return isSwitch;
  16. }
  17. protected override void ProEnter()
  18. {
  19. isSwitch = false;
  20. resurrectionTime = 0;
  21. TimeLineEventLogicGroupBasic timeLineEventLogicGroup =
  22. combatHeroEntity.combatHeroTimeLineControl.TimeLineData
  23. .GetTimeLineEventLogicGroup<TimeLineEventLogicGroupBasic>("die", null);
  24. if (timeLineEventLogicGroup != null)
  25. {
  26. timeLineEventLogicGroup.SetCombatInfo(combatHeroEntity, null, null, new TriggerData(), null);
  27. timeLineEventLogicGroup.TimeLineUpdateEnd = delegate
  28. {
  29. if (combatHeroEntity.IsEnemy)
  30. {
  31. CombatController.currActiveCombat.CombatHeroController.RemoveDieHero(combatHeroEntity);
  32. }
  33. else
  34. {
  35. isStartResurrection = true;
  36. }
  37. };
  38. combatHeroEntity.combatHeroTimeLineControl.AddEventLogicGroup(timeLineEventLogicGroup);
  39. }
  40. else
  41. {
  42. if (combatHeroEntity.IsEnemy)
  43. {
  44. CombatController.currActiveCombat.CombatHeroController.RemoveDieHero(combatHeroEntity);
  45. }
  46. else
  47. {
  48. isStartResurrection = true;
  49. }
  50. }
  51. // combatHeroEntity.Dispose();
  52. }
  53. protected override void ProUpdate(float t)
  54. {
  55. if (isStartResurrection)
  56. {
  57. resurrectionTime += t;
  58. if (resurrectionTime > 10)
  59. {
  60. isSwitch = true;
  61. isStartResurrection = false;
  62. resurrectionTime = 0;
  63. combatHeroEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Resurrection);
  64. }
  65. }
  66. }
  67. }
  68. }