dapp.js 10 KB

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