import { _decorator, Component, Node, Prefab, instantiate, RichText, JsonAsset, EventHandler } from 'cc'; import { DataSystem } from '../core/data/DataSystem'; import { Http } from '../core/net/Http'; import { ResourceLoader } from '../core/resourceManager/ResourceLoader'; import { ConfigData } from '../data/ConfigData'; import { ExpropriationGrainItem } from './ExpropriationGrainItem'; const { ccclass, property, requireComponent } = _decorator; @ccclass('ExpropriationGrainUI') @requireComponent(Http) @requireComponent(ResourceLoader) export class ExpropriationGrainUI extends Component { @property({ tooltip: "item组件父级节点", type: Node }) private itemParent: Node; @property({ tooltip: "剩余次数文本", type: RichText }) private timesTxt: RichText; @property({ tooltip: "更新出征状态回调", type: EventHandler }) private initToGetArray: EventHandler; private itemArray: Node[] = [];//item数组 private grainLeviesConfig = [];//配置 private isToGetArray = [];//记录出征状态 start() { this.getConfig(); } private async getConfig() { let configData = DataSystem.getData(ConfigData); let data; if (configData.has("grainLevies")) { data = configData.get("grainLevies"); } else { data = await (await this.getComponent(ResourceLoader).load("configs/grainLevies", JsonAsset)).json; } for (let i in data) { this.grainLeviesConfig.push(data[i]); } this.initUI(); } public async initUI() { let itemData = []; for (let k = 0; k < this.grainLeviesConfig.length; k++) { let _data = this.grainLeviesConfig[k]; itemData.push({ index: _data.index, rewardNum: _data.rewardNum, time: _data.time }); } let resul = await this.getComponent(Http).send("/api/grainLevies/GetGrainLevies"); if (resul && resul.code == 0) { for (let i = 0; i < resul.data.leviesDatas.length; i++) { let data = resul.data.leviesDatas[i]; itemData[data.index - 1].finishTime = data.finishTime; itemData[data.index - 1].isReceive = data.isReceive; } this.timesTxt.string = "剩余次数:" + resul.data.times + ""; } for (let j = 0; j < itemData.length; j++) { this.isToGetArray.push(0);//初始都未出征 let prefab = await this.getComponent(ResourceLoader).load("prefabs/ui/expropriationGrain/expropriationGrainItem", Prefab); let item = instantiate(prefab); item.getComponent(ExpropriationGrainItem).initToGetState = this.initToGetArray; item.getComponent(ExpropriationGrainItem).timesTxt = this.timesTxt; this.itemArray.push(item); item.parent = this.itemParent; item.getComponent(ExpropriationGrainItem).initUI(itemData[j]); } } /** * 更新出征状态回调 * @param index 出征类型索引 * @param type 出征状态,0为未出征 */ public initToGetArrayBack(index: number, type: number) { this.isToGetArray[index - 1] = type; let tempBool: boolean = false;//是否有人出征 for (let i = 0; i < this.isToGetArray.length; i++) { if (this.isToGetArray[i]) { tempBool = true; break; } } //调用刷新回调 this.initToGetBtn(tempBool); // if (!type && !tempBool) { // this.initToGetBtn(tempBool); // } // if (type && tempBool) { // this.initToGetBtn(tempBool); // } } public initToGetBtn(isToGet: boolean) { for (let i = 0; i < this.itemArray.length; i++) { this.itemArray[i].getComponent(ExpropriationGrainItem).initTogetBtn(isToGet); } } }