dapp.js 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import GameNet from "../Network/GameNet"
  2. import utils from "../Network/netUtils";
  3. cc.Class({
  4. extends: cc.Component,
  5. properties: {
  6. },
  7. // LIFE-CYCLE CALLBACKS:
  8. onLoad() {
  9. cc.view.enableAutoFullScreen(false);
  10. cc.game.addPersistRootNode(this.node);
  11. async function dappInit() {
  12. let dapp = GlobalD.dapp = new Dapp()
  13. try {
  14. console.log('开始初始化dapp!')
  15. await dapp.init()
  16. console.log("用户当前钱包地址:" + dapp.getAddress()) // 初始化成功,得到用户当前钱包地址
  17. dapp.onAccountChanged((account) => {
  18. console.log('当前钱包地址发生变化', account.address) // 用户钱包地址即为登录账户,使用过程中用户可以切换钱包地址,即游戏要进行当前地址退出登录,新地址重新登录的操作
  19. // this.address = account.address
  20. //跳回login 页面
  21. cc.director.loadScene('Login', function () {
  22. //重新初始化信息
  23. console.log('onAccountChanged Login');
  24. dappInit();
  25. }.bind(this));
  26. })
  27. dapp.onNetworkChanged((node) => {
  28. console.log('当前钱包节点发生变化', node) // 切换网络,一般可以不处理,实际用户端一般不会切换
  29. //跳回login 页面
  30. cc.director.loadScene('Login', function () {
  31. //重新初始化信息
  32. console.log('onNetworkChanged Login');
  33. dappInit();
  34. }.bind(this));
  35. })
  36. // 获取用户信息
  37. const { err, res } = await dapp.userInfo()
  38. if (err === null) {
  39. // 返回成功,见下面消息体
  40. console.log(res)
  41. GlobalD.Dapp.UserInfo = res;
  42. GameNet.getInstance().init(res.id, (data) => {
  43. console.log('GameNet:' + data);
  44. }, self);
  45. utils.get(utils.api.loginToken, { loginId: GlobalD.Dapp.UserInfo.id }, (res, value) => {
  46. if (value.code == 0) {
  47. /** 登录成功获取token */
  48. utils.setToken(value.data.token);
  49. /** 推送信息 */
  50. utils.get(utils.api.playerPullInfo, {}, (res, playerPullInfoTemp) => {
  51. let _playerData = JSON.parse(playerPullInfoTemp.data.playerData);
  52. //记录读取的数据到内存里面
  53. // 正常游戏
  54. userData.readData = _playerData;
  55. //跳转游戏
  56. cc.find("Canvas").getComponent("Login").loginButton();
  57. })
  58. } else {
  59. console.log(res, value);
  60. }
  61. })
  62. } else {
  63. //TODO 服务错误
  64. console.log("dappInit userInfo 错误");
  65. console.log(err)
  66. }
  67. } catch (err) {
  68. console.log('catch到的错误:'+err) // 初始化失败,运行环境不是钱包环境
  69. }
  70. }
  71. //初始化调用 dappInit;
  72. dappInit();
  73. },
  74. start() {
  75. },
  76. // update (dt) {},
  77. });