| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import { _decorator, Component, Node, Toggle, PageView } from 'cc';
- import { DataSystem } from '../../core/data/DataSystem';
- import { Http } from '../../core/net/Http';
- import List from '../../core/ui/virtualList/List';
- import { ConfigData } from '../../data/ConfigData';
- import { UserData } from '../../data/UserData';
- import { BookHeroItem } from './BookHeroItem';
- import { UserHero, UserHeroData } from '../UserHeroData';
- import { WindowSystem } from '../../core/ui/window/WindowSystem';
- import { Window } from '../../core/ui/window/Window';
- import { Page } from '../../core/page/Page';
- import { FormationData } from '../formation/FormationData';
- const { ccclass, property, requireComponent } = _decorator;
- /**
- * 图鉴
- * @author 袁浩
- */
- @ccclass('Book')
- @requireComponent(Http)
- export class Book extends Component {
- @property({ tooltip: "武将列表", type: List })
- public list: List;
- private heroList: UserHero[];
- start() {
- this.loadHeros(0);
- }
- update() {
- //为了修复list的bug
- if (WindowSystem.currentWindow != this.pageview.getComponent(Window)) {
- this.list.numItems = this.heroList.length;
- }
- }
- private pageview: PageView;
- /**
- * 当图鉴页面显示
- */
- public onShow(page: Page, pageview: PageView) {
- this.pageview = pageview;
- this.loadHeros(0);
- }
- onDestroy() {
- this.pageview = null;
- }
- /**
- * 当点击阵营项
- * @param toggle
- */
- public onCamp(toggle: Toggle) {
- this.loadHeros(toggle._toggleContainer.toggleItems.indexOf(toggle));
- }
- /**
- * 根据阵营加载英雄数据并展示到UI
- * @param camp 阵营
- */
- public async loadHeros(camp: number) {
- let userHeroData = DataSystem.getData(UserHeroData);
- // await userHeroData.pull(this.getComponent(Http));
- this.heroList = [];
- //是否解锁计算
- let userData = DataSystem.getData(UserData);
- let barrack = DataSystem.getData(ConfigData).get("barrack");
- let preUnlockHeros: number[] = [];
- let preCampLv = userData.campLv;
- //已经解锁的武将
- while (true) {
- if (!barrack[preCampLv]) {
- break;
- }
- if (barrack[preCampLv].unlockHero) {
- let unlockHeros = barrack[preCampLv].unlockHero.split(",");
- for (let i = 0; i < unlockHeros.length; i++) {
- unlockHeros[i] = parseInt(unlockHeros[i]);
- }
- preUnlockHeros = preUnlockHeros.concat(unlockHeros);
- }
- preCampLv--;
- }
- //下一级解锁的武将列表
- let nextUnlockHeros: number[] = [];
- let nextCampLv = userData.campLv + 1;
- if (barrack[nextCampLv]) {
- while (true) {
- if (barrack[nextCampLv] && barrack[nextCampLv].unlockHero) {
- let nextUnlockHeroStrs = barrack[nextCampLv].unlockHero.split(",");
- for (let i = 0; i < nextUnlockHeroStrs.length; i++) {
- nextUnlockHeros.push(parseInt(nextUnlockHeroStrs[i]));
- }
- }
- if (nextUnlockHeros.length || !barrack[nextCampLv]) {
- break;
- }
- nextCampLv++;
- }
- }
- let heroList = userHeroData.haveHeros.concat(userHeroData.notHavetHeros);
- this.heroList = userHeroData.sort(heroList, camp, preUnlockHeros, nextUnlockHeros, nextCampLv);
- this.list.numItems = this.heroList.length;
- }
- /**
- * 当列表项渲染
- * @param item 项节点
- * @param index 项索引
- */
- public onListRender(item: Node, index: number) {
- item.getComponent(BookHeroItem).onDataChange(this.heroList, index);
- }
- }
|