| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import { _decorator, Component, Node, Prefab } from 'cc';
- import { DataSystem } from '../../core/data/DataSystem';
- import { Http, HttpResponseCode } from '../../core/net/Http';
- import List from '../../core/ui/virtualList/List';
- import { UserHero, UserHeroData } from '../../hero/UserHeroData';
- import { HeroRewardItem } from './HeroRewardItem';
- const { ccclass, property } = _decorator;
- @ccclass('HeroRewardUI')
- export class HeroRewardUI extends Component {
- @property({ tooltip: "Http组件", type: Http })
- public http: Http;
- @property({ tooltip: "武将列表", type: List })
- public list: List;
- @property({ type: Node, displayName: "Content", tooltip: "Content" })
- content: Node = null;
- @property({ type: Prefab, displayName: "武将奖励Item预制体", tooltip: "武将奖励Item预制体" })
- heroItemPrefab: Prefab = null;
- private heroList: UserHero[];
- private heroData: any = {};
- async start() {
- await new Promise<void>(resolve => { setTimeout(() => resolve(), 300) });
- let result = await this.http.send("/api/hero/getReward");
- console.log("getReward: ", result);
- if (result && result.code == HttpResponseCode.Success) {
- console.log("success");
- this.heroData = result.data;
- } else {
- console.log("fail");
- }
- this.heroList = [];
- let userHeroData = DataSystem.getData(UserHeroData);
- //await userHeroData.pull(this.getComponent(Http));
- let tempHeroList = userHeroData.haveHeros;
- for (let i = 0; i < tempHeroList.length; i++) {
- this.heroList.push(userHeroData.get(tempHeroList[i]));
- }
- let self = this;
- this.heroList = this.heroList.sort(function (a, b) {
- let dataA = self.heroData[a.client.id] ? self.heroData[a.client.id] : null;
- let dataB = self.heroData[b.client.id] ? self.heroData[b.client.id] : null;
- let aGeted = dataA ? dataA.rewardReceived && dataA.videoRewardReceived : false;
- let bGeted = dataB ? dataB.rewardReceived && dataB.videoRewardReceived : false;
- if (aGeted == bGeted) {
- if (a.client.color == b.client.color) {
- if (a.server.star == b.server.star) {
- if (a.client.camp == b.client.camp) {
- return b.client.id - a.client.id;
- } else {
- return a.client.camp - b.client.camp;
- }
- } else {
- return b.server.star - a.server.star;
- }
- } else {
- return b.client.color - a.client.color;
- }
- } else {
- if (!bGeted) return 1;
- else return -1;
- }
- });
- this.list.numItems = this.heroList.length;
- }
- /**
- * 当列表项渲染
- * @param item 项节点
- * @param index 项索引
- */
- public onListRender(item: Node, index: number) {
- let getData = this.heroData[this.heroList[index].client.id] || null;
- let isHasRedpoint = this.heroData[this.heroList[index].client.id] && this.heroData[this.heroList[index].client.id].rewardReceived ? false : true;
- item.getComponent(HeroRewardItem).updateInfo(this.heroList[index], getData, isHasRedpoint, index);
- }
- }
|