DelayNoMore/frontend/assets/scripts/FindingPlayer.js
2022-09-26 10:36:46 +08:00

114 lines
2.8 KiB
JavaScript

cc.Class({
extends: cc.Component,
properties: {
firstPlayerInfoNode: {
type: cc.Node,
default: null
},
secondPlayerInfoNode: {
type: cc.Node,
default: null
},
findingAnimNode: {
type: cc.Node,
default: null
},
myAvatarNode: {
type: cc.Node,
default: null
},
exitBtnNode: {
type: cc.Node,
default: null
}
},
// LIFE-CYCLE CALLBACKS:
onLoad() {
},
init() {
if (null != this.firstPlayerInfoNode) {
this.firstPlayerInfoNode.active = false;
}
if (null != this.secondPlayerInfoNode) {
this.secondPlayerInfoNode.active = false;
}
this.playersInfoNode = {};
Object.assign(this.playersInfoNode, {
1: this.firstPlayerInfoNode
});
Object.assign(this.playersInfoNode, {
2: this.secondPlayerInfoNode
});
if (null != this.findingAnimNode) {
this.findingAnimNode.active = true;
}
window.firstPlayerInfoNode = this.firstPlayerInfoNode;
},
hideExitButton() {
if (null == this.exitBtnNode != null) {
return;
}
this.exitBtnNode.active = false;
},
exitBtnOnClick(evt) {
window.clearBoundRoomIdInBothVolatileAndPersistentStorage();
window.closeWSConnection();
cc.director.loadScene('login');
},
updatePlayersInfo(playerMetas) {
if (null == playerMetas) return;
for (let i in playerMetas) {
const playerMeta = playerMetas[i];
const playerInfoNode = this.playersInfoNode[playerMeta.joinIndex];
if (null == playerInfoNode) {
cc.error("There's no playerInfoNode for joinIndex == ", joinIndex, ", as `this.playerInfoNode` is currently ", this.playersInfoNode);
}
playerInfoNode.active = true;
if (2 == playerMeta.joinIndex) {
if (null != this.findingAnimNode) {
this.findingAnimNode.active = false;
}
}
}
//显示自己的头像名称以及他人的头像名称
for (let i in playerMetas) {
const playerMeta = playerMetas[i];
console.log("Showing playerMeta:", playerMeta);
const playerInfoNode = this.playersInfoNode[playerMeta.joinIndex];
(() => { //远程加载头像
let remoteUrl = playerMeta.avatar;
if (remoteUrl == null || remoteUrl == '') {
cc.log(`No avatar to show for :`);
cc.log(playerMeta);
}
})();
function isEmptyString(str) {
return str == null || str == ''
}
const nameNode = playerInfoNode.getChildByName("name");
const nameToDisplay = (() => {
if (!isEmptyString(playerMeta.displayName)) {
return playerMeta.displayName
} else if (!isEmptyString(playerMeta.name)) {
return playerMeta.name
} else {
return ""
}
})();
nameNode.getComponent(cc.Label).string = nameToDisplay;
}
},
});