import { _decorator, Component, Node, MeshRenderer, instantiate } from 'cc'; import platformSystem from '../platform/platformSystem'; import BasePanel from '../core/component/BasePanel'; import { audioMgr } from '../core/manager/AudioManager'; import Data from '../core/manager/Data'; import { ResUtil } from '../core/utils/ResUtil'; import { GameConst } from '../core/common/GameConst'; import { levelsData } from '../user/LevelsData'; const { ccclass, property } = _decorator; @ccclass('NewPackOpenedLayer') export class NewPackOpenedLayer extends BasePanel { onBtnClicked(event: any, customEventData: any) { audioMgr.playOneShot(GameConst.audios.btnclick); this.close(); } show() { platformSystem.platform.showInterstitialAd(); let node_items = this.GetGameObject("node_items"); node_items.children.map(a => a.active = false); let ids = []; let OpenItems:Array = levelsData.getModesNames(); for (var i = Data.user.openIndex; i < Data.user.openIndex + 8 && i < OpenItems.length; ++i) { ids.push(OpenItems[i]); } for (var i = 0; i < node_items.children.length; ++i) { let child = node_items.children[i]; child.active = true; this.setMesh(child, ids[i]); } Data.user.openIndex += 8; Data.user.openIndex = Math.min(Data.user.openIndex, OpenItems.length - 1); Data.save(); } private setMesh(node: Node, name: string) { ResUtil.loadModelPrefabName(name).then((res: any) => { let tmp: Node = instantiate(res); let render = tmp.getComponentInChildren(MeshRenderer) as MeshRenderer; let mesh = render.mesh; node.scale = render.node.scale.multiplyScalar(100); node.getComponent(MeshRenderer).mesh = mesh; tmp.destroy(); }) } }