UIMgr.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import { PageName, PanelName } from "./Constant";
  2. import UIPage from "./UIPage";
  3. import UILoadingPage from "../UI/UILoadingPage";
  4. import UIHomePage from "../UI/UIHomePage";
  5. import UIGamePage from "../UI/UIGamePage";
  6. import UIRevivePanel from "../UI/UIRevivePanel";
  7. import UIGameLoadingPage from "../UI/UIGameLoadingPage";
  8. import UIPausePanel from "../UI/UIPausePanel";
  9. import UITurntablePanel from "../UI/UITurntablePage";
  10. import UITrySkinPanel from "../UI/UITrySkinPanel";
  11. import UIWeaponLevelPanel from "../UI/UIWeaponLevelPanel";
  12. import UIUpgradePanel from "../UI/UIUpgradePanel";
  13. import UIOverPage from "../UI/UIOverPage";
  14. import UISignPanel from "../UI/UISignPage";
  15. import UITimePanel from "../UI/UITimePage";
  16. /**
  17. * UI管理类
  18. * 新增页面或者弹窗需要修改
  19. */
  20. export default class UIMgr extends cc.Component {
  21. private static _inst: UIMgr;
  22. public static get inst(): UIMgr {
  23. if (!UIMgr._inst) {
  24. UIMgr._inst = new UIMgr();
  25. }
  26. return UIMgr._inst;
  27. }
  28. private _pageDict: { [name: string]: UIPage } = {};
  29. private _panelDict: { [name: string]: UIPage } = {};
  30. public openPage(name: string) {
  31. // 防止连续多次点击页面
  32. if (this._panelDict[name] && this._panelDict[name].isOpen()) return;
  33. // 关闭所有的弹窗
  34. this.closeAllPanel();
  35. // 关闭所有的页面
  36. this.closeAllPage();
  37. // 开启界面
  38. if (this._pageDict[name] && this._pageDict[name].isValid()) {
  39. this._pageDict[name].open();
  40. } else {
  41. let page: UIPage = this._createUI(name);
  42. if (page) {
  43. this._pageDict[name] = page;
  44. page.isValid() && page.open();
  45. }
  46. }
  47. }
  48. public openPanel(name: string) {
  49. // 防止连续多次点击页面
  50. if (this._panelDict[name] && this._panelDict[name].isOpen()) return;
  51. // 开启弹窗
  52. if (this._panelDict[name] && this._panelDict[name].isValid()) {
  53. this._panelDict[name].open();
  54. } else {
  55. let panel: UIPage = this._createUI(name);
  56. if (panel) {
  57. this._panelDict[name] = panel;
  58. panel.isValid() && panel.open();
  59. }
  60. }
  61. }
  62. public closeAllPage() {
  63. // 关闭所有的页面
  64. for (let key in this._pageDict) {
  65. if (key && this._pageDict[key]) {
  66. this._pageDict[key].close();
  67. }
  68. }
  69. }
  70. public closeAllPanel() {
  71. for (let key in this._panelDict) {
  72. if (key && this._panelDict[key]) {
  73. this._panelDict[key].close();
  74. }
  75. }
  76. }
  77. public closePanel(name: string) {
  78. if (this._panelDict[name] && this._panelDict[name].isValid()) {
  79. this._panelDict[name].close();
  80. }
  81. }
  82. public _createUI(name: string) {
  83. switch (name) {
  84. case PageName.UILoadingPage: {
  85. return new UILoadingPage();
  86. }
  87. case PageName.UIHomePage: {
  88. return new UIHomePage();
  89. }
  90. case PanelName.UISignPanel: {
  91. return new UISignPanel();
  92. }
  93. case PanelName.UITurntablePanel: {
  94. return new UITurntablePanel();
  95. }
  96. case PanelName.UITimePanel: {
  97. return new UITimePanel();
  98. }
  99. case PanelName.UITrySkinPanel: {
  100. return new UITrySkinPanel();
  101. }
  102. case PanelName.UIWeaponLevelPanel: {
  103. return new UIWeaponLevelPanel();
  104. }
  105. case PageName.UIGameLoadingPage: {
  106. return new UIGameLoadingPage();
  107. }
  108. case PageName.UIGamePage: {
  109. return new UIGamePage();
  110. }
  111. case PanelName.UIPausePanel: {
  112. return new UIPausePanel();
  113. }
  114. case PanelName.UIUpgradePanel: {
  115. return new UIUpgradePanel();
  116. }
  117. case PanelName.UIRevivePanel: {
  118. return new UIRevivePanel();
  119. }
  120. case PageName.UIOverPage: {
  121. return new UIOverPage();
  122. }
  123. default: {
  124. cc.error("Can not found class " + name);
  125. return null;
  126. }
  127. }
  128. }
  129. }