| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- // import gameToast from "../Network/gameToast"
- import utils from "../Network/netUtils";
- cc.Class({
- extends: cc.Component,
- properties: {
- gameToastPrefab: cc.Prefab
- },
- // LIFE-CYCLE CALLBACKS:
- onLoad() {
- // cc.view.enableAutoFullScreen(false);
- cc.game.addPersistRootNode(this.node);
- },
- //在Login.js 里面引用
- onDappInit() {
- async function dappInit(gameToastPrefab) {
- function initGameToast(msg) {
- let _pause = cc.instantiate(gameToastPrefab);
- let _uiCamera = cc.find("Canvas/MainCamera");
- _pause.parent = _uiCamera ? _uiCamera : cc.find("Canvas");
- _pause.zIndex = 999;
- let DetailLabel = _pause.getChildByName('DetailLabel');
- DetailLabel.getComponent(cc.Label).string = msg;
- }
- let _loginNode = cc.find("Canvas").getComponent("Login");
- //初始化 dapp 和 utils 个数
- _loginNode.showLoading(10);
- const dappUrl = window['dappUrl'];
- console.log("初始化 dappInit:" + dappUrl);
- _loginNode.updateLoading(1, "初始化DApp...");
- let dapp = GlobalD.dapp = new Dapp(dappUrl); // 1
- try {
- const isTestNet = window['isTestNet'];
- // console.log('-----------开始初始化dapp!-----------');
- // console.log('isTestNet:' + window['isTestNet']);
- console.log('host: ' + window['dappHost']);
- // console.log('dappWss: ' + window['dappWss']);
- // console.log('-----------以上是相关设置-----------');
- _loginNode.updateLoading(2, "设置DApp...");
- await dapp.init(isTestNet) //2
- 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));
- })
- // 获取用户信息
- _loginNode.updateLoading(3, "获取钱包用户信息...");
- const { err, res } = await dapp.userInfo(); //3
- if (err === null) {
- // 返回成功,见下面消息体
- // console.log(res)
- GlobalD.Dapp.UserInfo = res;
- //测试
- // GlobalD.Dapp.UserInfo.agent_level = 2;
- // GameNet.getInstance().init(res.id, (data) => {
- // console.log('GameNet:' + data);
- // }, _self);
- _loginNode.updateLoading(4, "获取钱包用户签名...");
- const dappLoginData = await dapp.getLoginSign(); //4
- GlobalD.Dapp.signData = 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分钟内完成验签,否则本次签名失效
- // };
- // console.log("loginTokenAndVerification========>", new Date());
- _loginNode.updateLoading(5, "登录验证中...");
- utils.post(utils.api.loginTokenAndVerification, dappLoginData, (flag, value) => { //5
- // console.log("loginTokenAndVerification========>", value, new Date());
- console.log(value.data.token)
- if (flag && 0 === value.code && value.flag) {
- // console.log("login pass1:" + flag + '-' + value.code + '-' + value.msg);
- /** 登录成功获取token */
- utils.setToken(value.data.token);
- /** 获取一个游戏的设置数据 */
- GlobalD.GameSetting = value.data.gameSetting;
- /** 登录时候会获取一次游戏端的 userInfo ,后续可以通过userInfo接口获取 */
- GlobalD.UserInfo = value.data.userInfo;
- /** 新增userInto 的 attribute */
- GlobalD.PlayerAttribute = value.data.playerAttribute;
- // console.log("login pass2:" + flag + '-' + value.code + '-' + value.msg);
- /** 推送信息 */
- _loginNode.updateLoading(6, "获取游戏用户信息...");
- utils.get(utils.api.playerPullInfo, {}, (flag, playerPullInfoTemp) => { //6
- // console.log("playerPullInfo pass1:" + flag + '-' + value.code + '-' + value.msg);
- if (flag && 0 === value.code && value.flag) {
- // console.log("playerPullInfo pass2:" + flag + '-' + value.code + '-' + value.msg);
- //记录读取的数据到内存里面
- // 正常游戏
- console.log("playerPullInfoTemp:", playerPullInfoTemp);
- userData.readData = playerPullInfoTemp.data;
- // utils.init(GlobalD.Dapp.UserInfo.id, (data) => {
- // console.log('utils ws:' + data);
- // }, _self);
- //需要提前拉取一下土地配置,用于初始化地图土地
- // console.log("playerPullInfo pass3:" + flag + '-' + value.code + '-' + value.msg);
- _loginNode.updateLoading(7, "获取游戏土地信息...");
- utils.get(utils.api.landConfig, {}, (flag, value) => { //7
- // console.log("landConfig pass1:" + flag + '-' + value.code + '-' + value.msg);
- if (flag && 0 === value.code && value.flag) {
- GlobalD.ConfigLand = value.data;
- // console.log("landConfig pass2:" + flag + '-' + value.code + '-' + value.msg);
- _loginNode.updateLoading(8, "获取玩家土地信息...");
- utils.get(utils.api.userLandList, {}, (flag, value) => { //8
- // console.log("userLandList pass1:" + flag + '-' + value.code + '-' + value.msg);
- if (flag && 0 === value.code && value.flag) {
- GlobalD.UserLeaseLand = value.data;
- // console.log("userLandList pass2:" + flag + '-' + value.code + '-' + value.msg);
- //获取土地等级配置
- _loginNode.updateLoading(9, "获取土地等级信息...");
- utils.get(utils.api.getLevel, {}, (flag, value) => { //9
- // console.log("获取土地", flag, value);
- if (flag && 0 === value.code && value.flag && null != value.data) {
- GlobalD.ConfigLevel = value.data;
- _loginNode.updateLoading(10, "初始化租赁信息...");
- utils.get(utils.api.getAnimalTimes, {}, (flag, value) => { //10
- // console.log("getAnimalTimes", flag, value);
- if (flag && 0 === value.code && value.flag) {
- GlobalD.animalTimes = value.data;
- _loginNode.makePreloadScene();
- } else {
- console.error("读取到Times错误?");
- initGameToast(value.msg);
- }
- })
- } else {
- console.error("读取到土地等级配置错误?");
- initGameToast(value.msg);
- }
- })
- //跳转游戏
- // cc.find("Canvas").getComponent("Login").loginButton();
- // cc.loader.loadRes("prefab/gameToast", (err, texture) => {
- // let _pause = cc.instantiate(texture);
- // let _uiCamera = cc.find("Canvas/MainCamera");
- // _pause.parent = _uiCamera ? _uiCamera : cc.find("Canvas");
- // _pause.zIndex = 999;
- // let DetailLabel = _pause.getChildByName('DetailLabel');
- // DetailLabel.getComponent(cc.Label).string = "进入游戏中..";
- // cc.director.loadScene('MyCityScene - 004');
- // });
- } else {
- initGameToast(value.msg);
- console.error("读取到用户的土地错误?");
- }
- })
- } else {
- initGameToast(value.msg);
- console.error("未能读取到config土地?");
- }
- })
- } else {
- console.error(flag, value);
- initGameToast("拉取用户信息失败,重新刷新进入游戏!");
- }
- })
- } else {
- console.error(flag, value);
- initGameToast("登录校验信息失败,重新刷新进入游戏!");
- }
- })
- } else {
- //TODO 服务错误
- console.error("dappInit userInfo 错误:" + err);
- initGameToast("获取链上用户信息失败,请刷新游戏!");
- }
- } catch (err) {
- console.error('catch到的错误:' + err) // 初始化失败,运行环境不是钱包环境
- initGameToast(err);
- }
- }
- dappInit(this.gameToastPrefab);
- }
- });
|