diff --git a/src/game/lib/global/global_variables.js b/src/game/lib/global/global_variables.js index 0bc7b93..458f0d3 100644 --- a/src/game/lib/global/global_variables.js +++ b/src/game/lib/global/global_variables.js @@ -60,6 +60,8 @@ function printSessionStorage() { console.log("record : " + sessionStorageManager.getRecord()); console.log("appHighestRecord : " + sessionStorageManager.getAppHighestRecord()); console.log("writingID : " + sessionStorageManager.getWritingID()); + console.log("appGroup : " + sessionStorageManager.getAppGroup()); + console.log("language : " + sessionStorageManager.getLanguage()); } function isLogin() { diff --git a/src/game/lib/session_storage_manager.js b/src/game/lib/session_storage_manager.js index 9e11376..dcfd087 100644 --- a/src/game/lib/session_storage_manager.js +++ b/src/game/lib/session_storage_manager.js @@ -115,6 +115,23 @@ SessionStorageManager.prototype.getWritingID = function() { return sessionStorage.getItem("writingID"); } +// main menu +SessionStorageManager.prototype.setAppGroup = function(value) { + sessionStorage.setItem("appGroup", value); +} +SessionStorageManager.prototype.getAppGroup = function() { + return sessionStorage.getItem("appGroup"); +} + +SessionStorageManager.prototype.setLanguage = function(value) { + sessionStorage.setItem("language", value); +} +SessionStorageManager.prototype.getLanguage = function() { + return sessionStorage.getItem("language"); +} + + + SessionStorageManager.prototype.resetPlayingAppData = function() { this.removeItem("playingAppID"); this.removeItem("playingAppName"); diff --git a/src/game/main_menu/main_menu.js b/src/game/main_menu/main_menu.js index 7b1693e..f4d23a6 100644 --- a/src/game/main_menu/main_menu.js +++ b/src/game/main_menu/main_menu.js @@ -39,7 +39,15 @@ MainMenu.prototype.create = function() { graphics.drawRect(0, 0, GAME_SCREEN_SIZE.x, MainMenu.MAIN_MENU_HEIGHT); this.appGroupTabLayout = null; + this.typingPracticeGroupTab = null; + this.typingTestGroupTab = null; + this.typingExamGroupTab = null; + this.typingPlayGroupTab = null; + this.mousePlayGroupTab = null; + this.languageTabLayout = null; + this.koreanTab = null; + this.englishTab = null; this.typingAppButtons = new Array(); this.makeTypingAppButtons(); @@ -48,10 +56,16 @@ MainMenu.prototype.create = function() { this.playAppButtons = new Array(); this.makePlayAppButtons(); - this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_PRACTICE; // this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_EXAM; - this.selectedLanguage = MainMenu.LANGUAGE_KOREAN; // this.animalRecordList.printScore(Animal.TYPE_PRACTICE); + if(sessionStorageManager.getAppGroup() === null) + this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_PRACTICE; + else + this.selectedAppGroup = parseInt(sessionStorageManager.getAppGroup()); + if(sessionStorageManager.getLanguage() === null) + this.selectedLanguage = MainMenu.LANGUAGE_KOREAN; + else + this.selectedLanguage = parseInt(sessionStorageManager.getLanguage()); } MainMenu.prototype.fontLoaded = function() { @@ -67,20 +81,21 @@ MainMenu.prototype.fontLoaded = function() { // top UI this.makeButtons(); - this.makeAppGroupTab(); - - // bottom UI - this.makeAnimalRecordList(); - this.makeLanguageTab(); - // this.animalRecordList.hide(); - // this.languageTabLayout.hide(); - this.backButton.applyLoadedFont(); this.settingButton.applyLoadedFont(); + + this.makeAppGroupTab(); + this.makeLanguageTab(); this.appGroupTabLayout.applyLoadedFont(); - this.animalRecordList.applyLoadedFont(); + + this.languageTabLayout.hide(); this.languageTabLayout.applyLoadedFont(); + this.makeAnimalRecordList(); + this.animalRecordList.hide(); + this.animalRecordList.applyLoadedFont(); + + // welcome message new WelcomePlayerText(sessionStorageManager.getPlayerName()); if(isExperiencePlayerAccount()) { @@ -90,9 +105,15 @@ MainMenu.prototype.fontLoaded = function() { ); } - this.loadAppData(); + + this.activeSavedAppGroupTab(); + this.activeSavedLanguageTab(); + + // this.loadAppData(); } + + MainMenu.prototype.back = function() { sessionStorageManager.clear(); location.href = '../../web/client/login.html'; @@ -121,6 +142,9 @@ MainMenu.prototype.loadAllowEditEnterCode = function(screenTopUI) { } MainMenu.prototype.loadAppData = function() { + // this.activeSavedAppGroupTab(); + // this.activeSavedLanguageTab(); + this.dbService.requestMainMenuAppData( this.selectedAppGroup, this.selectedLanguage, @@ -133,21 +157,10 @@ MainMenu.prototype.loadAppData = function() { console.log(replyJSON); }).bind(this) ); - - /* - var dbConnectManager = new DBConnectManager(); - dbConnectManager.requestMenuAppList( - sessionStorageManager.getMaestroID(), - (function(replyJSON) { - this.loadSucceeded(replyJSON); - }).bind(this), - (function(replyJSON) { - this.loadFailed(replyJSON); - }).bind(this) - ); - */ } + + MainMenu.prototype.makeTypingAppButtons = function() { var offsetX = 95; var startY = 190; @@ -175,7 +188,7 @@ MainMenu.prototype.makeTypingExamButtons = function() { var y = startY + Math.floor(i / 2) * offsetY; var button = new TypingExamButton(x, y); - // button.setActive(false); + button.setActive(false); this.typingExamButtons.push(button); } } @@ -420,32 +433,6 @@ MainMenu.prototype.updatePlayAppButtons = function(appData) { } -/* -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.makeButtons = function() { this.backButton = new BackButton( (function() { console.log("back"); }).bind(this) @@ -456,85 +443,133 @@ MainMenu.prototype.makeButtons = function() { ); } +MainMenu.prototype.activeSavedAppGroupTab = function() { + switch(this.selectedAppGroup) { + case MainMenu.APP_GROUP_TYPING_PRACTICE: + this.appGroupTabLayout.selectedTab(this.typingPracticeGroupTab); + this.onClickTypingPracticeGroupTab(); + break; + + case MainMenu.APP_GROUP_TYPING_TEST: + this.appGroupTabLayout.selectedTab(this.typingTestGroupTab); + this.onClickTypingTestGroupTab(); + break; + + case MainMenu.APP_GROUP_TYPING_EXAM: + this.appGroupTabLayout.selectedTab(this.typingExamGroupTab); + this.onClickTypingExamGroupTab(); + break; + + case MainMenu.APP_GROUP_TYPING_PLAY: + this.appGroupTabLayout.selectedTab(this.typingPlayGroupTab); + this.onClickTypingPlayGroupTab(); + break; + + case MainMenu.APP_GROUP_MOUSE_PLAY: + this.appGroupTabLayout.selectedTab(this.mousePlayGroupTab); + this.onClickMousePlayGroupTab(); + break; + + default: + // console.log("appGroup - default"); + break; + } +} + +MainMenu.prototype.activeSavedLanguageTab = function() { + switch(this.selectedLanguage) { + case MainMenu.LANGUAGE_KOREAN: + this.languageTabLayout.selectedTab(this.koreanTab); + break; + + case MainMenu.LANGUAGE_ENGLISH: + this.languageTabLayout.selectedTab(this.englishTab); + break; + + default: + // console.log("language - default"); + break; + } +} + +MainMenu.prototype.onClickTypingPracticeGroupTab = function() { + sessionStorageManager.setAppGroup(MainMenu.APP_GROUP_TYPING_PRACTICE); + this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_PRACTICE; + this.animalRecordList.show(); + this.animalRecordList.printScore(Animal.TYPE_PRACTICE); + this.languageTabLayout.show(); + this.loadAppData(); +} + +MainMenu.prototype.onClickTypingTestGroupTab = function() { + sessionStorageManager.setAppGroup(MainMenu.APP_GROUP_TYPING_TEST); + this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_TEST; + this.animalRecordList.show(); + this.animalRecordList.printScore(Animal.TYPE_TEST); + this.languageTabLayout.show(); + this.loadAppData(); +} + +MainMenu.prototype.onClickTypingExamGroupTab = function() { + sessionStorageManager.setAppGroup(MainMenu.APP_GROUP_TYPING_EXAM); + this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_EXAM; + this.animalRecordList.show(); + this.animalRecordList.printScore(Animal.TYPE_EXAM); + this.languageTabLayout.show(); + this.loadAppData(); +} + +MainMenu.prototype.onClickTypingPlayGroupTab = function() { + sessionStorageManager.setAppGroup(MainMenu.APP_GROUP_TYPING_PLAY); + this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_PLAY; + this.animalRecordList.hide(); + this.languageTabLayout.show(); + this.loadAppData(); +} + +MainMenu.prototype.onClickMousePlayGroupTab = function() { + sessionStorageManager.setAppGroup(MainMenu.APP_GROUP_MOUSE_PLAY); + this.selectedAppGroup = MainMenu.APP_GROUP_MOUSE_PLAY; + this.animalRecordList.hide(); + this.languageTabLayout.hide(); + this.loadAppData(); +} + MainMenu.prototype.makeAppGroupTab = function() { this.appGroupTabLayout = new TabLayout(100, 0, 844, 70); - var typingPracticeGroupTab = new AppGroupTab( - (function() { - console.log("typing finger position"); - this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_PRACTICE; - this.animalRecordList.show(); - this.animalRecordList.printScore(Animal.TYPE_PRACTICE); - this.languageTabLayout.show(); - this.loadAppData(); - }).bind(this) - ); - typingPracticeGroupTab.reserveIcon("keyboard"); - typingPracticeGroupTab.reserveSubText("손가락 연습"); - this.appGroupTabLayout.add(typingPracticeGroupTab); + this.typingPracticeGroupTab = new AppGroupTab( (function() { this.onClickTypingPracticeGroupTab(); }).bind(this) ); + this.typingPracticeGroupTab.reserveIcon("keyboard"); + this.typingPracticeGroupTab.reserveSubText("손가락 연습"); + this.appGroupTabLayout.add(this.typingPracticeGroupTab); - var typingTestGroupTab = new AppGroupTab( - (function() { - console.log("typing practice"); - this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_TEST; - this.animalRecordList.show(); - this.animalRecordList.printScore(Animal.TYPE_TEST); - this.languageTabLayout.show(); - this.loadAppData(); - }).bind(this) - ); - typingTestGroupTab.reserveIcon("keyboard"); - typingTestGroupTab.reserveSubText("시험"); - this.appGroupTabLayout.add(typingTestGroupTab); + this.typingTestGroupTab = new AppGroupTab( (function() { this.onClickTypingTestGroupTab(); }).bind(this) ); + this.typingTestGroupTab.reserveIcon("keyboard"); + this.typingTestGroupTab.reserveSubText("시험"); + this.appGroupTabLayout.add(this.typingTestGroupTab); - var typingExamGroupTab = new AppGroupTab( - (function() { - console.log("typing exam"); - this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_EXAM; - this.animalRecordList.show(); - this.animalRecordList.printScore(Animal.TYPE_EXAM); - this.languageTabLayout.show(); - this.loadAppData(); - }).bind(this) - ); - typingExamGroupTab.reserveIcon("keyboard"); - typingExamGroupTab.reserveSubText("검정"); - this.appGroupTabLayout.add(typingExamGroupTab); + this.typingExamGroupTab = new AppGroupTab( (function() { this.onClickTypingExamGroupTab(); }).bind(this) ); + this.typingExamGroupTab.reserveIcon("keyboard"); + this.typingExamGroupTab.reserveSubText("검정"); + this.appGroupTabLayout.add(this.typingExamGroupTab); - var typingPlayGroupTab = new AppGroupTab( - (function() { - console.log("typing play"); - this.selectedAppGroup = MainMenu.APP_GROUP_TYPING_PLAY; - this.animalRecordList.hide(); - this.languageTabLayout.show(); - this.loadAppData(); - }).bind(this) - ); - typingPlayGroupTab.reserveIcon("keyboard"); - typingPlayGroupTab.reserveSubText("놀이"); - this.appGroupTabLayout.add(typingPlayGroupTab); + this.typingPlayGroupTab = new AppGroupTab( (function() { this.onClickTypingPlayGroupTab(); }).bind(this) ); + this.typingPlayGroupTab.reserveIcon("keyboard"); + this.typingPlayGroupTab.reserveSubText("놀이"); + this.appGroupTabLayout.add(this.typingPlayGroupTab); - var mousePlayGroupTab = new AppGroupTab( - (function() { - console.log("mouse play"); - this.selectedAppGroup = MainMenu.APP_GROUP_MOUSE_PLAY; - this.animalRecordList.hide(); - this.languageTabLayout.hide(); - this.loadAppData(); - }).bind(this) - ); - mousePlayGroupTab.reserveIcon("mouse"); - mousePlayGroupTab.reserveSubText("놀이"); - this.appGroupTabLayout.add(mousePlayGroupTab); + this.mousePlayGroupTab = new AppGroupTab( (function() { this.onClickMousePlayGroupTab(); }).bind(this) ); + this.mousePlayGroupTab.reserveIcon("mouse"); + this.mousePlayGroupTab.reserveSubText("놀이"); + this.appGroupTabLayout.add(this.mousePlayGroupTab); this.appGroupTabLayout.createTabs(); - - // typingPracticeGroupTab.setInputEnabled(false); - // typingTestGroupTab.setInputEnabled(false); - // typingExamGroupTab.setInputEnabled(false); - // typingPlayGroupTab.setInputEnabled(false); - // mousePlayGroupTab.setInputEnabled(false); + // this.typingPracticeGroupTab.setInputEnabled(false); + // this.typingTestGroupTab.setInputEnabled(false); + // this.typingExamGroupTab.setInputEnabled(false); + // this.typingPlayGroupTab.setInputEnabled(false); + // this.mousePlayGroupTab.setInputEnabled(false); } MainMenu.prototype.makeAnimalRecordList = function() { @@ -547,161 +582,32 @@ MainMenu.prototype.makeLanguageTab = function() { // this.languageTabLayout = new TabLayout(0, GAME_SCREEN_SIZE.y - languageTabHeight, GAME_SCREEN_SIZE.x, languageTabHeight); this.languageTabLayout = new TabLayout(0, 70, GAME_SCREEN_SIZE.x, languageTabHeight); - var koreanTab = new LanguageTab( + this.koreanTab = new LanguageTab( (function() { // console.log("Language : Korean"); + sessionStorageManager.setLanguage(MainMenu.LANGUAGE_KOREAN); this.selectedLanguage = MainMenu.LANGUAGE_KOREAN; this.loadAppData(); }).bind(this) ); - koreanTab.reserveMainText("한글"); - this.languageTabLayout.add(koreanTab); + this.koreanTab.reserveMainText("한글"); + this.languageTabLayout.add(this.koreanTab); - var englishTab = new LanguageTab( + this.englishTab = new LanguageTab( (function() { // console.log("Language : English"); + sessionStorageManager.setLanguage(MainMenu.LANGUAGE_ENGLISH); this.selectedLanguage = MainMenu.LANGUAGE_ENGLISH; this.loadAppData(); }).bind(this) ); - englishTab.reserveMainText("영어"); - this.languageTabLayout.add(englishTab); + this.englishTab.reserveMainText("영어"); + this.languageTabLayout.add(this.englishTab); this.languageTabLayout.createTabs(); } -/* -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));