GameOverPanel.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. namespace WildAttack
  7. {
  8. /// <summary>
  9. /// 游戏结束界面
  10. /// </summary>
  11. public class GameOverPanel : MonoBehaviour
  12. {
  13. #region Members
  14. [SerializeField] Image img_gameOver;
  15. [SerializeField] Button btn_restart;
  16. [SerializeField] Button btn_back;
  17. [SerializeField] Text text_restart;
  18. [SerializeField] Text text_back;
  19. [SerializeField] Text text_highScoreTitle;
  20. [SerializeField] Text text_highScore;
  21. [SerializeField] Text text_currScoreTitle;
  22. [SerializeField] Text text_currScore;
  23. [SerializeField] Text text_endGame;
  24. #endregion
  25. #region Lifecycle
  26. // Start is called before the first frame update
  27. void Start()
  28. {
  29. RegisterEvent();
  30. }
  31. void OnEnable()
  32. {
  33. SimulateMouseController.ins?.AddOpenLocker(this);
  34. }
  35. void OnDisable()
  36. {
  37. SimulateMouseController.ins?.RemoveOpenLocker(this);
  38. }
  39. #endregion
  40. #region ButtonClickEvent
  41. /// <summary>
  42. /// 注册btn监听
  43. /// </summary>
  44. private void RegisterEvent()
  45. {
  46. btn_restart.onClick.AddListener(OnBtnRestartClick);
  47. btn_back.onClick.AddListener(OnBtnBackClick);
  48. }
  49. /// <summary>
  50. ///点击 不玩了, 退出
  51. /// </summary>
  52. private void OnBtnBackClick()
  53. {
  54. //#if UNITY_EDITOR
  55. // UnityEditor.EditorApplication.isPlaying = false;
  56. //#else
  57. // Application.Quit();
  58. //#endif
  59. AudioMgr.ins.PlayBtn();
  60. //退出按钮时候上传一次分数
  61. GameMananger.GetInstance().OnUploadScore();
  62. UserGameAnalyse1.Instance.showResultView(() => {
  63. UnityEngine.SceneManagement.SceneManager.LoadScene("Home", UnityEngine.SceneManagement.LoadSceneMode.Single);
  64. });
  65. }
  66. /// <summary>
  67. /// 重开按钮
  68. /// </summary>
  69. private void OnBtnRestartClick()
  70. {
  71. AudioMgr.ins.PlayBtn();
  72. // 重开设置
  73. GameMananger.GetInstance().ResetMainCamera();
  74. //GameMananger.GetInstance().ResetAim();
  75. GameMananger.GetInstance().AddHp((int)GameModule.GetInstance().GetData("wallHp"));
  76. GameMananger.GetInstance().SetScore(0);
  77. // 重置enemys
  78. for (int i = EnemyManager.GetInstance().enemyList.Count - 1; i >= 0; i--)
  79. {
  80. EnemyManager.GetInstance().enemyList[i].ResetEnemy();
  81. }
  82. //道具cd 关卡重置
  83. EnemyPool.GetInstance().RecycleAll();
  84. BalloonPool.GetInstance().RecycleAll();
  85. FlotagePool.GetInstance().RecycleAll();
  86. ProcessManager.GetInstance().RestartLevel();
  87. UIManager.GetInstance().Restart();
  88. }
  89. #endregion
  90. #region Functions
  91. public void ShowGameOverPanel(bool isWin)
  92. {
  93. //text_endGame.text = StringModule.GetInstance().GetData("endGame");
  94. text_restart.text = StringModule.GetInstance().GetData("restart");
  95. text_back.text = StringModule.GetInstance().GetData("back");
  96. //text_process.text = $"{StringModule.GetInstance().GetData("wave")}:{(ProcessManager.GetInstance().CurrLevel > ProcessModule.GetInstance().processDataDic.Count ? ProcessModule.GetInstance().processDataDic.Count : ProcessManager.GetInstance().CurrLevel)} / {ProcessModule.GetInstance().processDataDic.Count}";
  97. //text_score.text = $"{StringModule.GetInstance().GetData("score")}:{GameMananger.GetInstance().TotalScore}";
  98. text_currScoreTitle.text = StringModule.GetInstance().GetData("score") + ":";
  99. text_currScore.text = GameMananger.GetInstance().TotalScore.ToString();
  100. float recordScore = 0;
  101. if (LoginMgr.myUserInfo.timeLimitGameScores.ContainsKey("WildAttack"))
  102. {
  103. recordScore = LoginMgr.myUserInfo.timeLimitGameScores["WildAttack"];
  104. }
  105. if (GameMananger.GetInstance().TotalScore > recordScore)
  106. {
  107. recordScore = GameMananger.GetInstance().TotalScore;
  108. LoginMgr.myUserInfo.timeLimitGameScores["WildAttack"] = recordScore;
  109. LoginMgr.myUserInfo.Save();
  110. }
  111. text_highScoreTitle.text = StringModule.GetInstance().GetData("highScore") + ":";
  112. text_highScore.text = recordScore.ToString();
  113. GameOverInterface.OnGameOver(GameMgr.gameType);
  114. }
  115. #endregion
  116. }
  117. }