Files
18xchat/.svn/pristine/b8/b8c13e03b484f21d644a1f24e0353901ce9dea22.svn-base
T
2025-07-17 17:18:21 +08:00

177 lines
5.2 KiB
Plaintext

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")
// }
}