diff --git a/src/game/menu/menu_app.js b/src/game/menu/menu_app.js index 85adc10..3d70a4b 100644 --- a/src/game/menu/menu_app.js +++ b/src/game/menu/menu_app.js @@ -44,7 +44,10 @@ var MenuApp = { // top ui var screenTopUI = new ScreenTopUI(); screenTopUI.makeBackButton( (function() { this.back(); }).bind(this) ); - screenTopUI.makeSetupButton( (function() { console.log("setup"); }).bind(this) ); + screenTopUI.makeSetupButton( (function() { + console.log("setup"); + location.href = '../../web/client/setup.html'; + }).bind(this) ); screenTopUI.makeFullScreenButton(); diff --git a/src/game/setup/main.js b/src/game/setup/main.js new file mode 100644 index 0000000..0f6c52b --- /dev/null +++ b/src/game/setup/main.js @@ -0,0 +1,13 @@ +///////////////////////////// +// Main game + +var CONTENT_ID = "Setup"; + +var game = new Phaser.Game( + GAME_SCREEN_SIZE.x, GAME_SCREEN_SIZE.y, + Phaser.CANVAS, CONTENT_ID +); + + +game.state.add('Setup', Setup); +game.state.start('Setup'); diff --git a/src/game/setup/setup.js b/src/game/setup/setup.js new file mode 100644 index 0000000..a2b4059 --- /dev/null +++ b/src/game/setup/setup.js @@ -0,0 +1,184 @@ +var Setup = { + + preload: function() { + game.load.image('icon_fullscreen', '../../../resources/image/icon/fullscreen_white.png'); + game.load.image('icon_home', '../../../resources/image/icon/home.png'); + }, + + create: function() { + 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 + "setup" // 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(); + }, + + back: function() { + sessionStorageManager.clear(); + location.href = '../../web/main/index.html'; + }, + + 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 ]키를 누르세요"); + }, + + 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'; + }, + + 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" }; + this.infoText = game.add.text(game.world.centerX, 640, "", textStyle); + this.infoText.anchor.set(0.5); + this.infoText.stroke = "#333"; + this.infoText.strokeThickness = 3; + }, + + + 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) + ); + }, + + 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'; + + // console.log("===== after login ====="); + // console.log(sessionStorageManager.playerID); + }, + + 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"]; + } + } + +} \ No newline at end of file diff --git a/src/web/client/setup.html b/src/web/client/setup.html new file mode 100644 index 0000000..473485b --- /dev/null +++ b/src/web/client/setup.html @@ -0,0 +1,79 @@ + + +
+ + + + + + + + + + + +