152 lines
5.0 KiB
TypeScript
152 lines
5.0 KiB
TypeScript
import { _decorator, Component, Node, Label, Sprite, director, SpriteFrame } from 'cc';
|
|
import { SubGameMgr } from '../../module_basic/scripts/SubGameMgr';
|
|
import { UserMgr } from '../../module_basic/scripts/UserMgr';
|
|
import { RoomEvent } from '../../module_basic/scripts/GameMgr';
|
|
import {ModuleDef} from "db://assets/scripts/ModuleDef";
|
|
import {resLoader} from "db://assets/core_tgx/base/utils/ResLoader";
|
|
import {EMusicDefine} from "db://assets/module_basic/Define/MusicDefine";
|
|
import {tgxAudioMgr} from "db://assets/core_tgx/tgx";
|
|
import {MsgUserDataChangedPush} from "db://assets/module_basic/shared/protocols/public/MsgUserDataChangedPush";
|
|
const { ccclass, property } = _decorator;
|
|
|
|
const aiLevelStr = ['初级', '中级', '高级'];
|
|
|
|
@ccclass('GamePlayerInfo')
|
|
export class GamePlayerInfo extends Component {
|
|
@property(Label)
|
|
userId: Label;
|
|
|
|
@property(Sprite)
|
|
icon: Sprite
|
|
|
|
@property(Sprite)
|
|
iconBg: Sprite
|
|
|
|
@property(Sprite)
|
|
danIcon: Sprite
|
|
|
|
@property(Node)
|
|
readyState: Node;
|
|
|
|
@property(Node)
|
|
mask: Node;
|
|
|
|
private _defaultIcon;
|
|
public _userId: string='';
|
|
|
|
public seatIndex:number =0;
|
|
|
|
/** 英雄选择界面回调 */
|
|
private _fun : Function = null;
|
|
|
|
onLoad() {
|
|
this._defaultIcon = this.icon.spriteFrame;
|
|
}
|
|
|
|
onDestroy(){
|
|
}
|
|
|
|
public setSeatIndex(index:number){
|
|
this.seatIndex = index;
|
|
}
|
|
|
|
protected start(): void {
|
|
director.getScene().on(RoomEvent.USER_DATA_CHANGED, (msg: MsgUserDataChangedPush) => {
|
|
if (msg.uid != this._userId) {
|
|
return;
|
|
}
|
|
if (!msg.isOnline) {
|
|
this.readyState.active = true;
|
|
this.readyState.getComponent(Label).string = '离线';
|
|
}
|
|
else {
|
|
this.readyState.active = (!SubGameMgr.gameMgr.isPlaying && SubGameMgr.gameMgr.getUser(this._userId).ready);
|
|
if(msg.ready){
|
|
this.readyState.getComponent(Label).string = '准备';
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
setAILevel(level: number) {
|
|
this.userId.string = '电脑-' + (aiLevelStr[level] || aiLevelStr[0]);
|
|
this.icon.spriteFrame = this._defaultIcon;
|
|
this.readyState.active = false;
|
|
}
|
|
|
|
setUserId(userId: string) {
|
|
this._userId = userId;
|
|
console.log("当前房间的玩家id == ",this._userId);
|
|
if (!userId) {
|
|
this.userId.string = '等待加入...';
|
|
this.icon.spriteFrame = this._defaultIcon;
|
|
this.readyState.active = false;
|
|
if (SubGameMgr.gameMgr.isWatcher) {
|
|
this.readyState.active = true;
|
|
this.readyState.getComponent(Label).string = '加入';
|
|
}
|
|
}
|
|
else {
|
|
UserMgr.inst.setUserIconAndName(userId, this.icon, this.userId, ModuleDef.BASIC).then();
|
|
UserMgr.inst.setDanIcon(userId, this.node.getChildByName("left_icon").getChildByName("dan").getComponent(Sprite), ModuleDef.Arean).then();
|
|
UserMgr.inst.setTitle(userId,this.node.getChildByName("left_userName").getComponent(Label)).then();
|
|
this.readyState.active = false;
|
|
this.readyState.active = (!SubGameMgr.gameMgr.isPlaying && SubGameMgr.gameMgr.getUser(userId).ready);
|
|
if (this.readyState.active) {
|
|
this.readyState.getComponent(Label).string = '准备';
|
|
}
|
|
}
|
|
}
|
|
|
|
async onClicked() {
|
|
// if(UserLocalCache.inst.fightModel != EFightModel.Room){
|
|
// return;
|
|
// }
|
|
// if(this._userId != UserMgr.inst.uid){
|
|
// return;
|
|
// }
|
|
// if (this._userId) {
|
|
// let info = await UserMgr.inst.rpc_GetUserInfo(this._userId);
|
|
// if (info) {
|
|
// tgxUIMgr.inst.showUI(UIUserInfo,null,null,info);
|
|
// return;
|
|
// }
|
|
// }
|
|
// if (SubGameMgr.gameMgr.isPlayer) {
|
|
// return;
|
|
// }
|
|
// let ret = await SubGameMgr.gameMgr.rpc_JoinGame();
|
|
// if (!ret.isSucc) {
|
|
// tgxUIAlert.show("无法加入");
|
|
// return;
|
|
// }
|
|
// tgxSceneUtil.reloadScene();
|
|
// SubGameMgr.gameMgr.rpc_Ready();
|
|
// console.log("准备1");
|
|
}
|
|
|
|
update(deltaTime: number) {
|
|
|
|
}
|
|
|
|
public updateBg() : void{
|
|
let sp : SpriteFrame = resLoader.getSpriteFrame("res/RoomBg/cardBg_3",ModuleDef.Arean);
|
|
if(sp) this.iconBg.getComponent(Sprite).spriteFrame = sp;
|
|
}
|
|
|
|
public updateHomeOwnerActive(show : boolean) : void{
|
|
let img = this.iconBg.node.getChildByName("homeOwner");
|
|
if(img) img.active = show;
|
|
}
|
|
|
|
public setOpenChooseHero(fun : Function) : void{
|
|
this._fun = fun;
|
|
}
|
|
|
|
public openChooseHero() : void{
|
|
tgxAudioMgr.inst.playCommonBtn(EMusicDefine.EFFECT_OPEN);
|
|
this._fun && this._fun();
|
|
}
|
|
}
|
|
|