MainMenu.prototype = Object.create(Phaser.State.prototype); MainMenu.constructor = MainMenu; function MainMenu() { } MainMenu.prototype.preload = function() { game.load.image('tile_choco', '../../../resources/image/background/tile_choco.png'); game.load.image('home', '../../../resources/image/icon/home.png'); game.load.script('webfont', '//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js'); } // fontLoaded, create method for Google WebFonts test /* MainMenu.prototype.fontLoaded = function() { console.log("fontLoaded"); // this.loadingImage.alpha = 0; // this.text.font = 'Nanum Gothic'; // text2.font = 'Nanum Brush Script'; // this.text3.font = 'Nanum Brush Script'; } MainMenu.prototype.create = function() { console.log("create"); game.stage.backgroundColor = '#4d4d4d'; this.loadingImage = game.add.sprite(GAME_SCREEN_SIZE.x / 2, GAME_SCREEN_SIZE.y / 2, "tile_choco"); this.text = game.add.text(game.world.centerX, game.world.centerY - 150, "- phaser -\n나눔 고딕 웹 폰트\ngoogle web fonts"); this.text.anchor.setTo(0.5); this.text.fontSize = 60; this.text2 = game.add.text(game.world.centerX, game.world.centerY, "기본 default 글꼴"); this.text2.anchor.setTo(0.5); this.text2.fontSize = 60; this.text3 = game.add.text(game.world.centerX, game.world.centerY + 150, "- phaser -\n나눔 브러시 스크립트 웹 폰트\ngoogle web fonts"); this.text3.anchor.setTo(0.5); this.text3.fontSize = 60; } */ MainMenu.prototype.create = function() { this.dbService = new DBService(); this.dbService.setMaestroID(sessionStorageManager.getMaestroID()); this.dbService.setPlayerID(sessionStorageManager.getPlayerID()); // bg var graphics = game.add.graphics(); graphics.beginFill(MainColor.LIGHT_CHOCO_HEX, 1); graphics.drawRect(0, 0,GAME_SCREEN_SIZE.x, GAME_SCREEN_SIZE.y); // graphics.beginFill(MainColor.BLACK_HEX, 1); graphics.beginFill(MainColor.CHOCO_HEX, 1); graphics.drawRect(0, 0,GAME_SCREEN_SIZE.x, MainMenu.MAIN_MENU_HEIGHT); this.appGroupButtons = {}; // this.makeAppGroupButtons(); } MainMenu.prototype.fontLoaded = function() { // keyboard shortcut this.keyboardShortcut = new KeyboardShortcut(); this.keyboardShortcut.addCallback( Phaser.KeyCode.ESC, // keyCode null, // keyDownHandler (function() { this.back(); }).bind(this), // keyUpHandler "menu_app" // callerClassName ); // top ui // var screenTopUI = new ScreenTopUI(); // screenTopUI.makeBackButton( (function() { this.back(); }).bind(this) ); // screenTopUI.makeFullScreenButton(); // this.loadAllowEditEnterCode(screenTopUI); // this.appGroupButtons = {}; this.makeAppGroupButtons(); // console.log(this.appGroupButtons); this.appGroupButtons.backButton.applyLoadedFont(); this.appGroupButtons.settingButton.applyLoadedFont(); // bottom ui /* var screenBottomUI = new ScreenBottomUI(); // ScreenBottomUI.printLeftText("게임 진행 정보"); // var playingAppName = appInfoManager.getAppNameKorean(sessionStorageManager.playingAppName); // ScreenBottomUI.printCenterText(playingAppName); screenBottomUI.printCenterText("메뉴"); screenBottomUI.printRightText(sessionStorageManager.getPlayerName()); */ new WelcomePlayerText(sessionStorageManager.getPlayerName()); if(isExperiencePlayerAccount()) { game.time.events.add(Phaser.Timer.SECOND * 2.5, (function() { new NoticeExperiencePlayerText(); } ), this ); } this.loadAppData(); } MainMenu.prototype.back = function() { sessionStorageManager.clear(); location.href = '../../web/client/login.html'; } MainMenu.prototype.loadAllowEditEnterCode = function(screenTopUI) { /* var dbConnectManager = new DBConnectManager(); dbConnectManager.requestAllowEditEnterCode( sessionStorageManager.getMaestroID(), (function(replyJSON) { if(replyJSON["AllowEditEnterCode"] == "1") { screenTopUI.makeSetupButton( (function() { console.log("setup"); location.href = '../../web/client/setup.html'; }).bind(this) ); } }).bind(this), (function(replyJSON) { this.loadFailed(replyJSON); }).bind(this) ); */ } MainMenu.prototype.loadAppData = function() { // this.dbService.requestMainMenuAppData( // (function(replyJSON) { // this.updateAppGroupButton(replyJSON.appGroupData); // this.updateAppButtons(replyJSON.appData); // }) // ); /* var dbConnectManager = new DBConnectManager(); dbConnectManager.requestMenuAppList( sessionStorageManager.getMaestroID(), (function(replyJSON) { this.loadSucceeded(replyJSON); }).bind(this), (function(replyJSON) { this.loadFailed(replyJSON); }).bind(this) ); */ } MainMenu.prototype.loadSucceeded = function(replyJSON) { // console.log(replyJSON); this.makeMouseAppButtons( replyJSON.MouseAppList, replyJSON.MouseActiveAppList ); this.makeTypingButtons( replyJSON.TypingPracticeAppCount, replyJSON.TypingTestAppCount, replyJSON.TypingAppList, replyJSON.TypingActiveAppList ); } MainMenu.prototype.hasApp = function(appID, appList) { for(var i = 0; i < appList.length; i++) { if(appList[i].AppID === appID) return true; } return false; } MainMenu.prototype.makeAppGroupButtons = function() { this.makeQuitButton(); } MainMenu.prototype.makeQuitButton = function() { var setting = new ButtonSetting(980, 40, 60, 60, 5, 10); // var quitButton = new ChocoButton( // setting, // choco button setting, // (function() { /*this.back();*/ console.log("quit"); }).bind(this) // ); // quitButton.addIcon("tile_choco"); // quitButton.setIconSize(30); var backButton = new BackButton( (function() { console.log("back"); }).bind(this) ); var settingButton = new SettingButton( (function() { console.log("setting"); }).bind(this) ); this.appGroupButtons.settingButton = settingButton; this.appGroupButtons.backButton = backButton; } MainMenu.prototype.makeMouseAppButtons = function(appList, activeAppList) { // console.log(appList); var mouseAppCount = Object.keys(appList).length; for(var i = 0; i < mouseAppCount; i++) { var posX = this.getButtonPosX(i, mouseAppCount); var posY = this.getButtonPosY(i, mouseAppCount, GameAppButton.BUTTON_UPPER_POS_Y); var app = appList[i]; var gameAppButton = new GameAppButton( posX, posY, GameAppButton.TYPE_MOUSE_APP, RoundRectButton.NONE_ICON, app.KoreanName, { AppID: app.AppID, AppName: app.AppName, KoreanName: app.KoreanName } ); gameAppButton.text.font = "Nanum Brush Script"; if(!this.hasApp(app.AppID, activeAppList)) gameAppButton.setInputEnabled(false); } } MainMenu.prototype.makeTypingButtons = function(typingPracticeAppCount, typingTestAppCount, appList, activeAppList) { // console.log(typingPracticeAppCount); // console.log(typingTestAppCount); // console.log(appList); var isTypingPracticeAppExist = typingPracticeAppCount > 0 ? true : false; var isTypingTestAppExist = typingTestAppCount > 0 ? true : false; var typingAppTotalCount = Object.keys(appList).length; var typingAppIndex = 0; // typing tab buttons var typingPracticeTabButton = new TypingTabButton( TypingTabButton.PRACTICE_BUTTON_POS_X, TypingTabButton.BUTTON_POS_Y, "", "타자 연습", (function() { location.href = '../../web/client/menu_typing_practice.html'; }) ); if(typingPracticeAppCount === 0) typingPracticeTabButton.setInputEnabled(false); var typingTestTabButton = new TypingTabButton( TypingTabButton.TEST_BUTTON_POS_X, TypingTabButton.BUTTON_POS_Y, "", "타자 시험", (function() { location.href = '../../web/client/menu_typing_test.html'; }) ); if(typingTestAppCount === 0) typingTestTabButton.setInputEnabled(false); // typing app buttons for(var typingButtonIndex = 0; typingButtonIndex < typingAppTotalCount; typingButtonIndex++) { var posX = this.getButtonPosX( typingButtonIndex, typingAppTotalCount ); var posY = this.getButtonPosY( typingButtonIndex, typingAppTotalCount, GameAppButton.BUTTON_LOWER_POS_Y ); var app = appList[typingAppIndex]; var isKoreanTypingApp = app.AppID < 32 ? true : false; var gameAppButton = new GameAppButton( posX, posY, GameAppButton.TYPE_TYPING_APP, RoundRectButton.NONE_ICON, // "icon_fullscreen", // (isKoreanTypingApp ? "(한글)" : "(영문)") + "\n" + app.KoreanName, app.KoreanName, { AppID: app.AppID, AppName: app.AppName, KoreanName: app.KoreanName } ); if(!this.hasApp(app.AppID, activeAppList)) gameAppButton.setInputEnabled(false); typingAppIndex++; } } MainMenu.prototype.getButtonPosX = function(index, buttonCount) { var gap = GameAppButton.BUTTON_WIDTH + GameAppButton.BUTTON_GAP; var maxColumnNum = Math.floor( (game.world.width - GameAppButton.MARGIN_VERTICAL) / gap ); // console.log("maxColumnNum : " + maxColumnNum); var rowCount = Math.ceil(buttonCount / maxColumnNum); // console.log("rowCount : " + rowCount); var columnIndex = index % maxColumnNum; // console.log("columnIndex : " + columnIndex); var rowIndex = Math.floor(index / maxColumnNum); // console.log("rowIndex : " + rowIndex); var columnCountForThisRow = 0; if(rowIndex < rowCount - 1) columnCountForThisRow = maxColumnNum; else columnCountForThisRow = buttonCount - (maxColumnNum * rowIndex); // console.log("columnCountForThisRow : " + columnCountForThisRow); var startX = game.world.width / 2 - ( (gap / 2) * (columnCountForThisRow - 1) ); return startX + gap * columnIndex; } MainMenu.prototype.getButtonPosY = function(index, buttonCount, startPosY) { var gap = GameAppButton.BUTTON_HEIGHT + GameAppButton.BUTTON_GAP; var maxColumnNum = Math.floor( (game.world.width - GameAppButton.MARGIN_VERTICAL) / gap ); // console.log("maxColumnNum : " + maxColumnNum); var rowCount = Math.ceil(buttonCount / maxColumnNum); // console.log("rowCount : " + rowCount); var rowIndex = Math.floor(index / maxColumnNum); // console.log("rowIndex : " + rowIndex); var startY = startPosY - ( (gap / 2) * (rowCount - 1) ); return startY + gap * rowIndex; } MainMenu.prototype.loadFailed = function(replyJSON) { // console.log('login failed, jsonData : ' + JSON.stringify(replyJSON)); } MainMenu.MAIN_MENU_HEIGHT = 80;