HeroGroup.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { _decorator, Component, Node, UITransform, tween, Label } from 'cc';
  2. import { DataSystem } from '../core/data/DataSystem';
  3. import { WindowOpenMode } from '../core/ui/window/WindowOpenMode';
  4. import { WindowSystem } from '../core/ui/window/WindowSystem';
  5. import { GodTowerData } from './GodTowerData';
  6. import { GodTowerHero } from './GodTowerHero';
  7. const { ccclass, property } = _decorator;
  8. @ccclass('HeroGroup')
  9. export class HeroGroup extends Component {
  10. @property({ type: [Node], tooltip: "好友组" }) roleGroup: Node[] = [];
  11. @property({ type: Label, tooltip: "好友人数文本" }) friendLabel: Label;
  12. @property({ tooltip: "好友等级信息" }) friendLv: number = 0;
  13. @property({ tooltip: "好友等级信息", type: Node }) herosNode: Node;
  14. private lvStr = ["一级好友", "二级好友", "三级好友", "四级好友", "五级好友"];
  15. private data: any = [];
  16. private infoData: GodTowerData;
  17. start() {
  18. this.infoData = DataSystem.getData(GodTowerData);
  19. let uiTransform = this.herosNode.getComponent(UITransform);
  20. let w = this.friendLv > 0 ? 740 : 700;
  21. tween(uiTransform).delay(0.2).to(0.2, { width: w }).start();
  22. }
  23. update() {
  24. DataSystem.watch(GodTowerData, `g${this.friendLv + 1}Members`) && this.setData();
  25. }
  26. private setData() {
  27. this.data = this.infoData[`g${this.friendLv + 1}Members`];
  28. this.friendLabel.string = this.lvStr[this.friendLv];
  29. for (let i = 0; i < this.roleGroup.length; i++) {
  30. if (i < this.data.length) {
  31. this.roleGroup[i].getComponent(GodTowerHero).setData(this.data[i], this.friendLv);
  32. } else {
  33. this.roleGroup[i].getComponent(GodTowerHero).setData();
  34. }
  35. }
  36. }
  37. public openFriendWindow() {
  38. if (!this.data.length) {
  39. WindowSystem.showTips("还没有更多好友");
  40. return;
  41. }
  42. WindowSystem.open('prefabs/ui/godTower/friendList', WindowOpenMode.NotCloseAndCover, [this.friendLv]);
  43. }
  44. }