import { _decorator, Component, Node, Prefab, LayoutComponent, instantiate, ScrollViewComponent } from 'cc'; import { GUIManager } from '../../../engines/gui/GUIManager'; import { GUIMediator } from '../../../engines/gui/GUIMediator'; import GameConfigManager from '../../models/GameConfigManager'; import { GameModel } from '../../models/GameModel'; import { UIConst } from '../UIConst'; import { ShopItemRenderScript } from './ShopItemRenderScript'; const { ccclass, property } = _decorator; @ccclass('ShopMediator') export class ShopMediator extends GUIMediator { @property({ type:Prefab }) ListItemRenderPrefab:Prefab=null; @property({ type:LayoutComponent }) ListContext:LayoutComponent=null; @property({ type:ScrollViewComponent }) List:ScrollViewComponent=null; OnShow(data?:any):void{ super.OnShow(data); this.RefreshList(true); this.AddEvent(); } OnHide():void{ this.RemoveEvent(); } /** * 返回按钮点击 */ public BackButtonClick():void{ GUIManager.single.Show(UIConst.PREPARE_UI); this.HideSelf(); } private AddEvent():void{ } private RemoveEvent():void{ } private RefreshList(srollToZ:boolean):void{ let itemView:Node; let dataList:any[]=this.GetListData(); if(dataList.length!=this.ListContext.node.children.length){ if(dataList.lengththis.ListContext.node.children.length){ itemView=instantiate(this.ListItemRenderPrefab); this.ListContext.node.addChild(itemView); } } } let itemScript:ShopItemRenderScript; let count:number=dataList.length; for (let index = 0; index < count; index++) { itemView=this.ListContext.node.children[index]; itemScript=itemView.getComponent(ShopItemRenderScript); if(itemScript==null){ throw new Error("商城列表项未挂载ShopItemRenderScript脚本!"); } itemScript.UpdateItemRender(dataList[index]); } if(srollToZ){ this.List.scrollToTop(0.1); } } /** * 根据当前合成过的最大枪来计算列表数据 */ private GetListData():any[]{ let result:any[]=[]; let config:any=GameConfigManager.GetShopConfig(GameModel.single.synthesisMaxWeaponId); let weaponConfig:any; //解锁线 let unlockLevel:number; if(config.unsealedGunId!=undefined){ weaponConfig=GameConfigManager.GetWeaponConfig(config.unsealedGunId); unlockLevel=weaponConfig.level; }else{ unlockLevel=-1; } let shopList:any[]=GameConfigManager.ShopList; let itemData:any; shopList.forEach(element => { weaponConfig=GameConfigManager.GetWeaponConfig(element.id); itemData={ id:element.id, index:element.index } //buyType 购买方式 0金币购买 1宝石购买 if(config.diamondPurchaseId==undefined||config.diamondPurchaseId.indexOf(element.id)<0){ itemData.buyType=0; }else{ itemData.buyType=1; } //state 0 未解锁 1 已解锁 if(unlockLevel<0||weaponConfig.level>=unlockLevel){ itemData.state=1; }else{ itemData.state=0; } result.push(itemData); }); return result; } start () { // Your initialization goes here. } // update (deltaTime: number) { // // Your update function goes here. // } }