import { _decorator, Component, Node, Sprite, Label, ImageAsset, SpriteFrame, Texture2D } from 'cc'; import { DataSystem } from '../core/data/DataSystem'; import { ResourceLoader } from '../core/resourceManager/ResourceLoader'; import { WindowOpenMode } from '../core/ui/window/WindowOpenMode'; import { WindowSystem } from '../core/ui/window/WindowSystem'; import { ConfigData } from '../data/ConfigData'; import { ISJSB } from '../data/jsb/platform'; import { UserData } from '../data/UserData'; import { LevelBonusData } from '../levelBonus/LevelBonusData'; const { ccclass, property, requireComponent } = _decorator; /**用户数据 */ @ccclass('UserInfo') @requireComponent(ResourceLoader) export class UserInfo extends Component { @property({ type: Sprite, tooltip: "头像" }) headSprige: Sprite; @property({ type: Label, tooltip: "红包币" }) bonusLabel: Label; @property({ type: Label, tooltip: "元宝" }) diamondLabel: Label; @property({ type: Label, tooltip: "粮草" }) moneyLabel: Label; @property({ type: Label, tooltip: "粮草" }) moneySpeedLabel: Label; @property({ type: Label, tooltip: "通关红包数量" }) redPacketNumLabel: Label; @property({ type: Node, tooltip: "通关红包气泡节点" }) redPacketNode: Node; private userData: UserData; start() { this.userData = DataSystem.getData(UserData); this.setAvator(); this.setDiamond(); this.setMoneySpeed(); } update() { DataSystem.watch(UserData, 'diamond') && this.setDiamond(); DataSystem.watch(UserData, 'money') && this.setMoney(); DataSystem.watch(UserData, 'bonus') && this.setBonus(); DataSystem.watch(UserData, "level") && this.setMoneySpeed(); DataSystem.watch(LevelBonusData, 'showSaveTimes') && this.setRedPacket(); } private setDiamond() { this.diamondLabel.string = this.userData.diamond > 10000 ? (this.userData.diamond / 1000).toFixed(1) + "k" : this.userData.diamond + ""; } private setBonus() { this.bonusLabel.string = this.userData.bonus + '≈' + (this.userData.bonus / 10000).toFixed(3) + '元'; } private setMoney() { this.moneyLabel.string = this.userData.money > 10000 ? (this.userData.money / 1000).toFixed(1) + "k" : this.userData.money + ""; } private async setAvator() { let avator = DataSystem.getData(UserData).avator; if (ISJSB() && avator) { let img = await await this.getComponent(ResourceLoader).loadRemote(avator, { ext: ".png" }); const spriteFrame = new SpriteFrame(); const texture = new Texture2D(); texture.image = img; spriteFrame.texture = texture; this.headSprige.spriteFrame = spriteFrame; } } private setMoneySpeed() { if (this.userData.level) { let speed = DataSystem.getData(ConfigData)["mission"][this.userData.level]["recover"]; this.moneySpeedLabel.string = '(' + speed + "点/分钟)"; } } private setRedPacket() { this.redPacketNumLabel.string = DataSystem.getData(LevelBonusData).showSaveTimes + ''; this.redPacketNode.active = DataSystem.getData(LevelBonusData).showSaveTimes > 0; } private openGain() { WindowSystem.open('prefabs/ui/gain/gain', WindowOpenMode.NotCloseAndCover, [{ type: 1 }]); } }