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'; import GameManager from '../../Main/Manager/GameManager'; import { I_LevelConfig } from '../../Main/Config/CommonConfig'; import SubManager from '../SubManager'; import { ByteDanceSDK } from '../../Main/Channel/bdSDK'; import GlobalValue from '../../Main/Common/GlobalValue'; 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: I_LevelConfig[] = []; //关卡数据 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) Utils.setString(this._nodeTab.labNpcName, "") Utils.setString(this._nodeTab.labNpcTalk, "") } 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) Utils.addInnerEL(InnerMsgCode.UI_BD_Sidebar, this, this.resiveBDSidebar) } start() { GButton.BandClick(this._nodeTab.btnStart, this.onStartClick, this, 10002); GButton.BandClick(this._nodeTab.btnSetting, this.onSettingClick, this); GButton.BandClick(this._nodeTab.btnBDSidebar, this.onBDSidebarClick, this); AudioManager.I.PlayMusic(1, true) //背景乐 GameRootUI.InitDisableOperUI(false) GameRootUI.InitCrossUI(false) this.setUIVisible(true) //设置按钮 if (GlobalValue.GMSwtitch) { this._nodeTab.btnSetting.active = true } else { this._nodeTab.btnSetting.active = false } //抖音侧边栏 this._nodeTab.btnBDSidebar.active = false if (SDKManager.isByteDance()) { this.refreshBdSidebarUI() ByteDanceSDK.CheckSidebarState((state) =>{ if (state == true) { this.refreshBdSidebarUI() } }) } //判断玩家权限是否已获取 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) this.refreshLevelList() } //抖音侧边栏消息 resiveBDSidebar(data) { this.refreshBdSidebarUI() } //显示主界面UI setUIVisible(vis: boolean) { this._nodeTab.UIRoot.active = vis } //刷新抖音侧边栏按钮显示状态 refreshBdSidebarUI() { if (!SDKManager.isByteDance()) { //不是抖音平台,不显示 this._nodeTab.btnBDSidebar.active = false return } let stage = ByteDanceSDK.SidebarState if (stage == 1) { //前往 this._nodeTab.btnBDSidebar.active = true Utils.setString(this._nodeTab.labBDSidebar, "前往抖音侧边栏") } else if (stage == 2) { //领奖 this._nodeTab.btnBDSidebar.active = true Utils.setString(this._nodeTab.labBDSidebar, "领取抖音侧边栏") } else { //版本不支持 this._nodeTab.btnBDSidebar.active = false } } //刷新玩家信息完毕 userInited() { this.refreshSdkUI() this.refreshLevelList() } //刷新关卡列表 private refreshLevelList() { HttpUnit.ins.getLevelList((levelList) => { if (levelList) { GameManager.SetLevelCfg(levelList) this.levelData = levelList this.levelData.unshift({} as any) //在最前面插入一个占位数据,用于数组排版显示 this.Level_List.numItems = this.levelData.length if (this.curLevelIdx < 1) { 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) }) //刷新id let id = HttpUnit.GetID() Utils.setString(this._nodeTab.userId, `ID:${id}`) } //关卡列表渲染 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] //头像 let headPath = `headLevel/${data.icon}` ResManager.I.changeBundleSpriteFrame(node.head1.getComponent(Sprite), headPath, "Raw") //解锁状态 node.lockNode.active = data.is_unlock ? false : true node.unlockNode.active = data.is_unlock ? true : false if (data.is_unlock) { //分数 Utils.setString(node.labScore, data.score) //星级 if (data.star == 3) { ResManager.I.changeBundleSpriteFrame(node.l_xingji.getComponent(Sprite), "zjm_11", "Zhujiemian") } else if (data.star == 2) { ResManager.I.changeBundleSpriteFrame(node.l_xingji.getComponent(Sprite), "zjm_10", "Zhujiemian") } else if (data.star == 1) { ResManager.I.changeBundleSpriteFrame(node.l_xingji.getComponent(Sprite), "zjm_9", "Zhujiemian") } else { ResManager.I.changeBundleSpriteFrame(node.l_xingji.getComponent(Sprite), "zjm_8", "Zhujiemian") } //满星效果 node.l_manxing.active = data.star == 3 ? true : false if (data.star == 3) { ResManager.I.changeBundleSpriteFrame(node.l_bg.getComponent(Sprite), "zjm_6", "Zhujiemian") } else { ResManager.I.changeBundleSpriteFrame(node.l_bg.getComponent(Sprite), "zjm_5", "Zhujiemian") } } 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] //名字 Utils.setString(this._nodeTab.labNpcName, data.characterName) //介绍 Utils.setString(this._nodeTab.labNpcTalk, data.description) let bgPath = data.bgImage let rolePath = data.characterFullLengthPortrait Utils.sendInnerMsg(InnerMsgCode.SceneLayerBgUp, {bgPath:bgPath, rolePath:rolePath}) } //开始游戏 onStartClick() { Utils.Log("点击开始游戏"); if (this.curLevelIdx == 0) { console.error("当前关卡为0,此关卡是占位用的") return } let data = this.levelData[this.curLevelIdx] //未解锁 if (data.is_unlock != true) { SubManager.ShowPrompt("关卡未解锁") return } // if (HttpUnit.GetTalkTickets() <= 0) { // SubManager.ShowPrompt("今日对话次数已用完"); // return; // } let level_id = data.id GameManager.CurLevelId = level_id GameManager.ClearStepScore() GameManager.ClearTalkRecord() HttpUnit.ins.levelStart({level_id:level_id}, (data) => { this.setUIVisible(false) GameManager.CurLevelData = data.level GameManager.RecordId = data.record_id GameManager.I.connetSorcket(data.record_id) //连接socket ViewManager.I.openBundlesView("UI/StartUI/Talk_UI") }) } //设置 onSettingClick() { ViewManager.I.openBundlesView("UI/StartUI/Setting_UI") } //点击抖音侧边栏按钮 onBDSidebarClick() { if (!SDKManager.isByteDance()) { //不是抖音平台 return } ViewManager.I.openBundlesView("UI/StartUI/BDSidebar_UI") } }