mirror of
https://github.com/genxium/DelayNoMore
synced 2024-12-27 12:08:21 +00:00
164 lines
4.2 KiB
JavaScript
164 lines
4.2 KiB
JavaScript
const i18n = require('LanguageData');
|
|
i18n.init(window.language); // languageID should be equal to the one we input in New Language ID input field
|
|
cc.Class({
|
|
extends: cc.Component,
|
|
properties: {
|
|
onCloseDelegate: {
|
|
type: cc.Object,
|
|
default: null
|
|
},
|
|
onAgainClicked: {
|
|
type: cc.Object,
|
|
default: null
|
|
},
|
|
myAvatarNode: {
|
|
type: cc.Node,
|
|
default: null,
|
|
},
|
|
myNameNode: {
|
|
type: cc.Node,
|
|
default: null,
|
|
},
|
|
rankingNodes: {
|
|
type: [cc.Node],
|
|
default: [],
|
|
},
|
|
winNode: {
|
|
type: cc.Node,
|
|
default: null,
|
|
},
|
|
},
|
|
|
|
// LIFE-CYCLE CALLBACKS:
|
|
onLoad() {
|
|
},
|
|
|
|
againBtnOnClick(evt) {
|
|
this.onClose();
|
|
if (!this.onAgainClicked) return;
|
|
this.onAgainClicked();
|
|
},
|
|
|
|
homeBtnOnClick(evt) {
|
|
this.onClose();
|
|
window.clearLocalStorageAndBackToLoginScene();
|
|
},
|
|
|
|
showPlayerInfo(playerRichInfoDict) {
|
|
this.showRanking(playerRichInfoDict);
|
|
this.showMyAvatar();
|
|
this.showMyName();
|
|
},
|
|
|
|
showMyName() {
|
|
const selfPlayerInfo = JSON.parse(cc.sys.localStorage.getItem('selfPlayer'));
|
|
let name = 'No name';
|
|
if (null == selfPlayerInfo.displayName || "" == selfPlayerInfo.displayName) {
|
|
name = selfPlayerInfo.name;
|
|
} else {
|
|
name = selfPlayerInfo.displayName;
|
|
}
|
|
if (!this.myNameNode) return;
|
|
const myNameNodeLabel = this.myNameNode.getComponent(cc.Label);
|
|
if (!myNameNodeLabel || null == name) return;
|
|
myNameNodeLabel.string = name;
|
|
},
|
|
|
|
showRanking(playerRichInfoDict) {
|
|
const self = this;
|
|
const sortablePlayers = [];
|
|
|
|
for (let playerId in playerRichInfoDict) {
|
|
const p = playerRichInfoDict[playerId];
|
|
p.id = playerId;
|
|
if (null == p.score) {
|
|
p.score = playerRichInfoDict[playerId].score;
|
|
}
|
|
if (null == p.score) {
|
|
p.score = 0;
|
|
}
|
|
sortablePlayers.push(p);
|
|
}
|
|
const sortedPlayers = sortablePlayers.sort((a, b) => {
|
|
if (a.score != b.score) {
|
|
return (b.score - a.score);
|
|
} else {
|
|
return (a.id > b.id);
|
|
}
|
|
});
|
|
|
|
const selfPlayerInfo = JSON.parse(cc.sys.localStorage.getItem('selfPlayer'));
|
|
for (let k in sortedPlayers) {
|
|
const p = sortedPlayers[k];
|
|
const nameToDisplay = (() => {
|
|
function isEmptyString(str) {
|
|
return str == null || str == '';
|
|
}
|
|
if (!isEmptyString(p.displayName)) {
|
|
return p.displayName;
|
|
} else if (!isEmptyString(p.name)) {
|
|
return p.name;
|
|
} else {
|
|
return "";
|
|
}
|
|
})();
|
|
|
|
if (selfPlayerInfo.playerId == p.id) {
|
|
const rank = k + 1;
|
|
if (1 != rank && null != self.winNode) {
|
|
self.winNode.active = false;
|
|
}
|
|
}
|
|
|
|
self.rankingNodes[k].getChildByName('name').getComponent(cc.Label).string = nameToDisplay;
|
|
self.rankingNodes[k].getChildByName('score').getComponent(cc.Label).string = playerRichInfoDict[p.id].score;
|
|
}
|
|
},
|
|
|
|
showMyAvatar() {
|
|
const self = this;
|
|
const selfPlayerInfo = JSON.parse(cc.sys.localStorage.getItem('selfPlayer'));
|
|
let remoteUrl = selfPlayerInfo.avatar;
|
|
if (remoteUrl == null || remoteUrl == '') {
|
|
cc.log(`No avatar to show for myself, check storage.`);
|
|
return;
|
|
} else {
|
|
cc.loader.load({
|
|
url: remoteUrl,
|
|
type: 'jpg'
|
|
}, function(err, texture) {
|
|
if (err != null || texture == null) {
|
|
console.log(err);
|
|
} else {
|
|
const sf = new cc.SpriteFrame();
|
|
sf.setTexture(texture);
|
|
self.myAvatarNode.getComponent(cc.Sprite).spriteFrame = sf;
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
showRibbon(winnerInfo, ribbonNode) {
|
|
const selfPlayerInfo = JSON.parse(cc.sys.localStorage.getItem('selfPlayer'));
|
|
const texture = (selfPlayerInfo.playerId == winnerInfo.id) ? "textures/resultPanel/WinRibbon" : "textures/resultPanel/loseRibbon";
|
|
cc.loader.loadRes(texture, cc.SpriteFrame, function(err, spriteFrame) {
|
|
if (err) {
|
|
console.log(err);
|
|
return;
|
|
}
|
|
ribbonNode.getComponent(cc.Sprite).spriteFrame = spriteFrame;
|
|
});
|
|
|
|
},
|
|
|
|
onClose(evt) {
|
|
if (this.node.parent) {
|
|
this.node.parent.removeChild(this.node);
|
|
}
|
|
if (!this.onCloseDelegate) {
|
|
return;
|
|
}
|
|
this.onCloseDelegate();
|
|
}
|
|
});
|