123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- import { _decorator, Component, Node } from "cc";
- import PogHttp, { PogLoginResp } from "./net/PogHttp";
- import { WalletManager } from "./web3/WalletManager";
- import { director } from "cc";
- import BaseUI from "./base/BaseUI";
- import { WS } from "./net/WS";
- import { ProgressBar } from "cc";
- import LoginM from "./mgr/LoginM";
- import AB from "./base/AB";
- import ConfigM from "./api/ConfigM";
- import WsM from "./api/WsM";
- import UserM from "./api/UserM";
- import Utils from "./utils/Utils";
- import { LanguageManager } from "./utils/LanguageManager";
- import { DEBUG } from "cc/env";
- import { DebugM } from "./mgr/DebugM";
- import { isValid } from "cc";
- const { ccclass, property } = _decorator;
- @ccclass("Loading")
- export class Loading extends BaseUI {
- showLoginByWalletButton() {
- if (!isValid(this.node)) {
- return;
- }
- this.FindNode("btn_login").active = true;
- }
- private static _ins: Loading;
- public static get ins(): Loading {
- return Loading._ins;
- }
- Q_Click_Login() {
- // this.FindNode("btn_login").active = false;
- window.location.reload();
- // WalletManager.ins.open();
- }
- private LoadingEnable: boolean = true;
- public async U(text: string, progress: number) {
- const progressBar = Loading.ins.progressBar;
- await Loading.ins.setText("lbl_progress_info", text);
- let fromProgress = progressBar.progress;
- let toProgress = progress;
- if (fromProgress >= toProgress) {
- return;
- }
- let duration = Math.random() * 0.5 + 0.01;
- let elapsed = 0;
- let deltaTime = 0.01;
- while (elapsed < duration && this.LoadingEnable) {
- elapsed += deltaTime;
- let t = elapsed / duration;
- let progress = fromProgress + (toProgress - fromProgress) * t;
- if (!progressBar) {
- console.warn("progressBar is null", text, progress);
- return;
- }
- progressBar.progress = progress;
- let pp = progress * 100;
- if (pp > 100) {
- pp = 100;
- }
- pp = Math.floor(pp);
- await Loading.ins.setText("lbl_progress_value", pp + "%");
- await new Promise((resolve) => setTimeout(resolve, 10));
- }
- }
- private progressBar: ProgressBar;
- protected async onLoad(): Promise<void> {
- let self = this;
- DebugM.ins.init();
- self.progressBar = self.FindAs("ProgressBar", ProgressBar);
- self.progressBar.progress = 0;
- self.FindNode("btn_login").active = false;
- self.FindNode("btn_retry").active = false;
- this.setText("lbl_version_info", ConfigM.ins.getVersionText());
- LanguageManager.switchLanguage("en");
- await this.login();
- }
- public async loginFailed(errorMsg:string) {
- let self = this;
- WalletManager.ins.disconnect();
- await this.U("Login failed..."+errorMsg, 1);
- if (PogHttp.ins.lastError) {
- await this.U(PogHttp.ins.lastError, 1);
- }
- self.FindNode("btn_retry").active = true;
- }
- protected onDestroy(): void {
- this.LoadingEnable = false;
- Loading._ins = null;
- }
- async login() {
- Loading._ins = this;
- // new window["VConsole"]();
- let self = this;
- setTimeout(() => {
- self.showLoginByWalletButton()
- }, 30 * 1000);
-
-
- let result = await LoginM.ins.login();
- console.warn("result", result);
- if (result) {
- await this.onLoginSuccess(result);
- } else {
- await this.loginFailed("server result null");
- }
- }
- async onLoginSuccess(res: PogLoginResp) {
- let self = this;
- if (!res) {
- await this.loginFailed("server result null");
- self.FindNode("btn_retry").active = true;
- return;
- }
- await self.U("Logging Success...", 0.7);
- await new Promise((resolve) => setTimeout(resolve, 10));
- let config = await ConfigM.ins.loadConfig();
- if (!config) {
- self.U("Loading config failed...", 1);
- await this.loginFailed("server config null");
- return;
- }
- self.U("Begin loading assets...", 0.7);
- await AB.ins.preLoad();
- self.U("Loading assets...", 0.8);
- let ab = await AB.ins.loadInLoading();
- await new Promise((resolve) => setTimeout(resolve, 10));
- self.U("Loading Assets success...", 0.8);
- let connectResult = await WS.ins.connect(res.wsUrl, res.token);
- if (!connectResult) {
- this.U("Connect websocket failed...", 1);
- await this.loginFailed("Connect websocket failed...");
- return;
- }
- await new Promise((resolve) => setTimeout(resolve, 300));
- await self.U("Get user info...", 0.8);
- let userInfo = await UserM.ins.userInfo();
- setTimeout(() => {
- if (Loading.ins != null) {
- Loading.ins.showLoginByWalletButton();
- }
- }, 5000);
- if (!userInfo) {
- this.U("Get user info failed...", 1);
- await this.loginFailed("Get user info failed...");
- return;
- }
- await self.U("Entering hall...", 1);
- await new Promise((resolve) => setTimeout(resolve, 30));
- director.loadScene("hall");
- }
- showLoading(arg0: boolean) {}
- }
|