import { _decorator, instantiate, isValid, Label, Node, Prefab, Sprite } from 'cc'; import { GButton } from '../../Main/Common/GButton'; import AudioManager from '../../Main/Manager/AudioManager'; import Utils from '../../Main/Common/Utils'; import { ViewManager } from '../../Main/Manager/ViewManager'; import { InnerMsgCode } from '../../Main/Config/InnerMsgCode'; import li_BaseView from '../../Main/Common/li_BaseView'; import GameRootUI from '../../Main/Common/GameRootUI'; import ResManager from '../../Main/Manager/ResManager'; import HttpUnit from '../../Main/Common/HttpUnit'; import { SDKManager } from '../../Main/Channel/SDKManager'; import ScrollViewList from '../../Main/Common/ScrollViewList'; const { ccclass, property } = _decorator; //主界面 @ccclass('Start_UI') export class Start_UI extends li_BaseView { @property(ScrollViewList) private Level_List: ScrollViewList = null @property(Prefab) private Level_Item: Prefab = null private itemClone: any = null private _nodeTab: any = {}; private _data; private levelData: any[] = []; //关卡数据 private curLevelIdx: number = 0; //当前关卡Idx //----重写父类接口--------------------------------------- onLoadCT() { this.registerListenner(); Utils.parseNode(this.node, this._nodeTab) this.itemClone = instantiate(this.Level_Item) this.Level_List.setTemplateItem(this.itemClone) } openUIDataCT(data: any): void { this._data = data } registerListenner() { Utils.addInnerEL(InnerMsgCode.GM_UI_Close, this, this.resiveGMClose) Utils.addInnerEL(InnerMsgCode.UI_Talk_Back, this, this.resiveTalkBack) } start() { GButton.BandClick(this._nodeTab.btnStart, this.onStartClick, this); // GButton.BandClick(this._nodeTab.btnSetting, this.onSettingClick, this); AudioManager.I.PlayMusic(1, true) //背景乐 GameRootUI.InitDisableOperUI(false) GameRootUI.InitCrossUI(false) this.setUIVisible(true) //判断玩家权限是否已获取 if (!HttpUnit.IsLogin()) { HttpUnit.ins.login((loginData) => { console.log("主界面: 获取授权并登录成功!") this.userInited() }) } else { this.userInited() } } update(deltaTime: number) { } //GM界面关闭消息 resiveGMClose(data) { Utils.Log("收到GM界面关闭消息") } //退出聊天消息 resiveTalkBack(data) { Utils.Log("收到退出聊天消息") this.setUIVisible(true) } //显示主界面UI setUIVisible(vis: boolean) { this._nodeTab.UIRoot.active = vis } //刷新玩家信息完毕 userInited() { this.refreshSdkUI() //初始化关卡列表 this.levelData = [1,2,3,4,5,6,7,8,9] this.levelData.unshift(0) //在最前面插入一个占位数据,用于数组排版显示 this.Level_List.numItems = this.levelData.length this.curLevelIdx = 1 this.changeLevel(this.curLevelIdx, true) } //刷新SDK相关的UI refreshSdkUI() { console.log("主界面:刷新SDK相关的UI...") SDKManager.getUserInfo((data) => { //头像 let spt = this._nodeTab.headIcon.getComponent(Sprite) ResManager.I.changeRemoteSpriteFrame(spt, data.avatarUrl) //名字 let nickName = this._nodeTab.nickName.getComponent(Label) nickName.string = data.nickName console.log("主界面 设置头像和名字:", data.avatarUrl, data.nickName) }) } //关卡列表渲染 onRenderItemList(node: any, idx: number) { if(!isValid(node)) {return} if (!node.inited) { node.inited = true; Utils.parseNode(node); } //第一个是占位用的 if (idx == 0) { node.l_rotateN.active = false return } node.l_rotateN.active = true let data = this.levelData[idx] GButton.RemoveAndBandClick(node, ()=>{ this.changeLevel(idx) }, this) } //切换关卡 changeLevel(idx:number, force:boolean = false) { if (this.curLevelIdx == idx && !force) { return } this.curLevelIdx = idx let data = this.levelData[idx] let bgPath = "bg"+idx let rolePath = "role"+idx Utils.sendInnerMsg(InnerMsgCode.SceneLayerBgUp, {bgPath:bgPath, rolePath:rolePath}) } //开始游戏 onStartClick() { Utils.Log("点击开始游戏"); // //测试代码 // if (true) { // this.setUIVisible(false) // ViewManager.I.openBundlesView("UI/StartUI/Talk_UI") // return // } let level_id = `game_level_${this.curLevelIdx}` HttpUnit.ins.levelStart({level_id:level_id}, (data) => { this.setUIVisible(false) ViewManager.I.openBundlesView("UI/StartUI/Talk_UI") }) } // //设置 // onSettingClick() { // ViewManager.I.openBundlesView("UI/StartUI/Setting_UI") // } }