GodTowerHero.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import { _decorator, Component, Node, Label, Sprite, SpriteFrame, ImageAsset, Texture2D, Animation } from 'cc';
  2. import { DataSystem } from '../core/data/DataSystem';
  3. import { Http, HttpResponseCode } from '../core/net/Http';
  4. import { ResourceLoader } from '../core/resourceManager/ResourceLoader';
  5. import { OpenWindow } from '../core/ui/window/OpenWindow';
  6. import { WindowOpenMode } from '../core/ui/window/WindowOpenMode';
  7. import { WindowSystem } from '../core/ui/window/WindowSystem';
  8. import { ConfigData } from '../data/ConfigData';
  9. import { ISJSB, platform } from '../data/jsb/platform';
  10. import { UserData } from '../data/UserData';
  11. import { ReportThinking } from '../ReportThinking';
  12. import { GodTowerData, MemberInfoData } from './GodTowerData';
  13. const { ccclass, property, requireComponent } = _decorator;
  14. /**
  15. * 神台武将
  16. */
  17. @ccclass('GodTowerHero')
  18. @requireComponent(ResourceLoader)
  19. @requireComponent(Http)
  20. export class GodTowerHero extends Component {
  21. @property({ type: Sprite, tooltip: "神将图片" })
  22. roleImg: Sprite;
  23. @property({ type: Node, tooltip: "好友头像组" })
  24. headGroup: Node;
  25. @property({ type: Sprite, tooltip: "好友头像" })
  26. friendHead: Sprite;
  27. @property({ type: Label, tooltip: "好友名称" })
  28. friendName: Label;
  29. @property({ type: Label, tooltip: "好友贡献" })
  30. contribute: Label;
  31. @property({ type: Node, tooltip: "奖励信息组" })
  32. giftGroup: Node;
  33. @property({ type: Label, tooltip: "奖励信息" })
  34. giftNum: Label;
  35. @property({ type: Animation, tooltip: "神将台动画" })
  36. animation: Animation;
  37. @property({ tooltip: "是否播放动画" })
  38. isPlayAaimation: Boolean = true;
  39. userInfoWin: OpenWindow;
  40. public data: any;
  41. private friednLv: number = 0;
  42. start() {
  43. if (this.isPlayAaimation) {
  44. this.scheduleOnce(() => {
  45. this.animation.play();
  46. }, Math.random());
  47. }
  48. }
  49. public async onInvite() {
  50. //邀请
  51. let result = await this.getComponent(Http).send("/api/app/share", {});
  52. if (result && result.code == HttpResponseCode.Success) {
  53. ReportThinking.invite();
  54. platform.wxShare(result.data.url, result.data.title, result.data.descroption);
  55. } else {
  56. WindowSystem.showTips("分享信息获取失败,请稍后再试");
  57. }
  58. }
  59. public async selectFriendInfo() {
  60. WindowSystem.open("prefabs/ui/godTower/friendInfo", WindowOpenMode.NotCloseAndCover, [{ friednLv: this.friednLv, data: this.data }]);
  61. }
  62. public async setData(data?: MemberInfoData, friendLv?: number) {
  63. if (data) {
  64. this.friednLv = friendLv;
  65. this.data = data;
  66. this.headGroup.active = true;
  67. this.contribute.node.active = true;
  68. this.roleImg.node.active = true;
  69. this.data.totalRevenueAmount = this.data.totalRevenueAmount || 0;
  70. this.contribute.string = '总贡献:' + this.data.totalRevenueAmount.toFixed(0);
  71. this.giftGroup.active = this.data.revenueAmount > 0;
  72. this.data.revenueAmount = this.data.revenueAmount || 0;
  73. this.giftNum.string = this.data.revenueAmount.toFixed(0);
  74. if (ISJSB() && data.avatar) {
  75. let img = await this.getComponent(ResourceLoader).loadRemote<ImageAsset>(data.avatar, { ext: ".png" });
  76. const spriteFrame = new SpriteFrame();
  77. const texture = new Texture2D();
  78. texture.image = img;
  79. spriteFrame.texture = texture;
  80. this.friendHead.spriteFrame = spriteFrame;
  81. }
  82. this.friendName.string = this.data.nickname;
  83. if (data.heroID) {
  84. let hero_res = DataSystem.getData(ConfigData).get('general')[data.heroID].hero_res;
  85. this.roleImg.spriteFrame = await this.getComponent(ResourceLoader).load(`images/general/texture/hero_img/${hero_res}/spriteFrame`, SpriteFrame);
  86. }
  87. } else {
  88. this.headGroup.active = false;
  89. this.contribute.node.active = false;
  90. }
  91. }
  92. //领取贡献
  93. private async getContribute() {
  94. let result = await this.getComponent(Http).send("/api/fission/ReceiveFission", { receiveUserID: this.data.userID });
  95. if (result && result.code == HttpResponseCode.Success) {
  96. DataSystem.getData(UserData).contribution += result.data.addTotalContribution;
  97. let infoData: GodTowerData = DataSystem.getData(GodTowerData);
  98. for (let i = 1; i < 6; i++) {
  99. let members = infoData[`g${i}Members`];
  100. for (let j = 0; j < members.length; j++) {
  101. if (this.data.userID == members[j].userID && members[j].revenueAmount) {
  102. members[j].revenueAmount = 0;
  103. break;
  104. }
  105. }
  106. infoData[`g${i}Members`] = members;
  107. }
  108. WindowSystem.showTips('贡献领取成功');
  109. this.giftGroup.active = false;
  110. }
  111. }
  112. }