WalletPageMain.ts 5.6 KB

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