UserInfo.ts 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { _decorator, Component, Node, Sprite, Label, ImageAsset, SpriteFrame, Texture2D } from 'cc';
  2. import { DataSystem } from '../core/data/DataSystem';
  3. import { ResourceLoader } from '../core/resourceManager/ResourceLoader';
  4. import { WindowOpenMode } from '../core/ui/window/WindowOpenMode';
  5. import { WindowSystem } from '../core/ui/window/WindowSystem';
  6. import { ConfigData } from '../data/ConfigData';
  7. import { ISJSB } from '../data/jsb/platform';
  8. import { UserData } from '../data/UserData';
  9. import { LevelBonusData } from '../levelBonus/LevelBonusData';
  10. const { ccclass, property, requireComponent } = _decorator;
  11. /**用户数据 */
  12. @ccclass('UserInfo')
  13. @requireComponent(ResourceLoader)
  14. export class UserInfo extends Component {
  15. @property({ type: Sprite, tooltip: "头像" }) headSprige: Sprite;
  16. @property({ type: Label, tooltip: "红包币" }) bonusLabel: Label;
  17. @property({ type: Label, tooltip: "元宝" }) diamondLabel: Label;
  18. @property({ type: Label, tooltip: "粮草" }) moneyLabel: Label;
  19. @property({ type: Label, tooltip: "粮草" }) moneySpeedLabel: Label;
  20. @property({ type: Label, tooltip: "通关红包数量" }) redPacketNumLabel: Label;
  21. @property({ type: Node, tooltip: "通关红包气泡节点" }) redPacketNode: Node;
  22. private userData: UserData;
  23. start() {
  24. this.userData = DataSystem.getData(UserData);
  25. this.setAvator();
  26. this.setDiamond();
  27. this.setMoneySpeed();
  28. }
  29. update() {
  30. DataSystem.watch(UserData, 'diamond') && this.setDiamond();
  31. DataSystem.watch(UserData, 'money') && this.setMoney();
  32. DataSystem.watch(UserData, 'bonus') && this.setBonus();
  33. DataSystem.watch(UserData, "level") && this.setMoneySpeed();
  34. DataSystem.watch(LevelBonusData, 'showSaveTimes') && this.setRedPacket();
  35. }
  36. private setDiamond() {
  37. this.diamondLabel.string = this.userData.diamond > 10000 ? (this.userData.diamond / 1000).toFixed(1) + "k" : this.userData.diamond + "";
  38. }
  39. private setBonus() {
  40. this.bonusLabel.string = this.userData.bonus + '≈' + (this.userData.bonus / 10000).toFixed(3) + '元';
  41. }
  42. private setMoney() {
  43. this.moneyLabel.string = this.userData.money > 10000 ? (this.userData.money / 1000).toFixed(1) + "k" : this.userData.money + "";
  44. }
  45. private async setAvator() {
  46. let avator = DataSystem.getData(UserData).avator;
  47. if (ISJSB() && avator) {
  48. let img = await await this.getComponent(ResourceLoader).loadRemote<ImageAsset>(avator, { ext: ".png" });
  49. const spriteFrame = new SpriteFrame();
  50. const texture = new Texture2D();
  51. texture.image = img;
  52. spriteFrame.texture = texture;
  53. this.headSprige.spriteFrame = spriteFrame;
  54. }
  55. }
  56. private setMoneySpeed() {
  57. if (this.userData.level) {
  58. let speed = DataSystem.getData(ConfigData)["mission"][this.userData.level]["recover"];
  59. this.moneySpeedLabel.string = '(' + speed + "点/分钟)";
  60. }
  61. }
  62. private setRedPacket() {
  63. this.redPacketNumLabel.string = DataSystem.getData(LevelBonusData).showSaveTimes + '';
  64. this.redPacketNode.active = DataSystem.getData(LevelBonusData).showSaveTimes > 0;
  65. }
  66. private openGain() {
  67. WindowSystem.open('prefabs/ui/gain/gain', WindowOpenMode.NotCloseAndCover, [{ type: 1 }]);
  68. }
  69. }