121 lines
3.9 KiB
JavaScript
121 lines
3.9 KiB
JavaScript
|
/**************************************
|
|||
|
文件名:leaderBoard.js
|
|||
|
功能:该模块用于处理主菜单排行榜相关内容
|
|||
|
版本:2.0(23.01.08)
|
|||
|
**************************************/
|
|||
|
|
|||
|
/**************************************
|
|||
|
对象名:LeaderBoard
|
|||
|
参数:lang: 传入语言
|
|||
|
**************************************/
|
|||
|
function LeaderBoard(lang){
|
|||
|
//设置排行榜缓存标签
|
|||
|
this.HighRankKey = 'MinesweeperRank';
|
|||
|
//从缓存中获取排行榜
|
|||
|
this.highRank = this.getRank();
|
|||
|
//获取HTML中排行榜
|
|||
|
this.leadList = document.querySelector(".leadList");
|
|||
|
//获取排行榜下一页按钮
|
|||
|
this.next = document.querySelector(".next");
|
|||
|
//获取语言
|
|||
|
this.lang = lang;
|
|||
|
|
|||
|
//在设置监听的匿名函数中,“this”不是指代的leaderBoard对象,必须单独获取
|
|||
|
let self = this;
|
|||
|
//下一页按钮事件监听
|
|||
|
this.next.addEventListener("click", function(){
|
|||
|
let nextDiff = self.next.innerHTML;
|
|||
|
if(nextDiff == "Easy" || nextDiff == "简单" || nextDiff == "簡単"){
|
|||
|
self.rankRender("easy");
|
|||
|
}else if(nextDiff == "Hard" || nextDiff == "困难" || nextDiff == "難しい"){
|
|||
|
self.rankRender("hard");
|
|||
|
}else if(nextDiff == "Extra"){
|
|||
|
self.rankRender("extra");
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/**************************************
|
|||
|
方式名:getRank()
|
|||
|
功能:从缓存中获取排行榜
|
|||
|
返回值:返回排行榜对象
|
|||
|
**************************************/
|
|||
|
LeaderBoard.prototype.getRank = function(){
|
|||
|
let newRank = {
|
|||
|
easyRank: [],
|
|||
|
hardRank: [],
|
|||
|
extraRank: []
|
|||
|
}
|
|||
|
const rank = window.localStorage.getItem(this.HighRankKey);
|
|||
|
//如果缓存中没有排行榜,返回空的排行榜对象
|
|||
|
return rank ? JSON.parse(rank) : newRank;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************
|
|||
|
方式名:rankRender(difficulty)
|
|||
|
参数:difficulty: 游戏难度(easy为简单,hard为困难,extra为ex难度)
|
|||
|
功能:渲染排行榜
|
|||
|
**************************************/
|
|||
|
LeaderBoard.prototype.rankRender = function(difficulty){
|
|||
|
let rank = null;
|
|||
|
let diffCon = '';
|
|||
|
let nextCon = '';
|
|||
|
switch(difficulty){
|
|||
|
case "easy":
|
|||
|
rank = this.highRank.easyRank;
|
|||
|
switch(this.lang){
|
|||
|
case "zh_cn":
|
|||
|
diffCon = "简单";
|
|||
|
nextCon = "困难";
|
|||
|
break;
|
|||
|
case "en":
|
|||
|
diffCon = "Easy";
|
|||
|
nextCon = "Hard";
|
|||
|
break;
|
|||
|
case "jp":
|
|||
|
diffCon = "簡単";
|
|||
|
nextCon = "難しい";
|
|||
|
break;
|
|||
|
}
|
|||
|
break;
|
|||
|
case "hard":
|
|||
|
rank = this.highRank.hardRank;
|
|||
|
switch(this.lang){
|
|||
|
case "zh_cn":
|
|||
|
diffCon = "困难";
|
|||
|
break;
|
|||
|
case "en":
|
|||
|
diffCon = "Hard";
|
|||
|
break;
|
|||
|
case "jp":
|
|||
|
diffCon = "難しい";
|
|||
|
break;
|
|||
|
}
|
|||
|
nextCon = "Extra";
|
|||
|
break;
|
|||
|
case "extra":
|
|||
|
rank = this.highRank.extraRank;
|
|||
|
switch(this.lang){
|
|||
|
case "zh_cn":
|
|||
|
nextCon = "简单";
|
|||
|
break;
|
|||
|
case "en":
|
|||
|
nextCon = "Easy";
|
|||
|
break;
|
|||
|
case "jp":
|
|||
|
nextCon = "簡単";
|
|||
|
break;
|
|||
|
}
|
|||
|
diffCon = "Extra";
|
|||
|
break;
|
|||
|
}
|
|||
|
this.leadList.innerHTML = '';
|
|||
|
for (let i = 0; i < rank.length; i++){
|
|||
|
let li = document.createElement("li");
|
|||
|
li.innerHTML =
|
|||
|
`<div>${i+1}</div><div>${rank[i].ID}</div><div>${rank[i].time}</div>`;
|
|||
|
this.leadList.appendChild(li);
|
|||
|
}
|
|||
|
document.querySelector(".leaderDif").innerHTML = diffCon;
|
|||
|
this.next.innerHTML = nextCon;
|
|||
|
}
|