import gameToast from "../Network/gameToast" import utils from "../Network/netUtils"; cc.Class({ extends: cc.Component, properties: { }, // LIFE-CYCLE CALLBACKS: onLoad() { cc.view.enableAutoFullScreen(false); cc.game.addPersistRootNode(this.node); let _self = this; async function dappInit() { let dapp = GlobalD.dapp = new Dapp() // gameToast.getInstance().show("loding...",5,()=>{ // console.log("finish toast!"); // },_self); try { console.log('开始初始化dapp!') const isTestNet = window['isTestNet']; await dapp.init(isTestNet) console.log("用户当前钱包地址:" + dapp.getAddress()) // 初始化成功,得到用户当前钱包地址 dapp.onAccountChanged((account) => { console.log('当前钱包地址发生变化', account.address) // 用户钱包地址即为登录账户,使用过程中用户可以切换钱包地址,即游戏要进行当前地址退出登录,新地址重新登录的操作 // this.address = account.address //跳回login 页面 cc.director.loadScene('Login', function () { //重新初始化信息 console.log('onAccountChanged Login'); dappInit(); }.bind(this)); }) dapp.onNetworkChanged((node) => { console.log('当前钱包节点发生变化', node) // 切换网络,一般可以不处理,实际用户端一般不会切换 //跳回login 页面 cc.director.loadScene('Login', function () { //重新初始化信息 console.log('onNetworkChanged Login'); dappInit(); }.bind(this)); }) // 获取用户信息 const { err, res } = await dapp.userInfo() if (err === null) { // 返回成功,见下面消息体 console.log(res) GlobalD.Dapp.UserInfo = res; // GameNet.getInstance().init(res.id, (data) => { // console.log('GameNet:' + data); // }, _self); const dappLoginData = await dapp.getLoginSign(); GlobalD.Dapp.signData = JSON.stringify(dappLoginData) // console.log("dappLoginData:"+JSON.stringify(dappLoginData)); let _temp = { "address": dappLoginData.address, // 签名地址 "id": dappLoginData.id, // 所属账户ID "signature": dappLoginData.signature, // 签名文本 "timestamp": dappLoginData.timestamp // 签名时间戳,需要在1分钟内完成验签,否则本次签名失效 }; // let _temp = { // "address": "TDw6xsVnDJWsdRBLkWAwXbv4hE2X2JQs5z", // 签名地址 // "id": 1, // 所属账户ID // "signature": "0x09fda37fcad4a9bb7b72f652323881a33847be3a44e4403c7a576b3383df30ec6e5e256f28fbdbac5eb0642f304f331783f36d70b5e6fd576818bc42e14624191c", // 签名文本 // "timestamp": 1641279989 // 签名时间戳,需要在1分钟内完成验签,否则本次签名失效 // }; utils.post(utils.api.loginTokenAndVerification, _temp, (res, value) => { console.log("loginTokenAndVerification========>" + JSON.stringify(_temp)); console.log(res, value); }) utils.get(utils.api.loginToken, { loginId: GlobalD.Dapp.UserInfo.id }, (res, value) => { if (value.code == 0) { /** 登录成功获取token */ utils.setToken(value.data.token); /** 推送信息 */ utils.get(utils.api.playerPullInfo, {}, (res, playerPullInfoTemp) => { let _playerData = JSON.parse(playerPullInfoTemp.data.playerData); //记录读取的数据到内存里面 // 正常游戏 userData.readData = _playerData; //跳转游戏 cc.find("Canvas").getComponent("Login").loginButton(); // GameNet.getInstance().init(GlobalD.Dapp.UserInfo.id, (data) => { // console.log('GameNet:' + data); // }, _self); utils.init(GlobalD.Dapp.UserInfo.id, (data) => { console.log('utils ws:' + data); }, _self); }) } else { console.log(res, value); } }) } else { //TODO 服务错误 console.log("dappInit userInfo 错误"); console.log(err) } // try { // const data = await dapp.getLoginSign() // console.log(data) // // this.signData = JSON.stringify(data) // } catch (err) { // console.log(err) // alert('为了避免游戏资产被人乱用,还是校验下身份再进入游戏吧') // } } catch (err) { console.log('catch到的错误:' + err) // 初始化失败,运行环境不是钱包环境 } } //初始化调用 dappInit; dappInit(); }, start() { }, // update (dt) {}, });