dapp.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import gameToast from "../Network/gameToast"
  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. let _self = this;
  12. async function dappInit() {
  13. let dapp = GlobalD.dapp = new Dapp()
  14. // gameToast.getInstance().show("loding...",5,()=>{
  15. // console.log("finish toast!");
  16. // },_self);
  17. try {
  18. console.log('开始初始化dapp!')
  19. const isTestNet = window['isTestNet'];
  20. await dapp.init(isTestNet)
  21. console.log("用户当前钱包地址:" + dapp.getAddress()) // 初始化成功,得到用户当前钱包地址
  22. dapp.onAccountChanged((account) => {
  23. console.log('当前钱包地址发生变化', account.address) // 用户钱包地址即为登录账户,使用过程中用户可以切换钱包地址,即游戏要进行当前地址退出登录,新地址重新登录的操作
  24. // this.address = account.address
  25. //跳回login 页面
  26. cc.director.loadScene('Login', function () {
  27. //重新初始化信息
  28. console.log('onAccountChanged Login');
  29. dappInit();
  30. }.bind(this));
  31. })
  32. dapp.onNetworkChanged((node) => {
  33. console.log('当前钱包节点发生变化', node) // 切换网络,一般可以不处理,实际用户端一般不会切换
  34. //跳回login 页面
  35. cc.director.loadScene('Login', function () {
  36. //重新初始化信息
  37. console.log('onNetworkChanged Login');
  38. dappInit();
  39. }.bind(this));
  40. })
  41. // 获取用户信息
  42. const { err, res } = await dapp.userInfo()
  43. if (err === null) {
  44. // 返回成功,见下面消息体
  45. console.log(res)
  46. GlobalD.Dapp.UserInfo = res;
  47. // GameNet.getInstance().init(res.id, (data) => {
  48. // console.log('GameNet:' + data);
  49. // }, _self);
  50. utils.get(utils.api.loginToken, { loginId: GlobalD.Dapp.UserInfo.id }, (res, value) => {
  51. if (value.code == 0) {
  52. /** 登录成功获取token */
  53. utils.setToken(value.data.token);
  54. /** 推送信息 */
  55. utils.get(utils.api.playerPullInfo, {}, (res, playerPullInfoTemp) => {
  56. let _playerData = JSON.parse(playerPullInfoTemp.data.playerData);
  57. //记录读取的数据到内存里面
  58. // 正常游戏
  59. userData.readData = _playerData;
  60. //跳转游戏
  61. cc.find("Canvas").getComponent("Login").loginButton();
  62. // GameNet.getInstance().init(GlobalD.Dapp.UserInfo.id, (data) => {
  63. // console.log('GameNet:' + data);
  64. // }, _self);
  65. utils.init(GlobalD.Dapp.UserInfo.id, (data) => {
  66. console.log('utils ws:' + data);
  67. }, _self);
  68. })
  69. } else {
  70. console.log(res, value);
  71. }
  72. })
  73. } else {
  74. //TODO 服务错误
  75. console.log("dappInit userInfo 错误");
  76. console.log(err)
  77. }
  78. // try {
  79. // const data = await dapp.getLoginSign()
  80. // console.log(data)
  81. // // this.signData = JSON.stringify(data)
  82. // } catch (err) {
  83. // console.log(err)
  84. // alert('为了避免游戏资产被人乱用,还是校验下身份再进入游戏吧')
  85. // }
  86. } catch (err) {
  87. console.log('catch到的错误:' + err) // 初始化失败,运行环境不是钱包环境
  88. }
  89. }
  90. //初始化调用 dappInit;
  91. dappInit();
  92. },
  93. start() {
  94. },
  95. // update (dt) {},
  96. });