dapp.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. const dappLoginData = await dapp.getLoginSign();
  51. GlobalD.Dapp.signData = JSON.stringify(dappLoginData)
  52. // console.log("dappLoginData:"+JSON.stringify(dappLoginData));
  53. let _temp = {
  54. "address": dappLoginData.address, // 签名地址
  55. "id": dappLoginData.id, // 所属账户ID
  56. "signature": dappLoginData.signature, // 签名文本
  57. "timestamp": dappLoginData.timestamp // 签名时间戳,需要在1分钟内完成验签,否则本次签名失效
  58. };
  59. // let _temp = {
  60. // "address": "TDw6xsVnDJWsdRBLkWAwXbv4hE2X2JQs5z", // 签名地址
  61. // "id": 1, // 所属账户ID
  62. // "signature": "0x09fda37fcad4a9bb7b72f652323881a33847be3a44e4403c7a576b3383df30ec6e5e256f28fbdbac5eb0642f304f331783f36d70b5e6fd576818bc42e14624191c", // 签名文本
  63. // "timestamp": 1641279989 // 签名时间戳,需要在1分钟内完成验签,否则本次签名失效
  64. // };
  65. utils.post(utils.api.loginTokenAndVerification, _temp, (res, value) => {
  66. console.log("loginTokenAndVerification========>" + JSON.stringify(_temp));
  67. console.log(res, value);
  68. })
  69. utils.get(utils.api.loginToken, { loginId: GlobalD.Dapp.UserInfo.id }, (res, value) => {
  70. if (value.code == 0) {
  71. /** 登录成功获取token */
  72. utils.setToken(value.data.token);
  73. /** 推送信息 */
  74. utils.get(utils.api.playerPullInfo, {}, (res, playerPullInfoTemp) => {
  75. let _playerData = JSON.parse(playerPullInfoTemp.data.playerData);
  76. //记录读取的数据到内存里面
  77. // 正常游戏
  78. userData.readData = _playerData;
  79. //跳转游戏
  80. cc.find("Canvas").getComponent("Login").loginButton();
  81. // GameNet.getInstance().init(GlobalD.Dapp.UserInfo.id, (data) => {
  82. // console.log('GameNet:' + data);
  83. // }, _self);
  84. utils.init(GlobalD.Dapp.UserInfo.id, (data) => {
  85. console.log('utils ws:' + data);
  86. }, _self);
  87. })
  88. } else {
  89. console.log(res, value);
  90. }
  91. })
  92. } else {
  93. //TODO 服务错误
  94. console.log("dappInit userInfo 错误");
  95. console.log(err)
  96. }
  97. // try {
  98. // const data = await dapp.getLoginSign()
  99. // console.log(data)
  100. // // this.signData = JSON.stringify(data)
  101. // } catch (err) {
  102. // console.log(err)
  103. // alert('为了避免游戏资产被人乱用,还是校验下身份再进入游戏吧')
  104. // }
  105. } catch (err) {
  106. console.log('catch到的错误:' + err) // 初始化失败,运行环境不是钱包环境
  107. }
  108. }
  109. //初始化调用 dappInit;
  110. dappInit();
  111. },
  112. start() {
  113. },
  114. // update (dt) {},
  115. });