LogicBattleFieldStateFailed.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. public class LogicBattleFieldStateFailed : LogicBattleFieldState
  5. {
  6. public static LogicBattleFieldState Creator (LogicBattleField field)
  7. {
  8. return new LogicBattleFieldStateFailed (field);
  9. }
  10. public LogicBattleFieldStateFailed (LogicBattleField field)
  11. : base (field, LogicBattleFieldStateType.Failed)
  12. {
  13. }
  14. float delayTime = 3;
  15. public override void OnEnter ()
  16. {
  17. PlayExitAnim();
  18. if (mField.killBoss)
  19. {
  20. delayTime = mField.BattleInfo.BossDelayEndTime;
  21. }
  22. else
  23. {
  24. delayTime = mField.BattleInfo.MonsterDelayEndTime;
  25. }
  26. //DebugHelper.LogError("delayTime:"+ delayTime);
  27. }
  28. public override void OnLeave ()
  29. {
  30. Dispose();
  31. }
  32. public override void Update (float deltaTime)
  33. {
  34. delayTime -= deltaTime;
  35. if (delayTime <= 0)
  36. {
  37. ChangeState(LogicBattleFieldStateType.End);
  38. }
  39. }
  40. public override void OnDataChanged()
  41. {
  42. }
  43. void PlayExitAnim()
  44. {
  45. List<Fighter> fighters = mField.Fighters;
  46. for (int i = 0; i < fighters.Count; i++)
  47. {
  48. Fighter fighter = fighters[i];
  49. if (fighter.IsAlive)
  50. {
  51. fighter.ForceIdle();
  52. //fighter.StateData.PlayAnim("f_exit");
  53. }
  54. }
  55. }
  56. void Dispose()
  57. { //刪除存活的敌方
  58. List<Fighter> fighters = mField.Fighters;
  59. for (int i = fighters.Count -1; i>=0 ; i--) {
  60. Fighter fighter = fighters[i];
  61. if (fighter.IsTeamMember)//如果非正常失败 角色没有死亡 会被删除 后续无法复活
  62. continue;
  63. if (fighter.IsAlive)
  64. {
  65. fighter.Dispose();
  66. }
  67. }
  68. }
  69. }