UIGameRevive.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { _decorator } from 'cc';
  2. import { ModuleDef } from '../../scripts/ModuleDef';
  3. import { GameUILayers } from '../../scripts/GameUILayers';
  4. import { Layout_UIGameRevive } from './Layout_UIGameRevive';
  5. import { GameMgr } from '../../module_basic/scripts/GameMgr';
  6. @tgx_class(ModuleDef.GAME)
  7. export class UIGameRevive extends tgx.UIController {
  8. private _endTime = 0;
  9. constructor() {
  10. super('ui_game_revive/ui_game_revive', GameUILayers.POPUP, Layout_UIGameRevive);
  11. // + 500ms 用于延迟显示,用于消除网络延时带来的视觉误差
  12. // + 500ms used to delay display, to eliminate visual error caused by network latency
  13. this._endTime = Date.now() + GameMgr.inst.selfPlayer.reviveTime + 500;
  14. }
  15. protected onCreated(): void {
  16. }
  17. protected onUpdate(dt: number): void {
  18. if (GameMgr.inst.selfPlayer?.reviveTime <= 0) {
  19. this.close();
  20. return;
  21. }
  22. let layout = this._layout as Layout_UIGameRevive;
  23. let remainingTime = Math.ceil((this._endTime - Date.now()) / 1000);
  24. if (remainingTime < 0) {
  25. remainingTime = 0;
  26. }
  27. if (remainingTime < 60) {
  28. layout.lblTime.string = remainingTime + 's';
  29. }
  30. else {
  31. let s = remainingTime % 60;
  32. let m = Math.floor(remainingTime / 60);
  33. layout.lblTime.string = m + 'm' + s + 's';
  34. }
  35. }
  36. }