LogicBattleFieldStateBossIntro.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using UnityEngine;
  2. using System.Collections;
  3. /// <summary>
  4. /// Boss出场阶段
  5. /// </summary>
  6. public class LogicBattleFieldStateBossIntro : LogicBattleFieldState
  7. {
  8. public static LogicBattleFieldStateBossIntro Creator(LogicBattleField field)
  9. {
  10. return new LogicBattleFieldStateBossIntro(field);
  11. }
  12. float uiShowTime = 0;
  13. float duration = 0;
  14. bool openUI = false;
  15. ulong bossId = 0;
  16. public LogicBattleFieldStateBossIntro(LogicBattleField field)
  17. : base(field, LogicBattleFieldStateType.BossIntro)
  18. {
  19. }
  20. public override void OnEnter()
  21. {
  22. ForceIdle();
  23. for (int idx =0; idx < mField.Fighters.Count; idx++)
  24. {
  25. if (mField.Fighters[idx].IsBoss)
  26. {
  27. bossId = mField.Fighters[idx].InstanceId;
  28. break;
  29. }
  30. }
  31. openUI = false;
  32. uiShowTime = mField.BattleInfo.ShowBossIntroUITime;
  33. duration = mField.BattleInfo.ShowBossIntroDuration;
  34. BattleMgr.Instance.EnterBossIntro();
  35. }
  36. public override void OnLeave()
  37. {
  38. BattleMgr.Instance.ExitBossIntro();
  39. }
  40. public override void Update(float deltaTime)
  41. {
  42. uiShowTime -= deltaTime;
  43. duration -= deltaTime;
  44. if(duration <=0)
  45. {
  46. ChangeState(LogicBattleFieldStateType.Fighting);
  47. }
  48. else
  49. {
  50. if (uiShowTime <= 0 && !openUI)
  51. {
  52. UIMgr.Instance.Open(UIPageIDs.PAGE_ID_BOSS_INTRO, bossId);
  53. openUI = true;
  54. }
  55. mField.Battle.FighterMgr.FixedUpdate(deltaTime);
  56. }
  57. }
  58. public override void OnDataChanged()
  59. {
  60. }
  61. void ForceIdle()
  62. {
  63. for (int idx = 0; idx < mField.TeamFighters.Count;idx++)
  64. {
  65. mField.TeamFighters[idx].ForceIdle();
  66. }
  67. }
  68. }