diff --git a/src/game/lib/db_connect_manager.js b/src/game/lib/db_connect_manager.js index 7bf45b8..4e68cda 100644 --- a/src/game/lib/db_connect_manager.js +++ b/src/game/lib/db_connect_manager.js @@ -62,6 +62,23 @@ DBConnectManager.prototype.requestCheckPlayerLogin = function(maestroName, playe xhr.send("maestro_name=" + maestroName + "&name=" + playerName + "&enter_code=" + enterCode); } +DBConnectManager.prototype.requestPlayerEnterCode = function(maestroID, playerID, onSucceededListener, onFailedListener) { + var xhr = new XMLHttpRequest(); + xhr.open("POST", this.phpPath + "server/player/get_entercode.php", true); + xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xhr.onreadystatechange = function() { + if(xhr.readyState == 4 && xhr.status == 200) { + var replyJSON = JSON.parse(xhr.responseText); + + if(replyJSON != null && replyJSON["EnterCode"] != null) + onSucceededListener(replyJSON); + else + onFailedListener(replyJSON); + } + }; + xhr.send("maestro_id=" + maestroID + "&player_id=" + playerID); +} + /* DBConnectManager.prototype.requestAppList = function(maestroID, onSucceededListener, onFailedListener) { var xhr = new XMLHttpRequest(); diff --git a/src/game/setup/setup.js b/src/game/setup/setup.js index c720408..891267f 100644 --- a/src/game/setup/setup.js +++ b/src/game/setup/setup.js @@ -35,7 +35,7 @@ var Setup = { this.makePrevEnterCodeText(textX, 300); this.makeNewEnterCodeInput(textX, 360); - this.makeCheckEnterCodeButton(game.world.centerX, game.world.centerY + 100); + this.startButton = this.makeCheckEnterCodeButton(game.world.centerX, game.world.centerY + 100); /* this.makeMaestroNameText(textX, 200); this.makeNameText(textX, 300); @@ -69,6 +69,8 @@ var Setup = { // ScreenBottomUI.printCenterText(playingAppName); screenBottomUI.printCenterText("설정"); screenBottomUI.printRightText(sessionStorageManager.getPlayerName()); + + this.loadPrevEnterCode(); }, back: function() { @@ -79,7 +81,7 @@ var Setup = { makePrevEnterCodeText: function(x, y) { this.makeTextField(x, y, "현재의 입장번호 :"); - this.makeTextField(x + 200 + 40, y, "111111"); + this.prevEnterCodeText = this.makeTextField(x + 200 + 40, y, "111111"); }, makeNewEnterCodeInput: function(x, y) { @@ -103,12 +105,14 @@ var Setup = { var setting = new RoundRectButtonSetting(x, y, 200, 100); setting.fontStyle.fontWeight = "bold"; - var startButton = new RoundRectButton( + var checkButton = new RoundRectButton( setting, RoundRectButton.NONE_ICON, "변경", (function() { this.checkNewEnterCode(); }).bind(this) ); - startButton.addShortcutText("Enter"); + checkButton.addShortcutText("Enter"); + + return checkButton; }, makeInputTypeText: function(x, y, text) { @@ -128,55 +132,6 @@ var Setup = { }, -/* - makeMaestroNameText: function(x, y) { - this.makeTextField(x, y, "마에스트로 계정 :"); - this.inputTextMaestroName = this.makeInputTypeText(x, y, ""); - this.inputTextMaestroName.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요"); - }, - - makeNameText: function(x, y) { - this.makeTextField(x, y, "이름 :"); - this.inputTextName = this.makeInputTypeText(x, y, ""); - this.inputTextName.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요"); - }, - - makeEnterCodeText: function(x, y) { - this.makeTextField(x, y, "입장번호 :"); - this.inputTextEnterCode = this.makeInputTypeText(x, y, ""); - this.inputTextEnterCode.canvasInput.placeHolder("입력 후 [ Tab ]키를 누르세요"); - }, - - 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; - }, - - 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"); - }, - - */ - makeInfoText: function(x, y) { var textStyle = { font: "30px Arial", fill: "#faa" }; @@ -186,8 +141,27 @@ var Setup = { this.infoText.strokeThickness = 3; }, + showInfoText: function(message) { + this.infoText.text = message; + }, + checkNewEnterCode: function() { + var newEnterCode = this.inputTextEnterCode.canvasInput._value; + if(newEnterCode == this.prevEnterCode) { + this.showInfoText("기존 입장번호와 동일합니다."); + return; + } + + var accountValidator = new AccountValidator(); + if(accountValidator.isValidPlayerPW(newEnterCode)) { + this.showInfoText("입장번호를 바꾸겠습니다."); + } else { + var errorMessage = accountValidator.messageForInvalidPlayerPW(newEnterCode); + this.showInfoText(errorMessage); + } + + /* var maestroName = this.inputTextMaestroName.canvasInput._value; sessionStorageManager.setPlayerName(this.inputTextName.canvasInput._value); var enterCode = this.inputTextEnterCode.canvasInput._value; @@ -218,6 +192,26 @@ var Setup = { this.loginFailed(jsonData); }).bind(this) ); + */ + }, + + loadPrevEnterCode: function() { + this.prevEnterCode = '1111'; + + var dbConnectManager = new DBConnectManager(); + dbConnectManager.requestPlayerEnterCode( + sessionStorageManager.getMaestroID(), + sessionStorageManager.getPlayerID(), + (function(jsonData) { + this.prevEnterCode = jsonData['EnterCode']; + console.log(this.prevEnterCode); + this.prevEnterCodeText.text = this.prevEnterCode; + }).bind(this), + (function(jsonData) { + this.showInfoText(jsonData['error']); + this.statButton.buttonDisabled(); + }).bind(this) + ); }, loginSucceeded: function(jsonData) { diff --git a/src/web/client/setup.html b/src/web/client/setup.html index 14c8b41..90b2ff2 100644 --- a/src/web/client/setup.html +++ b/src/web/client/setup.html @@ -53,6 +53,9 @@ + + + diff --git a/src/web/js/lib/account_validator.js b/src/web/js/lib/account_validator.js index c00a110..8afc481 100644 --- a/src/web/js/lib/account_validator.js +++ b/src/web/js/lib/account_validator.js @@ -61,7 +61,9 @@ AccountValidator.prototype.isValidPlayerID = function(textID) { } AccountValidator.prototype.messageForInvalidPlayerID = function(textID) { - if(textID.length < Number(AccountValidator.Player_ID_LENGTH_MINIMUM)) + if(typeof textID == "undefined" || textID == null || textID == "") + return "학생 이름을 입력해 주세요."; + else if(textID.length < Number(AccountValidator.Player_ID_LENGTH_MINIMUM)) return "학생 이름은 " + AccountValidator.Player_ID_LENGTH_MINIMUM + "글자 이상이어야 합니다."; else if(textID.length > Number(AccountValidator.PLAYER_ID_LENGTH_MAXIMUM)) return "학생 이름은 " + AccountValidator.PLAYER_ID_LENGTH_MAXIMUM + "글자 이하이어야 합니다."; @@ -79,7 +81,10 @@ AccountValidator.prototype.isValidPlayerPW = function(textPW) { } AccountValidator.prototype.messageForInvalidPlayerPW = function(textPW) { - if(textPW.length < Number(AccountValidator.PLAYER_PW_LENGTH_MINIMUM)) + console.log(textPW); + if(typeof textPW == "undefined" || textPW == null || textPW == "") + return "학생 입장 번호를 입력해 주세요."; + else if(textPW.length < Number(AccountValidator.PLAYER_PW_LENGTH_MINIMUM)) return "학생 입장 번호는 " + AccountValidator.PLAYER_PW_LENGTH_MINIMUM + "자리 이상의 숫자로 입력해 주세요."; else if(textPW.length > Number(AccountValidator.PLAYER_PW_LENGTH_MAXIMUM)) return "학생 입장 번호는 " + AccountValidator.PLAYER_PW_LENGTH_MAXIMUM + "자리 이하의 숫자로 입력해 주세요."; diff --git a/src/web/server/player/get_entercode.php b/src/web/server/player/get_entercode.php new file mode 100644 index 0000000..131e586 --- /dev/null +++ b/src/web/server/player/get_entercode.php @@ -0,0 +1,47 @@ +prepare($query); + $stmt->bind_param("ii", $maestroID, $playerID); + $stmt->execute(); + $stmt->bind_result($enterCode); + // while($stmt->fetch()) + $stmt->fetch(); + $stmt->close(); + + return $enterCode; +} + +?> \ No newline at end of file