ManageDapp.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. /**
  2. * 管理dapp相关信息
  3. */
  4. import gameToast from "../Network/gameToast"
  5. cc.Class({
  6. extends: cc.Component,
  7. properties: {
  8. avatarFarmerSprite: {
  9. default: null,
  10. tip: "默认的头像",
  11. type: cc.SpriteFrame,
  12. serializable: true,
  13. },
  14. avatarVillageSprite: {
  15. default: null,
  16. tip: "村长的头像",
  17. type: cc.SpriteFrame,
  18. serializable: true,
  19. },
  20. avatarMayorSprite: {
  21. default: null,
  22. tip: "镇长的头像",
  23. type: cc.SpriteFrame,
  24. serializable: true,
  25. },
  26. avatarNode: {
  27. default: null,
  28. type: cc.Node,
  29. serializable: true,
  30. },
  31. avatarButtonLabel: {
  32. default: null,
  33. type: cc.Label,
  34. serializable: true,
  35. },
  36. avatarTipLabel: {
  37. default: null,
  38. type: cc.Label,
  39. serializable: true,
  40. },
  41. villageTitle: {
  42. default: '任职村长',
  43. serializable: true,
  44. },
  45. villageContent: {
  46. default: '村长可获得村民50%的CNT消费.',
  47. serializable: true,
  48. },
  49. mayorTitle: {
  50. default: '任职镇长',
  51. serializable: true,
  52. },
  53. mayorContent: {
  54. default: '镇长获得村民10%的CNT,成\n为镇长之后,村长的收益不会消\n失.',
  55. serializable: true,
  56. },
  57. villageAndMayorNode: {
  58. default: null,
  59. type: cc.Node,
  60. serializable: true
  61. },
  62. ToastParent: {
  63. default: null,
  64. type: cc.Node,
  65. serializable: true
  66. },
  67. },
  68. // LIFE-CYCLE CALLBACKS:
  69. onLoad() {
  70. this.villageAndMayorScript = this.villageAndMayorNode.getComponent("villageAndMayor");
  71. },
  72. start() {
  73. /**
  74. * 用户信息初始化到头像部分
  75. *
  76. */
  77. // this.UserInfo = {
  78. // "id": 1, // 账户ID
  79. // "pid": 0, // 上级ID,0未绑定,显示可绑定邀请码的按钮
  80. // "address": "TDw6xsVnDJWsdRBLkWAwXbv4hE2X2JQs5z", // 账户地址
  81. // "invite_code": "MzhISO1Mzt", // 本人邀请码
  82. // "agent_level": 0, // 0普通用户,1 村长身份,2 镇长身份
  83. // "create_time": "2021-12-30 09:23:18",
  84. // "parent": null // 上级不存在,上级存在时,返回上级对象,属性同本消息体一致
  85. // }
  86. this.InitAvatarInfo();
  87. },
  88. InitAvatarInfo() {
  89. let agent_level = GlobalD.Dapp.UserInfo.agent_level; // 0普通用户,1 村长身份,2 镇长身份
  90. switch (agent_level) {
  91. case 0:
  92. this.avatarNode.getComponent(cc.Sprite).spriteFrame = this.avatarFarmerSprite;
  93. this.avatarButtonLabel.string = '申请村长';
  94. this.avatarTipLabel.string = '村民';
  95. break;
  96. case 1:
  97. this.avatarNode.getComponent(cc.Sprite).spriteFrame = this.avatarVillageSprite;
  98. this.avatarButtonLabel.string = '任职镇长';
  99. this.avatarTipLabel.string = '村长';
  100. break;
  101. case 2:
  102. this.avatarNode.getComponent(cc.Sprite).spriteFrame = this.avatarMayorSprite;
  103. this.avatarButtonLabel.node.active = false;
  104. this.avatarTipLabel.string = '镇长';
  105. break;
  106. }
  107. },
  108. /**
  109. * 根据按钮显示状态
  110. */
  111. onPromotionInfo() {
  112. let agent_level = GlobalD.Dapp.UserInfo.agent_level; // 0普通用户,1 村长身份,2 镇长身份
  113. switch (agent_level) {
  114. case 0:
  115. this.avatarNode.getComponent(cc.Sprite).spriteFrame = this.avatarFarmerSprite;
  116. this.villageAndMayorScript.setVillageAndMayorInfo({
  117. title: this.villageTitle, content: this.villageContent, confirmText: '申请', callback: () => {
  118. this._becomeVillageChief();
  119. this.villageAndMayorNode.active = false;
  120. }
  121. });
  122. break;
  123. case 1:
  124. this.avatarNode.getComponent(cc.Sprite).spriteFrame = this.avatarVillageSprite;
  125. this.villageAndMayorScript.setVillageAndMayorInfo({
  126. title: this.mayorTitle, content: this.mayorContent, confirmText: '任职', callback: () => {
  127. this._applyMayor();
  128. this.villageAndMayorNode.active = false;
  129. }
  130. });
  131. break;
  132. case 2:
  133. this.avatarNode.getComponent(cc.Sprite).spriteFrame = this.avatarMayorSprite;
  134. console.log("你已经不需要升级了!");
  135. break;
  136. }
  137. },
  138. _becomeVillageChief() {
  139. if (!GlobalD.dapp) {
  140. console.error("onBecomeVillageChief:dapp未初始化!");
  141. return;
  142. }
  143. GlobalD.dapp.becomeVillageChief().then((data) => {
  144. console.log("申请村长:"+ JSON.stringify(data));
  145. const [err,tx] = data;
  146. if (err === null) {
  147. console.log('申请成功:'+tx) // 申请提交成功,等待审核
  148. //成功设置村长状态,并且更新
  149. GlobalD.Dapp.UserInfo.agent_level = 1;
  150. this.InitAvatarInfo();
  151. gameToast.getInstance().show(this.ToastParent, "申请成功!", 3, () => {
  152. console.log("finish toast!");
  153. }, this);
  154. } else {
  155. console.log(err) // 申请失败
  156. gameToast.getInstance().show(this.ToastParent, err, 3, () => {
  157. console.log("finish toast!");
  158. }, this);
  159. }
  160. })
  161. // async function becomeInit() {
  162. // try {
  163. // const { err, tx } = await GlobalD.dapp.becomeVillageChief()
  164. // if (err === null) {
  165. // // TODO 成功, 任职村长需要区块确认,需要回调接口
  166. // console.log(tx) // 交易hash,唯一标识符
  167. // } else {
  168. // console.log(err)
  169. // }
  170. // } catch (err) {
  171. // console.error("申请村长:", JSON.stringify(err));
  172. // }
  173. // }
  174. // becomeInit();
  175. },
  176. _applyMayor() {
  177. if (!GlobalD.dapp) {
  178. console.error("onApplyMayor:dapp未初始化!");
  179. return;
  180. }
  181. let _self = this;
  182. GlobalD.dapp.applyMayor().then((data) => {
  183. console.log("任职镇长:", JSON.stringify(data));
  184. if (data.err === null) {
  185. console.log(data.res) // 申请提交成功,等待审核
  186. gameToast.getInstance().show(_self.ToastParent, data.res, 3, () => {
  187. console.log("finish toast!");
  188. }, _self);
  189. } else {
  190. console.log(data.err) // 申请失败
  191. gameToast.getInstance().show(_self.ToastParent, data.err, 3, () => {
  192. console.log("finish toast!");
  193. }, _self);
  194. }
  195. })
  196. }
  197. // update (dt) {},
  198. });