Files
chocomae/src/game/login/login.js
T
2019-09-15 19:25:43 +09:00

188 lines
5.9 KiB
JavaScript

Login.prototype = Object.create(Phaser.State.prototype);
Login.constructor = Login;
function Login() {
}
Login.prototype.preload = function() {
game.load.image('icon_fullscreen', '../../../resources/image/icon/fullscreen_white.png');
game.load.image('icon_home', '../../../resources/image/icon/home.png');
}
Login.prototype.create = function() {
// sessionStorageManager.clear(); // receive maestro_name from player_login_with_maestro.php
this.game.stage.backgroundColor = '#4d4d4d';
this.textStyle = { font: "bold 32px Arial", fill: "#fff", align: "right", boundsAlignH: "right", boundsAlignV: "middle" };
// keyboard shortcut
this.keyboardShortcut = new KeyboardShortcut();
this.keyboardShortcut.addCallback(
Phaser.KeyCode.ESC, // keyCode
null, // keyDownHandler
(function() { this.back(); }).bind(this), // keyUpHandler
"login" // callerClassName
);
this.keyboardShortcut.addCallback(
Phaser.KeyCode.ENTER, // keyCode
null, // keyDownHandler
(function() { this.startMenu(); }).bind(this), // keyUpHandler
"start" // callerClassName
);
// top ui
var screenTopUI = new ScreenTopUI();
screenTopUI.makeHomeButton( (function() { this.back(); }).bind(this) );
screenTopUI.makeFullScreenButton();
var textX = this.game.world.centerX - 320;
this.makeMaestroNameText(textX, 200);
this.makeNameText(textX, 300);
this.makeEnterCodeText(textX, 360);
if(sessionStorageManager.getMaestroName() != null) {
this.inputTextMaestroName.canvasInput.value(sessionStorageManager.getMaestroName());
} else {
if(isDebugMode()) {
this.inputTextMaestroName.canvasInput.value("삼화초");
this.inputTextName.canvasInput.value("박지상");
this.inputTextEnterCode.canvasInput.value("760621");
}
}
if(sessionStorageManager.getMaestroID() === null || sessionStorageManager.getMaestroID() == -1)
this.inputTextMaestroName.canvasInput.focus();
else
this.inputTextName.canvasInput.focus();
this.makeStartButton(game.world.centerX, game.world.centerY + 100);
this.makeInfoText();
}
Login.prototype.back = function() {
sessionStorageManager.clear();
location.href = '../../web/main/index.html';
}
Login.prototype.makeMaestroNameText = function(x, y) {
this.makeTextField(x, y, "마에스트로 계정 :");
this.inputTextMaestroName = this.makeInputTypeText(x, y, "");
this.inputTextMaestroName.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요");
}
Login.prototype.makeNameText = function(x, y) {
this.makeTextField(x, y, "이름 :");
this.inputTextName = this.makeInputTypeText(x, y, "");
this.inputTextName.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요");
}
Login.prototype.makeEnterCodeText = function(x, y) {
this.makeTextField(x, y, "입장번호 :");
this.inputTextEnterCode = this.makeInputTypeText(x, y, "");
this.inputTextEnterCode.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요");
}
Login.prototype.makeTextField = function(x, y, text) {
return game.add.text(x, y, text, this.textStyle)
.setTextBounds(0, 0, 200, 0)
.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2)
.boundsAlignH = 'right';
}
Login.prototype.makeInputTypeText = function(x, y, text) {
var inputText = new InputTypeText(x + 420, y);
inputText.anchor.set(0.5);
inputText.canvasInput.value('');
if(isDebugMode()) {
inputText.canvasInput.value(text);
}
inputText.canvasInput._onkeyup = (function() {
if(event.keyCode == Phaser.Keyboard.ENTER) {
this.startMenu();
}
}).bind(this);
return inputText;
}
Login.prototype.makeStartButton = function(x, y) {
var setting = new RoundRectButtonSetting(x, y, 200, 100);
setting.fontStyle.fontWeight = "bold";
var startButton = new RoundRectButton(
setting,
RoundRectButton.NONE_ICON, "시작",
(function() { this.startMenu(); }).bind(this)
);
startButton.addShortcutText("Enter");
}
Login.prototype.makeInfoText = function(x, y) {
var textStyle = { font: "30px Arial", fill: "#faa" };
this.infoText = game.add.text(game.world.centerX, 640, "", textStyle);
this.infoText.anchor.set(0.5);
this.infoText.stroke = "#333";
this.infoText.strokeThickness = 3;
}
Login.prototype.startMenu = function() {
var maestroName = this.inputTextMaestroName.canvasInput._value;
sessionStorageManager.setPlayerName(this.inputTextName.canvasInput._value);
var enterCode = this.inputTextEnterCode.canvasInput._value;
if(maestroName == "") {
this.infoText.text = "마에스트로 계정 이름을 입력해주세요";
this.inputTextMaestroName.canvasInput.focus();
return;
} else if(sessionStorageManager.getPlayerName() == "") {
this.infoText.text = "학생의 이름을 입력해주세요";
this.inputTextName.canvasInput.focus();
return;
} else if(enterCode == "") {
this.infoText.text = "학생의 입장번호를 입력해주세요";
this.inputTextEnterCode.canvasInput.focus();
return;
}
var dbConnectManager = new DBConnectManager();
dbConnectManager.requestCheckPlayerLogin(
maestroName,
sessionStorageManager.getPlayerName(),
enterCode,
(function(jsonData) {
this.loginSucceeded(jsonData);
}).bind(this),
(function(jsonData) {
this.loginFailed(jsonData);
}).bind(this)
);
}
Login.prototype.loginSucceeded = function(jsonData) {
sessionStorageManager.setMaestroID(jsonData['MaestroID']);
sessionStorageManager.setMaestroAccountType(jsonData['MaestroAccountType']);
sessionStorageManager.setPlayerID(jsonData['PlayerID']);
sessionStorageManager.setPlayerName(jsonData['PlayerName']);
sessionStorageManager.setPlayerAccountType(jsonData['PlayerAccountType']);
sessionStorageManager.setPlayingAppName("menu");
// location.href = '../../web/client/menu_app.html';
location.href = '../../web/client/main_menu.html';
// console.log("===== after login =====");
// console.log(sessionStorageManager.playerID);
}
Login.prototype.loginFailed = function(jsonData) {
sessionStorageManager.clear();
// show retry message
// console.log('login failed, jsonData : ' + JSON.stringify(jsonData));
if(jsonData["error"] !== null) {
this.infoText.text = jsonData["error"];
}
}