dapp.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. const isTestNet = window['isTestNet'];
  19. console.log('-----------开始初始化dapp!-----------');
  20. console.log('isTestNet:' + window['isTestNet']);
  21. console.log('host: ' + window['dappHost']);
  22. console.log('dappWss: ' + window['dappWss']);
  23. console.log('-----------以上是相关设置-----------');
  24. await dapp.init(isTestNet)
  25. console.log("用户当前钱包地址:" + dapp.getAddress()) // 初始化成功,得到用户当前钱包地址
  26. dapp.onAccountChanged((account) => {
  27. console.log('当前钱包地址发生变化', account.address) // 用户钱包地址即为登录账户,使用过程中用户可以切换钱包地址,即游戏要进行当前地址退出登录,新地址重新登录的操作
  28. // this.address = account.address
  29. //跳回login 页面
  30. cc.director.loadScene('Login', function () {
  31. //重新初始化信息
  32. console.log('onAccountChanged Login');
  33. dappInit();
  34. }.bind(this));
  35. })
  36. dapp.onNetworkChanged((node) => {
  37. console.log('当前钱包节点发生变化', node) // 切换网络,一般可以不处理,实际用户端一般不会切换
  38. //跳回login 页面
  39. cc.director.loadScene('Login', function () {
  40. //重新初始化信息
  41. console.log('onNetworkChanged Login');
  42. dappInit();
  43. }.bind(this));
  44. })
  45. // 获取用户信息
  46. const { err, res } = await dapp.userInfo()
  47. if (err === null) {
  48. // 返回成功,见下面消息体
  49. console.log(res)
  50. GlobalD.Dapp.UserInfo = res;
  51. // GameNet.getInstance().init(res.id, (data) => {
  52. // console.log('GameNet:' + data);
  53. // }, _self);
  54. const dappLoginData = await dapp.getLoginSign();
  55. GlobalD.Dapp.signData = dappLoginData;
  56. // console.log("dappLoginData:"+JSON.stringify(dappLoginData));
  57. // let _temp = {
  58. // "address": dappLoginData.address, // 签名地址
  59. // "id": dappLoginData.id, // 所属账户ID
  60. // "signature": dappLoginData.signature, // 签名文本
  61. // "timestamp": dappLoginData.timestamp // 签名时间戳,需要在1分钟内完成验签,否则本次签名失效
  62. // };
  63. // let _temp = {
  64. // "address": "TDw6xsVnDJWsdRBLkWAwXbv4hE2X2JQs5z", // 签名地址
  65. // "id": 1, // 所属账户ID
  66. // "signature": "0x09fda37fcad4a9bb7b72f652323881a33847be3a44e4403c7a576b3383df30ec6e5e256f28fbdbac5eb0642f304f331783f36d70b5e6fd576818bc42e14624191c", // 签名文本
  67. // "timestamp": 1641279989 // 签名时间戳,需要在1分钟内完成验签,否则本次签名失效
  68. // };
  69. utils.post(utils.api.loginTokenAndVerification, dappLoginData, (res, value) => {
  70. // console.log("loginTokenAndVerification========>", _temp);
  71. console.log(res, value);
  72. if (value.code == 0) {
  73. /** 登录成功获取token */
  74. utils.setToken(value.data.token);
  75. /** 登录时候会获取一次游戏端的 userInfo ,后续可以通过userInfo接口获取 */
  76. GlobalD.UserInfo = value.data.userInfo;
  77. /** 推送信息 */
  78. utils.get(utils.api.playerPullInfo, {}, (res, playerPullInfoTemp) => {
  79. let _playerData = JSON.parse(playerPullInfoTemp.data.playerData);
  80. //记录读取的数据到内存里面
  81. // 正常游戏
  82. userData.readData = _playerData;
  83. //跳转游戏
  84. cc.find("Canvas").getComponent("Login").loginButton();
  85. utils.init(GlobalD.Dapp.UserInfo.id, (data) => {
  86. console.log('utils ws:' + data);
  87. }, _self);
  88. })
  89. //需要提前拉取一下土地配置,用于初始化地图土地
  90. utils.get(utils.api.landConfig, {}, (res, value) => {
  91. if(0 === value.code){
  92. GlobalD.ConfigLand = value.data;
  93. }else{
  94. console.warn("未能读取到config土地?");
  95. }
  96. })
  97. } else {
  98. console.log(res, value);
  99. }
  100. })
  101. // utils.get(utils.api.loginToken, { loginId: GlobalD.Dapp.UserInfo.id }, (res, value) => {
  102. // if (value.code == 0) {
  103. // /** 登录成功获取token */
  104. // utils.setToken(value.data.token);
  105. // /** 推送信息 */
  106. // utils.get(utils.api.playerPullInfo, {}, (res, playerPullInfoTemp) => {
  107. // let _playerData = JSON.parse(playerPullInfoTemp.data.playerData);
  108. // //记录读取的数据到内存里面
  109. // // 正常游戏
  110. // userData.readData = _playerData;
  111. // //跳转游戏
  112. // cc.find("Canvas").getComponent("Login").loginButton();
  113. // // GameNet.getInstance().init(GlobalD.Dapp.UserInfo.id, (data) => {
  114. // // console.log('GameNet:' + data);
  115. // // }, _self);
  116. // utils.init(GlobalD.Dapp.UserInfo.id, (data) => {
  117. // console.log('utils ws:' + data);
  118. // }, _self);
  119. // })
  120. // } else {
  121. // console.log(res, value);
  122. // }
  123. // })
  124. } else {
  125. //TODO 服务错误
  126. console.log("dappInit userInfo 错误");
  127. console.log(err)
  128. }
  129. // try {
  130. // const data = await dapp.getLoginSign()
  131. // console.log(data)
  132. // // this.signData = JSON.stringify(data)
  133. // } catch (err) {
  134. // console.log(err)
  135. // alert('为了避免游戏资产被人乱用,还是校验下身份再进入游戏吧')
  136. // }
  137. } catch (err) {
  138. console.log('catch到的错误:' + err) // 初始化失败,运行环境不是钱包环境
  139. }
  140. }
  141. //初始化调用 dappInit;
  142. // dappInit();
  143. utils.get(utils.api.loginToken, { loginId: 4 }, (res, value) => {
  144. console.log(res, value);
  145. if (value.code == 0) {
  146. /** 登录成功获取token */
  147. utils.setToken(value.data.token);
  148. /** 登录时候会获取一次游戏端的 userInfo ,后续可以通过userInfo接口获取 */
  149. GlobalD.UserInfo = value.data.userInfo;
  150. /** 推送信息 */
  151. utils.get(utils.api.playerPullInfo, {}, (res, playerPullInfoTemp) => {
  152. let _playerData = JSON.parse(playerPullInfoTemp.data.playerData);
  153. //记录读取的数据到内存里面
  154. // 正常游戏
  155. userData.readData = _playerData;
  156. //跳转游戏
  157. cc.find("Canvas").getComponent("Login").loginButton();
  158. utils.init(4, (data) => {
  159. console.log('utils ws:' + data);
  160. }, _self);
  161. })
  162. //需要提前拉取一下土地配置,用于初始化地图土地
  163. utils.get(utils.api.landConfig, {}, (res, value) => {
  164. if(0 === value.code){
  165. GlobalD.ConfigLand = value.data;
  166. }else{
  167. console.warn("未能读取到config土地?");
  168. }
  169. })
  170. } else {
  171. console.log(res, value);
  172. }
  173. })
  174. },
  175. start() {
  176. },
  177. // update (dt) {},
  178. });