WalletPageMain.ts 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. import { _decorator, Component, Node, Event, Animation } from "cc";
  2. import BaseUI from "../../scripts/base/BaseUI";
  3. import { Tips } from "../../scripts/mgr/Tips";
  4. import { WalletManager } from "../../scripts/web3/WalletManager";
  5. import Utils from "../../scripts/utils/Utils";
  6. import { EM } from "../../scripts/event/EM";
  7. import { E } from "../../scripts/event/E";
  8. import { BindGameLayer } from "../layer/BindGameLayer";
  9. import { SettingsLayer } from "../layer/SettingsLayer";
  10. import { BadgeDetailLayer } from "../layer/BadgeDetailLayer";
  11. import UserM from "../../scripts/api/UserM";
  12. import { Label } from "cc";
  13. import WalletM, { BadgeDto } from "../../scripts/api/WalletM";
  14. import AB from "../../scripts/base/AB";
  15. import { SpriteFrame } from "cc";
  16. import { Sprite } from "cc";
  17. import { DebugM } from "../../scripts/mgr/DebugM";
  18. const { ccclass, property } = _decorator;
  19. @ccclass("WalletPageMain")
  20. export class WalletPageMain extends BaseUI {
  21. protected onLoad(): void {
  22. super.onLoad();
  23. let self = this;
  24. self.setTitles();
  25. self.initMyGames();
  26. }
  27. async initMyGames() {
  28. let pvzNode = this.FindNode("my_game_pvz");
  29. pvzNode.active = false;
  30. let isLinkPvz = await UserM.ins.isLinkPvz();
  31. if (isLinkPvz) {
  32. pvzNode.active = true;
  33. }
  34. }
  35. setTitles() {
  36. // this.setText("lbl_my_assets_title", Utils.setI18nLabel("Wallet.MyAssets"));
  37. this.setText("lbl_pog_tips", Utils.setI18nLabel("Wallet.POGDesc"));
  38. this.setText("lbl_my_address", Utils.setI18nLabel("Wallet.MyAddress"));
  39. this.setText("lbl_my_badges", Utils.setI18nLabel("Wallet.MyBadges"));
  40. // this.setText("lbl_my_assets", Utils.setI18nLabel("Wallet.MyAssets"));
  41. this.setText("lbl_my_games", Utils.setI18nLabel("Wallet.MyGames"));
  42. }
  43. async init(isConnected: boolean) {
  44. if (!isConnected) {
  45. return;
  46. }
  47. // let walletInfo = this.FindNode("wallet_info");
  48. // walletInfo.active = true;
  49. this.setText("lbl_pog_balance", "" + UserM.ins.getPogDisplay());
  50. let account = UserM.ins?.data?.walletAddress;
  51. if (!account) {
  52. account = "";
  53. }
  54. this.setText("lbl_user_wallet_address", Utils.formAddress(account));
  55. this.setText("lbl_tog_balance", "" + UserM.ins.getTogDisplay());
  56. let badge_rank_add_value = 0;
  57. let badge_game_pass_add_value = 0;
  58. let badge_rank_count = 0;
  59. let badge_game_pass_count = 0;
  60. this.setText("lbl_badge_count_1", badge_rank_count + "");
  61. this.setText("lbl_badge_count_2", badge_game_pass_count + "");
  62. this.FindNode("i_up1").getChildByName("value").getComponent(Label).string =
  63. badge_rank_add_value + "%";
  64. this.FindNode("i_up2").getChildByName("value").getComponent(Label).string =
  65. badge_game_pass_add_value + "%";
  66. await this.requestHomeData();
  67. }
  68. async requestHomeData() {
  69. let data = await WalletM.ins.walletHome();
  70. this.setText(
  71. "lbl_badge_count_1",
  72. this.getBadgeCount(data.badgeList, 1) + ""
  73. );
  74. this.setText(
  75. "lbl_badge_count_2",
  76. this.getBadgeCount(data.badgeList, 2) + ""
  77. );
  78. let addValue1 = this.getBadgeAddValue(data.badgeList, 1);
  79. this.FindNode("i_up1").active = addValue1 > 0;
  80. if (addValue1 > 0) {
  81. this.FindNode("i_up1")
  82. .getChildByName("value")
  83. .getComponent(Label).string = Utils.formatNumber(addValue1, 1) + "%";
  84. }
  85. let addValue2 = this.getBadgeAddValue(data.badgeList, 2);
  86. this.FindNode("i_up2").active = addValue2 > 0;
  87. if (addValue2 > 0) {
  88. this.FindNode("i_up2")
  89. .getChildByName("value")
  90. .getComponent(Label).string = Utils.formatNumber(addValue2, 1) + "%";
  91. }
  92. let topRankBadgeId = this.getTopRankBadgeId(data.badgeList);
  93. console.warn("topRankBadgeId", topRankBadgeId);
  94. if (topRankBadgeId <= 0 || topRankBadgeId > 7) {
  95. topRankBadgeId = 7;
  96. }
  97. let a = await AB.ins.loadSpriteFrame(
  98. "texture/common/grade" + topRankBadgeId + ""
  99. );
  100. let f = a as SpriteFrame;
  101. this.FindAs("icon_rank_grade", Sprite).spriteFrame = f;
  102. }
  103. private getBadgeCount(badgeList: BadgeDto[], type: number) {
  104. let count = 0;
  105. if (!badgeList) {
  106. return count;
  107. }
  108. for (let badge of badgeList) {
  109. if (badge.id != 0 && badge.type == type) {
  110. count += badge.num;
  111. }
  112. }
  113. return count;
  114. }
  115. getTopRankBadgeId(badgeList: BadgeDto[]) {
  116. let topBadgeId = 0;
  117. if (!badgeList) {
  118. return topBadgeId;
  119. }
  120. let curValue = 0;
  121. for (let badge of badgeList) {
  122. console.warn("badge", badge.id, badge.addition);
  123. if (badge.type == 1) {
  124. if (Number(badge.addition) >= curValue) {
  125. curValue = Number(badge.addition);
  126. topBadgeId = badge.id;
  127. }
  128. }
  129. }
  130. return topBadgeId;
  131. }
  132. private getBadgeAddValue(badgeList: BadgeDto[], type: number) {
  133. let value = 0;
  134. if (!badgeList) {
  135. return value;
  136. }
  137. for (let badge of badgeList) {
  138. if (badge.id != 0 && badge.type == type) {
  139. value += Number(badge.addition);
  140. }
  141. }
  142. return value;
  143. }
  144. private disConnect() {
  145. WalletManager.ins.disconnect();
  146. EM.ins.emit(E.Wallet.DISCONNECTED);
  147. window.localStorage.clear();
  148. window.location.reload();
  149. }
  150. protected onBtnClick(name: string, event: Event, customEventData: any): void {
  151. switch (name) {
  152. case "btn_disconnect_wallet":
  153. this.disConnect();
  154. break;
  155. case "btn_history":
  156. Tips.show("POG History Coming Soon");
  157. break;
  158. case "btn_copy_address":
  159. //
  160. Utils.copyText(WalletManager.ins.address);
  161. Tips.show("Address Copied");
  162. this.tryOpenConsole();
  163. // WalletManager.ins.signMessage();
  164. break;
  165. case "btn_setting":
  166. SettingsLayer.show();
  167. break;
  168. case "btn_add_game":
  169. BindGameLayer.show();
  170. break;
  171. case "btn_badge_rank":
  172. BadgeDetailLayer.show(BadgeDetailLayer.TYPE_RANK);
  173. break;
  174. case "btn_badge_game_pass":
  175. BadgeDetailLayer.show(BadgeDetailLayer.TYPE_GAME_PASS);
  176. break;
  177. }
  178. }
  179. private clickTimes: number = 0;
  180. tryOpenConsole() {
  181. this.clickTimes++;
  182. if (this.clickTimes >= 10) {
  183. this.clickTimes = 0;
  184. DebugM.ins.setDebugPeople();
  185. }
  186. let self = this;
  187. setTimeout(() => {
  188. self.clickTimes = 0;
  189. }, 3000);
  190. }
  191. }