var MenuApp = { preload: function() { game.load.image('icon_fullscreen', '../../../resources/image/icon/fullscreen_white.png'); }, create: function() { game.stage.backgroundColor = '#4d4d4d'; // mouse app area var mouseBG = new AppAreaBG( AppAreaBG.COLOR_MOUSE_APP, 1, 0, 60, GAME_SCREEN_SIZE.x, 280 ); mouseBG.printText( "마우스 연습 앱", game.world.centerX, 200, 170, "#000", 0.03 ); // typing app area var typingBG = new AppAreaBG( AppAreaBG.COLOR_TYPING_APP, 1, 0, 340, GAME_SCREEN_SIZE.x, 378 ); typingBG.printText( "타 자 연 습 앱", game.world.centerX, 490, 170, "#000", 0.03 ); // 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(); // 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(); }, back: function() { sessionStorageManager.clear(); location.href = '../../web/client/login.html'; }, loadAppData: function() { var dbConnectManager = new DBConnectManager(); dbConnectManager.requestMenuAppList( sessionStorageManager.getMaestroID(), (function(replyJSON) { this.loadSucceeded(replyJSON); }).bind(this), (function(replyJSON) { this.loadFailed(replyJSON); }).bind(this) ); }, loadSucceeded: function(replyJSON) { // console.log(replyJSON); this.makeMouseAppButtons( replyJSON.MouseAppList, replyJSON.MouseActiveAppList ); this.makeTypingButtons( replyJSON.TypingPracticeAppCount, replyJSON.TypingTestAppCount, replyJSON.TypingAppList, replyJSON.TypingActiveAppList ); }, hasApp: function(appID, appList) { for(var i = 0; i < appList.length; i++) { if(appList[i].AppID === appID) return true; } return false; }, 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 } ); if(!this.hasApp(app.AppID, activeAppList)) gameAppButton.setInputEnabled(false); } }, 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++; } }, 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; }, 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; }, loadFailed: function(replyJSON) { // console.log('login failed, jsonData : ' + JSON.stringify(replyJSON)); } }