import { _decorator, Component, Node, Label, Sprite, SpriteFrame, ImageAsset, Texture2D, Animation } from 'cc'; import { DataSystem } from '../core/data/DataSystem'; import { Http, HttpResponseCode } from '../core/net/Http'; import { ResourceLoader } from '../core/resourceManager/ResourceLoader'; import { OpenWindow } from '../core/ui/window/OpenWindow'; import { WindowOpenMode } from '../core/ui/window/WindowOpenMode'; import { WindowSystem } from '../core/ui/window/WindowSystem'; import { ConfigData } from '../data/ConfigData'; import { ISJSB, platform } from '../data/jsb/platform'; import { UserData } from '../data/UserData'; import { ReportThinking } from '../ReportThinking'; import { GodTowerData, MemberInfoData } from './GodTowerData'; const { ccclass, property, requireComponent } = _decorator; /** * 神台武将 */ @ccclass('GodTowerHero') @requireComponent(ResourceLoader) @requireComponent(Http) export class GodTowerHero extends Component { @property({ type: Sprite, tooltip: "神将图片" }) roleImg: Sprite; @property({ type: Node, tooltip: "好友头像组" }) headGroup: Node; @property({ type: Sprite, tooltip: "好友头像" }) friendHead: Sprite; @property({ type: Label, tooltip: "好友名称" }) friendName: Label; @property({ type: Label, tooltip: "好友贡献" }) contribute: Label; @property({ type: Node, tooltip: "奖励信息组" }) giftGroup: Node; @property({ type: Label, tooltip: "奖励信息" }) giftNum: Label; @property({ type: Animation, tooltip: "神将台动画" }) animation: Animation; @property({ tooltip: "是否播放动画" }) isPlayAaimation: Boolean = true; userInfoWin: OpenWindow; public data: any; private friednLv: number = 0; start() { if (this.isPlayAaimation) { this.scheduleOnce(() => { this.animation.play(); }, Math.random()); } } public async onInvite() { //邀请 let result = await this.getComponent(Http).send("/api/app/share", {}); if (result && result.code == HttpResponseCode.Success) { ReportThinking.invite(); platform.wxShare(result.data.url, result.data.title, result.data.descroption); } else { WindowSystem.showTips("分享信息获取失败,请稍后再试"); } } public async selectFriendInfo() { WindowSystem.open("prefabs/ui/godTower/friendInfo", WindowOpenMode.NotCloseAndCover, [{ friednLv: this.friednLv, data: this.data }]); } public async setData(data?: MemberInfoData, friendLv?: number) { if (data) { this.friednLv = friendLv; this.data = data; this.headGroup.active = true; this.contribute.node.active = true; this.roleImg.node.active = true; this.data.totalRevenueAmount = this.data.totalRevenueAmount || 0; this.contribute.string = '总贡献:' + this.data.totalRevenueAmount.toFixed(0); this.giftGroup.active = this.data.revenueAmount > 0; this.data.revenueAmount = this.data.revenueAmount || 0; this.giftNum.string = this.data.revenueAmount.toFixed(0); if (ISJSB() && data.avatar) { let img = await this.getComponent(ResourceLoader).loadRemote(data.avatar, { ext: ".png" }); const spriteFrame = new SpriteFrame(); const texture = new Texture2D(); texture.image = img; spriteFrame.texture = texture; this.friendHead.spriteFrame = spriteFrame; } this.friendName.string = this.data.nickname; if (data.heroID) { let hero_res = DataSystem.getData(ConfigData).get('general')[data.heroID].hero_res; this.roleImg.spriteFrame = await this.getComponent(ResourceLoader).load(`images/general/texture/hero_img/${hero_res}/spriteFrame`, SpriteFrame); } } else { this.headGroup.active = false; this.contribute.node.active = false; } } //领取贡献 private async getContribute() { let result = await this.getComponent(Http).send("/api/fission/ReceiveFission", { receiveUserID: this.data.userID }); if (result && result.code == HttpResponseCode.Success) { DataSystem.getData(UserData).contribution += result.data.addTotalContribution; let infoData: GodTowerData = DataSystem.getData(GodTowerData); for (let i = 1; i < 6; i++) { let members = infoData[`g${i}Members`]; for (let j = 0; j < members.length; j++) { if (this.data.userID == members[j].userID && members[j].revenueAmount) { members[j].revenueAmount = 0; break; } } infoData[`g${i}Members`] = members; } WindowSystem.showTips('贡献领取成功'); this.giftGroup.active = false; } } }