LogicBattleFieldStatePrepare.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. //开始准备状态
  5. public class LogicBattleFieldStatePrepare : LogicBattleFieldState
  6. {
  7. public static LogicBattleFieldState Creator (LogicBattleField field)
  8. {
  9. return new LogicBattleFieldStatePrepare (field);
  10. }
  11. public LogicBattleFieldStatePrepare (LogicBattleField field)
  12. : base (field, LogicBattleFieldStateType.Prepare)
  13. {
  14. }
  15. public override void OnEnter ()
  16. {
  17. List<Fighter> fighters = mField.Battle.FighterMgr.TeamFighters;
  18. for (int idx = 0; idx < fighters.Count; idx++)
  19. {
  20. fighters[idx].ForceIdle();
  21. }
  22. }
  23. public override void OnLeave ()
  24. {
  25. }
  26. public override void Update (float deltaTime)
  27. {
  28. mField.Battle.FighterMgr.FixedUpdate(deltaTime);
  29. if (CheckBothTeamFighterReady())
  30. {
  31. ChangeState(LogicBattleFieldStateType.StartingFight);
  32. }
  33. }
  34. public override void OnDataChanged()
  35. {
  36. }
  37. bool CheckBothTeamFighterReady ()
  38. {
  39. bool hasLeft = false;
  40. bool hasRight = false;
  41. foreach (var fighter in mField.Fighters) {
  42. if (!fighter.IsIdle)
  43. return false;
  44. hasLeft |= fighter.TeamSide == eTeamType.Friend;
  45. hasRight |= fighter.TeamSide == eTeamType.Enemy;
  46. }
  47. return hasLeft && hasRight;
  48. }
  49. }