From bf7a136ed8c4ab669e850808e06914b5364a0d34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=A2=E1=84=91=E1=85=B3=E1=86=AF=20=E1=84=82?= =?UTF-8?q?=E1=85=A9=E1=84=90=E1=85=B3=E1=84=87=E1=85=AE=E1=86=A8?= Date: Thu, 17 May 2018 14:12:35 +0900 Subject: [PATCH] Add: ranking board print record --- src/game/lib/db_connect_manager.js | 106 ++++++++------- src/game/result/history_board.js | 8 +- src/game/result/ranking_board.js | 206 ++++++++--------------------- 3 files changed, 119 insertions(+), 201 deletions(-) diff --git a/src/game/lib/db_connect_manager.js b/src/game/lib/db_connect_manager.js index 234b9ec..ca6a698 100644 --- a/src/game/lib/db_connect_manager.js +++ b/src/game/lib/db_connect_manager.js @@ -18,36 +18,12 @@ class DBConnectManager { this.appName = appName; } - requestMyHistory(listener) { + requestPlayerHistory(listener) { let historyRecordManager = new HistoryRecordManager(); listener(historyRecordManager); } - requestRankingHour(listener) { - this.requestRanking(type, listener); - } - - requestRankingDay(listener) { - this.requestRanking(type, listener); - } - - requestRankingMonth(listener) { - this.requestRanking(type, listener); - } - - requestAllRankingHour(listener) { - this.requestRanking(type, listener); - } - - requestAllRankingDay(listener) { - this.requestRanking(type, listener); - } - - requestAllRankingMonth(listener) { - this.requestRanking(type, listener); - } - requestRanking(type, listener) { let rankingRecordManager = new RankingRecordManager(); @@ -55,14 +31,16 @@ class DBConnectManager { } - requestTempMyHistory(listener) { + requestTempPlayerHistory(listener) { let historyRecordManager = new HistoryRecordManager(); + historyRecordManager.push(new HistoryRecord("05/14", "space_invaders", 14460)); + historyRecordManager.push(new HistoryRecord("05/13", "space_invaders", 12860)); + historyRecordManager.push(new HistoryRecord("05/12", "typing_english_basic", 15460)); + historyRecordManager.push(new HistoryRecord("05/11", "typing_korean_basic", 13040)); historyRecordManager.push(new HistoryRecord("05/10", "space_invaders", 15460)); - historyRecordManager.push(new HistoryRecord("05/11", "typing_korean_basic", 3040)); - historyRecordManager.push(new HistoryRecord("05/12", "typing_english_basic", 460)); - historyRecordManager.push(new HistoryRecord("05/13", "space_invaders", 60)); - historyRecordManager.push(new HistoryRecord("05/14", "space_invaders", 8)); + historyRecordManager.push(new HistoryRecord("05/09", "typing_english_basic", 14607)); + historyRecordManager.push(new HistoryRecord("05/08", "typing_korean_basic", 13058)); if(listener === null) return; @@ -70,30 +48,62 @@ class DBConnectManager { listener(historyRecordManager); } - requestTempRanking(userID, appName, rankingRecordManager, listener) { + requestTempRanking(type, listener) { + let rankingRecordManager = new RankingRecordManager(); + + rankingRecordManager.push(new RankingRecord(1, "강경모", 4400)); + rankingRecordManager.push(new RankingRecord(2, "강성태", 3400)); + rankingRecordManager.push(new RankingRecord(3, "김기덕", 2400)); + rankingRecordManager.push(new RankingRecord(4, "김남희", 1400)); + rankingRecordManager.push(new RankingRecord(5, "고봉순", 900)); + rankingRecordManager.push(new RankingRecord(6, "파르마", 800)); + rankingRecordManager.push(new RankingRecord(7, "박지상", 700)); + rankingRecordManager.push(new RankingRecord(8, "신현주", 600)); + rankingRecordManager.push(new RankingRecord(9, "꼬봉이", 500)); + rankingRecordManager.push(new RankingRecord(10, "거북이", 400)); + rankingRecordManager.push(new RankingRecord(11, "다람쥐", 300)); + rankingRecordManager.push(new RankingRecord(12, "사시미", 200)); + rankingRecordManager.push(new RankingRecord(13, "태권도", 100)); + rankingRecordManager.push(new RankingRecord(14, "합기도", 40)); + rankingRecordManager.push(new RankingRecord(15, "우습지", 10)); + rankingRecordManager.push(new RankingRecord(16, "하하하", 4)); + + if(listener === null) + return; + + listener(rankingRecordManager); + /* let jsonRankingList = [ - { "UserID":"17", "Name":"강경모", "BestRecord":"4400" }, - { "UserID":"2", "Name":"강성태", "BestRecord":"3400" }, - { "UserID":"3", "Name":"김기덕", "BestRecord":"2400" }, - { "UserID":"4", "Name":"김남희", "BestRecord":"1400" }, - { "UserID":"5", "Name":"고봉순", "BestRecord":"900" }, - { "UserID":"6", "Name":"파르마", "BestRecord":"800" }, - { "UserID":"1", "Name":"박지상", "BestRecord":"700" }, - { "UserID":"8", "Name":"신현주", "BestRecord":"600" }, - { "UserID":"9", "Name":"꼬봉이", "BestRecord":"500" }, - { "UserID":"10", "Name":"거북이", "BestRecord":"400" }, - { "UserID":"11", "Name":"다람쥐", "BestRecord":"300" }, - { "UserID":"12", "Name":"사시미", "BestRecord":"200" }, - { "UserID":"13", "Name":"태권도", "BestRecord":"100" }, - { "UserID":"14", "Name":"합기도", "BestRecord":"40" }, - { "UserID":"15", "Name":"우습지", "BestRecord":"10" }, - { "UserID":"16", "Name":"하하하", "BestRecord":"4" }, + { "UserID":"17", "Name":"강경모", 4400" }, + { "UserID":"2", "Name":"강성태", 3400" }, + { "UserID":"3", "Name":"김기덕", 2400" }, + { "UserID":"4", "Name":"김남희", 1400" }, + { "UserID":"5", "Name":"고봉순", 900" }, + { "UserID":"6", "Name":"파르마", 800" }, + { "UserID":"1", "Name":"박지상", 700" }, + { "UserID":"8", "Name":"신현주", 600" }, + { "UserID":"9", "Name":"꼬봉이", 500" }, + { "UserID":"10", "Name":"거북이", 400" }, + { "UserID":"11", "Name":"다람쥐", 300" }, + { "UserID":"12", "Name":"사시미", 200" }, + { "UserID":"13", "Name":"태권도", 100" }, + { "UserID":"14", "Name":"합기도", 40" }, + { "UserID":"15", "Name":"우습지", 10" }, + { "UserID":"16", "Name":"하하하", 4" }, ]; if(listener === null) return; listener(); + */ } -} \ No newline at end of file +} + +DBConnectManager.TYPE_MY_RANKING_HOUR = 0; +DBConnectManager.TYPE_MY_RANKING_DAY = 1; +DBConnectManager.TYPE_MY_RANKING_MONTH = 2; +DBConnectManager.TYPE_ALL_RANKING_HOUR = 3; +DBConnectManager.TYPE_ALL_RANKING_DAY = 4; +DBConnectManager.TYPE_ALL_RANKING_MONTH = 5; \ No newline at end of file diff --git a/src/game/result/history_board.js b/src/game/result/history_board.js index c80dd77..831dccd 100644 --- a/src/game/result/history_board.js +++ b/src/game/result/history_board.js @@ -13,10 +13,12 @@ class HistoryBoard { this.textMyRanking = game.add.text(posX, posY + 100, '', arrayTabStyle) .setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2); - this.dbConnectManager.requestTempMyHistory( historyRecordManager => { - let self = this; - + let self = this; + this.dbConnectManager.requestTempPlayerHistory( historyRecordManager => { for(let i = 0; i < historyRecordManager.count; i++) { + if(i > 6) + break; + let data = historyRecordManager.getAt(i); self.printRecord(i, data.date, data.score); } diff --git a/src/game/result/ranking_board.js b/src/game/result/ranking_board.js index 9d5e840..fcb8a1f 100644 --- a/src/game/result/ranking_board.js +++ b/src/game/result/ranking_board.js @@ -4,168 +4,74 @@ class RankingBoard { constructor() { - let arrayTabStyle = { font: "20px Arial", fill: "#fff", align: "left", tabs: [ 40, 80, 120 ] }; + this.dbConnectManager = new DBConnectManager(); - let posX = 340; - let posY = game.world.height / 2 - 10; - this.textHourRanking = this.printRankingContent(posX, posY + 100, arrayTabStyle); - - posX = 560; - this.textDayRanking = this.printRankingContent(posX, posY + 100, arrayTabStyle); - - posX = 780; - this.textMonthRanking = this.printRankingContent(posX, posY + 100, arrayTabStyle); - - this.showRankingHour(this.makeTemporaryJsonRankingList()); - this.showRankingDay(this.makeTemporaryJsonRankingList()); - this.showRankingMonth(this.makeTemporaryJsonRankingList()); + this.requestRanking(DBConnectManager.TYPE_MY_RANKING_HOUR); + this.requestRanking(DBConnectManager.TYPE_MY_RANKING_DAY); + this.requestRanking(DBConnectManager.TYPE_MY_RANKING_MONTH); } - printRankingContent(x, y, style) { - return game.add.text(x, y, '', style) + requestRanking(type, rankingRecordManager) { + let self = this; + this.dbConnectManager.requestTempRanking(type, rankingRecordManager => { + for(let i = 0; i < rankingRecordManager.count; i++) { + if(i > 6) + break; + + let data = rankingRecordManager.getAt(i); + self.printRecord(type, i, data); + } + }); + } + + + printRecord(type, index, data) { + var style = { font: "20px Arial", fill: "#fff", align: "right", boundsAlignH: "right", boundsAlignV: "top" }; + + // rank + style.boundsAlignH = "right"; + game.add.text(this.getPosX(type), this.getPosY(index), data.rank, style) + .setTextBounds(0, 0, 40, 40) + .setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2); + + // user name + game.add.text(this.getPosX(type) + 60, this.getPosY(index), data.userName, style) + .setTextBounds(0, 0, 60, 60) + .setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2); + + // score + let numberWithCommas = NumberUtil.numberWithCommas(data.score); + style.boundsAlignH = "right"; + game.add.text(this.getPosX(type) + 120, this.getPosY(index), numberWithCommas, style) + .setTextBounds(0, 0, 80, 60) .setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2); } - showRankingHour(jsonRankingList) { - if(jsonRankingList == null) { - var rankEmpty = [ ]; - this.textHourRanking.parseList(rankEmpty); + getPosX(type) { + let posX = 0; - return; + switch(type) { + case DBConnectManager.TYPE_MY_RANKING_HOUR: + case DBConnectManager.TYPE_ALL_RANKING_HOUR: + posX = 340; + break; + + case DBConnectManager.TYPE_MY_RANKING_DAY: + case DBConnectManager.TYPE_ALL_RANKING_DAY: + posX = 560; + break; + + case DBConnectManager.TYPE_MY_RANKING_MONTH: + case DBConnectManager.TYPE_ALL_RANKING_MONTH: + posX = 780; } - /* - var recordArray = this.getRankingArrayFromJSON(jsonRankingList2); - */ - var recordArray = this.getRankingArrayFromJSON(jsonRankingList); - // console.log("Ranking Hour : " + recordArray); - this.textHourRanking.parseList(recordArray); - this.showMedal(this.medalHour, this.getMyRankFromJSON(jsonRankingList)); + return posX; } - showRankingDay(jsonRankingList) { - // console.log("Ranking Day : " + jsonRankingList); - if(jsonRankingList == null) { - var rankEmpty = [ ]; - this.textDayRanking.parseList(rankEmpty); - - return; - } - - var recordArray = this.getRankingArrayFromJSON(jsonRankingList); - // console.log("Ranking Day : " + recordArray); - this.textDayRanking.parseList(recordArray); - this.showMedal(this.medalDay, this.getMyRankFromJSON(jsonRankingList)); + getPosY(index) { + return game.world.height / 2 + 90 + 30 * index; } - showRankingMonth(jsonRankingList) { - if(jsonRankingList == null) { - var rankEmpty = [ ]; - this.textMonthRanking.parseList(rankEmpty); - - return; - } - - var recordArray = this.getRankingArrayFromJSON(jsonRankingList); - // console.log("Ranking Month : " + recordArray); - this.textMonthRanking.parseList(recordArray); - this.showMedal(this.medalMonth, this.getMyRankFromJSON(jsonRankingList)); - } - - getRankingArrayFromJSON(jsonRankingList) { - var rankingListCount = jsonRankingList.length; - var myRank = this.getMyRankFromJSON(jsonRankingList); - var myRankIndex = myRank - 1; - // console.log("myRankIndex : " + myRankIndex); - - var startIndex = 0; - var endIndex = rankingListCount; - - if(rankingListCount > 7) { - if(myRank < rankingListCount - 3) { // my rank is better than the worst 3 - if(myRank < 5) { - startIndex = 0; - endIndex = rankingListCount > 7 ? 7 : rankingListCount; - } else { - startIndex = myRankIndex - 3; - endIndex = myRankIndex + 4; - } - } else { // my rank is in the worst 3 - startIndex = rankingListCount > 7 ? rankingListCount - 7 : 0; - endIndex = rankingListCount; - } - } - - var recordArray = []; - for(var i = startIndex; i < endIndex; i++) { - var bestRecordRow = []; - // bestRecordRow[0] = jsonRankingList[i]['UserID']; - bestRecordRow[0] = i + 1; - bestRecordRow[1] = jsonRankingList[i]['Name']; - bestRecordRow[2] = NumberUtil.numberWithCommas(Math.floor(jsonRankingList[i]['BestRecord'])); - // console.log("$BestRecordRow : " + bestRecordRow[0] + ", " + bestRecordRow[1] + ", " + bestRecordRow[2]); - - recordArray.push(bestRecordRow); - } - - return recordArray; - } - - getMyRankFromJSON(jsonRankingList) { - var myRank = -1; - for(var i = 0; i < jsonRankingList.length; i++) { - if(jsonRankingList[i]['UserID'] == sessionStorageManager.playerUserID) { - myRank = i + 1; - } - } - - return myRank; - } - - showMedal(medal, myRank) { - /* - if(myRank > 3) { - medal.alpha = 0; - return; - } - - if(myRank == 1) - medal.loadTexture("medal_gold"); - else if(myRank == 2) - medal.loadTexture("medal_silver"); - else if(myRank == 3) - medal.loadTexture("medal_bronze"); - - medal.alpha = 1; - medal.scale.setTo(0.5); - game.add.tween(medal.scale).to( {x: 0.7, y: 0.7}, 1000, Phaser.Easing.Bounce.Out, true); - */ - } - - makeTemporaryJsonRankingList() { - let jsonRankingList = [ - { "UserID":"17", "Name":"강경모", "BestRecord":"4400" }, - { "UserID":"2", "Name":"강성태", "BestRecord":"3400" }, - { "UserID":"3", "Name":"김기덕", "BestRecord":"2400" }, - { "UserID":"4", "Name":"김남희", "BestRecord":"1400" }, - { "UserID":"5", "Name":"고봉순", "BestRecord":"900" }, - { "UserID":"6", "Name":"파르마", "BestRecord":"800" }, - { "UserID":"1", "Name":"박지상", "BestRecord":"700" }, - { "UserID":"8", "Name":"신현주", "BestRecord":"600" }, - { "UserID":"9", "Name":"꼬봉이", "BestRecord":"500" }, - { "UserID":"10", "Name":"거북이", "BestRecord":"400" }, - { "UserID":"11", "Name":"다람쥐", "BestRecord":"300" }, - { "UserID":"12", "Name":"사시미", "BestRecord":"200" }, - { "UserID":"13", "Name":"태권도", "BestRecord":"100" }, - { "UserID":"14", "Name":"합기도", "BestRecord":"40" }, - { "UserID":"15", "Name":"우습지", "BestRecord":"10" }, - { "UserID":"16", "Name":"하하하", "BestRecord":"4" }, - ]; - - return jsonRankingList; - } - - - } \ No newline at end of file