298 lines
7.8 KiB
JavaScript
298 lines
7.8 KiB
JavaScript
var Ranking = {
|
|
|
|
preload: function() {
|
|
game.load.image('icon_fullscreen', '../../../resources/image/icon/fullscreen_white.png');
|
|
},
|
|
|
|
create: function() {
|
|
self = this;
|
|
|
|
this.dbConnectManager = new DBConnectManager();
|
|
|
|
this.jsonData = null;
|
|
this.mode = Ranking.MODE_HOUR;
|
|
|
|
this.game.stage.backgroundColor = '#4d4d4d';
|
|
|
|
// var phaser = game.add.image(game.world.centerX, game.world.centerY, 'phaser');
|
|
// phaser.anchor.set(0.5);
|
|
// phaser.alpha = 0.1;
|
|
|
|
|
|
// keyboard shortcut
|
|
this.keyboardShortcut = new KeyboardShortcut();
|
|
this.keyboardShortcut.addCallback(
|
|
Phaser.KeyCode.ESC, // keyCode
|
|
null, // keyDownHandler
|
|
(function() { this.back(); }).bind(this), // keyUpHandler
|
|
"ranking" // callerClassName
|
|
);
|
|
|
|
// top ui
|
|
var screenTopUI = new ScreenTopUI();
|
|
screenTopUI.makeBackButton( (function() { this.back(); }).bind(this) );
|
|
screenTopUI.makeFullScreenButton();
|
|
|
|
|
|
var resultTextStyle = textStyleBasic;
|
|
resultTextStyle.font = "bold 42px Arial";
|
|
|
|
this.textTitle = game.add.text(GAME_SCREEN_SIZE.x / 2, 32, "수업시간 순위", resultTextStyle)
|
|
.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2);
|
|
this.textTitle.anchor.set(0.5);
|
|
this.textTitle.addColor("#ff6666", 0);
|
|
|
|
|
|
// contents
|
|
|
|
// rank
|
|
var rankAreaPositionX = 160;
|
|
var rankAreaPositionY = 90;
|
|
var style = { font: "34px Arial", fill: "#fff", tabs: [ 60, 160, 160 ] };
|
|
this.textRanking1to10 = game.add.text(rankAreaPositionX, rankAreaPositionY , '', style)
|
|
.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2);
|
|
this.textRanking11to20 = game.add.text(rankAreaPositionX + 420, rankAreaPositionY, '', style)
|
|
.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2);
|
|
|
|
|
|
var buttonPositionY = 640;
|
|
var buttonHour = this.makeTextButton(game.world.centerX - 220, buttonPositionY, "수업시간 순위", this.showRankingHour);
|
|
// buttonHour.inputEnabled = false;
|
|
var buttonDay = this.makeTextButton(game.world.centerX, buttonPositionY, "오늘의 순위", this.showRankingDay);
|
|
// buttonDay.inputEnabled = false;
|
|
var buttonMonth = this.makeTextButton(game.world.centerX + 220, buttonPositionY, "이달의 순위", this.showRankingMonth);
|
|
// buttonMonth.inputEnabled = false;
|
|
|
|
|
|
// bottom ui
|
|
var screenBottomUI = new ScreenBottomUI();
|
|
// ScreenBottomUI.printLeftText("게임 진행 정보");
|
|
// var playingAppName = appInfoManager.getAppNameKorean(sessionStorageManager.getPlayingAppName());
|
|
// ScreenBottomUI.printCenterText(playingAppName);
|
|
screenBottomUI.printCenterText("랭킹");
|
|
screenBottomUI.printRightText(sessionStorageManager.getPlayerName());
|
|
|
|
this.getRecordToRankingServer();
|
|
game.time.events.loop(Phaser.Timer.SECOND * 10, this.getRecordToRankingServer, this);
|
|
},
|
|
|
|
|
|
back: function() {
|
|
location.href = '../../web/client/start.html';
|
|
},
|
|
|
|
makeTextButton: function(x, y, buttonText, eventListener) {
|
|
var setting = new RoundRectButtonSetting(x, y, 200, 100);
|
|
setting.fontStyle.fontWeight = "bold";
|
|
switch(buttonText) {
|
|
case "수업시간 순위":
|
|
setting.strokeColors = {
|
|
out: 0xddcccc,
|
|
over: 0xccaaaa,
|
|
down: 0xbb9999,
|
|
disabled: 0x333333
|
|
};
|
|
setting.buttonColors = {
|
|
out: 0xffeeee,
|
|
over: 0xddcccc,
|
|
down: 0xccaaaa,
|
|
disabled: 0x333333
|
|
};
|
|
setting.textColors = {
|
|
out: "#f00",
|
|
over: "#f00",
|
|
down: "#f00",
|
|
disabled: "#999"
|
|
};
|
|
break;
|
|
|
|
case "오늘의 순위":
|
|
setting.strokeColors = {
|
|
out: 0xccccdd,
|
|
over: 0xaaaacc,
|
|
down: 0x9999bb,
|
|
disabled: 0x333333
|
|
};
|
|
setting.buttonColors = {
|
|
out: 0xeeeeff,
|
|
over: 0xccccdd,
|
|
down: 0xaaaacc,
|
|
disabled: 0x333333
|
|
};
|
|
setting.textColors = {
|
|
out: "#00f",
|
|
over: "#00f",
|
|
down: "#00f",
|
|
disabled: "#999"
|
|
};
|
|
break;
|
|
|
|
case "이달의 순위":
|
|
setting.strokeColors = {
|
|
out: 0xccddcc,
|
|
over: 0xaaccaa,
|
|
down: 0x99bb99,
|
|
disabled: 0x333333
|
|
};
|
|
setting.buttonColors = {
|
|
out: 0xeeffee,
|
|
over: 0xccddcc,
|
|
down: 0xaaccaa,
|
|
disabled: 0x333333
|
|
};
|
|
setting.textColors = {
|
|
out: "#0f0",
|
|
over: "#0f0",
|
|
down: "#0f0",
|
|
disabled: "#999"
|
|
};
|
|
break;
|
|
|
|
}
|
|
|
|
return new RoundRectButton(setting, RoundRectButton.NONE_ICON, buttonText, eventListener);
|
|
},
|
|
|
|
getRecordToRankingServer: function() {
|
|
// console.log("getRecordToRankingServer : " + this.mode);
|
|
var self = this;
|
|
|
|
this.dbConnectManager.requestAppRanking(
|
|
sessionStorageManager.getMaestroID(),
|
|
sessionStorageManager.getPlayingAppID(),
|
|
(function(jsonData) {
|
|
self.showRanking(jsonData);
|
|
}),
|
|
(function(jsonData) {
|
|
self.showRanking(null);
|
|
})
|
|
);
|
|
},
|
|
|
|
showRankingHour: function() {
|
|
self.mode = Ranking.MODE_HOUR;
|
|
self.textTitle.text = "수업시간 순위";
|
|
self.textTitle.addColor("#ff6666", 0);
|
|
self.getRecordToRankingServer();
|
|
},
|
|
|
|
showRankingDay: function() {
|
|
self.mode = Ranking.MODE_DAY;
|
|
self.textTitle.text = "오늘의 순위";
|
|
self.textTitle.addColor("#9999ff", 0);
|
|
self.getRecordToRankingServer();
|
|
},
|
|
|
|
showRankingMonth: function() {
|
|
self.mode = Ranking.MODE_MONTH;
|
|
self.textTitle.text = "이달의 순위";
|
|
self.textTitle.addColor("#99ff99", 0);
|
|
self.getRecordToRankingServer();
|
|
},
|
|
|
|
showRanking: function(jsonRankingData) {
|
|
// console.log(jsonRankingData);
|
|
|
|
if(sessionStorageManager.getMaestroAccountType() == 101) {
|
|
var recordArray = this.getDummyRankList();
|
|
this.printRanking(recordArray);
|
|
|
|
return;
|
|
}
|
|
|
|
if(jsonRankingData === null) {
|
|
var rankEmpty = [ ];
|
|
this.textRanking1to10.parseList(rankEmpty);
|
|
this.textRanking11to20.parseList(rankEmpty);
|
|
|
|
return;
|
|
}
|
|
|
|
var jsonRankingList = null;
|
|
if(this.mode === Ranking.MODE_HOUR)
|
|
jsonRankingList = jsonRankingData.rankingHour;
|
|
else if(this.mode === Ranking.MODE_DAY)
|
|
jsonRankingList = jsonRankingData.rankingDay;
|
|
else if(this.mode === Ranking.MODE_MONTH)
|
|
jsonRankingList = jsonRankingData.rankingMonth;
|
|
|
|
if(jsonRankingList === null) {
|
|
var rankEmpty = [ ];
|
|
this.textRanking1to10.parseList(rankEmpty);
|
|
this.textRanking11to20.parseList(rankEmpty);
|
|
|
|
return;
|
|
}
|
|
|
|
var recordArray = this.getRankingArrayFromJSON(jsonRankingList);
|
|
this.printRanking(recordArray);
|
|
},
|
|
|
|
|
|
printRanking: function(recordArray) {
|
|
var recordTop10 = [];
|
|
var recordTop20 = [];
|
|
for(var i = 0; i < 10; i++) {
|
|
if(i < recordArray.length)
|
|
recordTop10.push(recordArray[i]);
|
|
if(i + 10 < recordArray.length)
|
|
recordTop20.push(recordArray[i + 10]);
|
|
}
|
|
this.textRanking1to10.parseList(recordTop10);
|
|
this.textRanking11to20.parseList(recordTop20);
|
|
},
|
|
|
|
getRankingArrayFromJSON: function(jsonRankingList) {
|
|
// if(isDebugMode())
|
|
// return this.getDummyRankList();
|
|
|
|
var rankingListCount = jsonRankingList.length;
|
|
|
|
var recordArray = [];
|
|
for(var i = 0; i < rankingListCount; i++) {
|
|
var bestRecordRow = [];
|
|
// bestRecordRow[0] = jsonRankingList[i]['UserID'];
|
|
bestRecordRow[0] = i + 1;
|
|
bestRecordRow[1] = jsonRankingList[i]['Name'];
|
|
bestRecordRow[2] = Math.floor(jsonRankingList[i]['BestRecord']);
|
|
// console.log("$BestRecordRow : " + bestRecordRow[0] + ", " + bestRecordRow[1] + ", " + bestRecordRow[2]);
|
|
|
|
recordArray.push(bestRecordRow);
|
|
}
|
|
|
|
return recordArray;
|
|
},
|
|
|
|
getDummyRankList: function() {
|
|
var dummyRankList = [
|
|
[ '1', 'test1', '400' ],
|
|
[ '2', 'test2', '300' ],
|
|
[ '3', 'test3', '200' ],
|
|
[ '4', 'test4', '100' ],
|
|
[ '5', 'test5', '90' ],
|
|
[ '6', 'test6', '80' ],
|
|
[ '7', 'test7', '70' ],
|
|
[ '8', 'test8', '60' ],
|
|
[ '9', 'test9', '50' ],
|
|
[ '10', 'test10', '40' ],
|
|
[ '11', 'test11', '30' ],
|
|
[ '12', 'test12', '20' ],
|
|
[ '13', 'test13', '10' ],
|
|
[ '14', 'test14', '9' ],
|
|
[ '15', 'test15', '8' ],
|
|
[ '16', 'test16', '7' ],
|
|
[ '17', 'test17', '6' ],
|
|
[ '18', 'test18', '5' ],
|
|
[ '19', 'test19', '4' ],
|
|
[ '20', 'test20', '3' ],
|
|
[ '21', 'test21', '2' ],
|
|
[ '22', 'test22', '1' ],
|
|
];
|
|
return dummyRankList;
|
|
}
|
|
|
|
}
|
|
|
|
Ranking.MODE_HOUR = "mode_hour";
|
|
Ranking.MODE_DAY = "mode_day";
|
|
Ranking.MODE_MONTH = "mode_month"; |