From 11c832bf5e2b527de0c54c7bf83b644a53c0956a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=A2=E1=84=91=E1=85=B3=E1=86=AF=20=E1=84=82?= =?UTF-8?q?=E1=85=A9=E1=84=90=E1=85=B3=E1=84=87=E1=85=AE=E1=86=A8?= Date: Sat, 24 Aug 2019 17:29:09 +0900 Subject: [PATCH] Fix: typing exam stage redesign --- src/game/lib/animal_record_list.js | 2 +- .../lib/flat_button/typing_exam_button.js | 2 +- src/game/main_menu/main_menu.js | 4 +- src/game/typing/examination/game.js | 55 +++++++++++++++---- test/tdd.js | 2 +- 5 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/game/lib/animal_record_list.js b/src/game/lib/animal_record_list.js index 8c83c00..d05861f 100644 --- a/src/game/lib/animal_record_list.js +++ b/src/game/lib/animal_record_list.js @@ -164,7 +164,7 @@ AnimalRecordList.ALPHA_INACTIVE = 0.3; AnimalRecordList.ANIMAL_LIST_MENU_POS_Y = 690; // 70; //640; -AnimalRecordList.ANIMAL_LIST_EXAM_POS_Y = 638; +AnimalRecordList.ANIMAL_LIST_EXAM_POS_Y = 60; // 638; AnimalRecordList.ANIMAL_OFFSET_Y = 30; AnimalRecordList.RECORD_TEXT_MENU_OFFSET_Y = 35; AnimalRecordList.COLOR_SCORE_MENU_DEFAULT_TEXT = MainColor.OLD_LACE_STRING; diff --git a/src/game/lib/flat_button/typing_exam_button.js b/src/game/lib/flat_button/typing_exam_button.js index a70cb72..560643f 100644 --- a/src/game/lib/flat_button/typing_exam_button.js +++ b/src/game/lib/flat_button/typing_exam_button.js @@ -172,7 +172,7 @@ TypingExamButton.prototype.clickEvent = function() { sessionStorageManager.setPlayingAppID(200); sessionStorageManager.setPlayingAppName("typing_exam"); - sessionStorageManager.setPlayingAppKoreanName("타자검정"); + sessionStorageManager.setPlayingAppKoreanName("긴글 시험"); sessionStorageManager.setWritingID(this.writingID); if(isExperiencePlayerAccount()) diff --git a/src/game/main_menu/main_menu.js b/src/game/main_menu/main_menu.js index c6469c3..8557695 100644 --- a/src/game/main_menu/main_menu.js +++ b/src/game/main_menu/main_menu.js @@ -337,7 +337,7 @@ MainMenu.prototype.makePlayAppDataList = function(appData) { } MainMenu.prototype.updateTypingPracticeAppButtons = function(appGroup, appData) { - console.log("updateTypingPracticeAppButtons"); + // console.log("updateTypingPracticeAppButtons"); var buttonIndex = 0; var appDataList = this.makeTypingPracticeAppDataList(appGroup, appData); @@ -529,7 +529,7 @@ MainMenu.prototype.makeAppGroupTab = function() { (function() { this.onClickTypingExamGroupTab(); }).bind(this) ); this.typingExamGroupTab.reserveIcon("keyboard"); - this.typingExamGroupTab.reserveSubText("긴글 연습"); + this.typingExamGroupTab.reserveSubText("긴글 (시험)"); this.appGroupTabLayout.add(this.typingExamGroupTab); /* diff --git a/src/game/typing/examination/game.js b/src/game/typing/examination/game.js index 39fbc31..3ef132f 100644 --- a/src/game/typing/examination/game.js +++ b/src/game/typing/examination/game.js @@ -59,6 +59,14 @@ TypingExamination.prototype.create = function() { this.averageTypingSpeedText = new AverageTypingSpeed(); + this.stageTimer = new StageTimer( + TypingExamination.GAME_TIME_SEC, + (function() { + // this.setClickEnable(false); + this.timeOver(); + }).bind(this) + ); + // bottom ui var screenBottomUI = new ScreenBottomUI(); @@ -85,16 +93,19 @@ TypingExamination.prototype.fontLoaded = function() { graphics.lineStyle(1, 0x303030, 1); - var TYPING_CONTENT_X = 50; - var TYPING_CONTENT_Y = 320; // 390; - var RECORD_POSITION_X = 990; + var TYPING_CONTENT_X = 150; // 50; + var TYPING_CONTENT_Y = 380; + var RECORD_POSITION_X = 130; //990; var INPUT_TEXT_OFFSET_X = 10; var INPUT_TEXT_OFFSET_Y = 60; var FONT_SIZE = 26; var BIG_FONT_SIZE = 28; - var TYPING_TEXT_OFFSET_HEIGHT = 46; + var TYPING_TEXT_OFFSET_HEIGHT = 50; //46; + + var TYPING_OFFSET_Y = 60; + var TYPING_PREVIEW_OFFSET_Y = 70; // textStyleBasic.font = "bold 38px Arial"; // textStyleBasic.backgroundColor = "rgba(0, 0, 0, 0.25)"; @@ -154,8 +165,6 @@ TypingExamination.prototype.fontLoaded = function() { - var TYPING_OFFSET_Y = 60; - var TYPING_PREVIEW_OFFSET_Y = 70; // textStyleBasic.font = "38px Arial"; textStyleBasic.backgroundColor = null; @@ -200,6 +209,7 @@ TypingExamination.prototype.fontLoaded = function() { var textPreviewColor = [ '#999999', '#888888', '#777777', '#666666' ]; // var textPreviewColor = [ '#999999', '#999999', '#999999', '#999999' ]; this.textTypingContentPreview = []; + this.textLineNumber = []; for(var i = 0; i < TypingExamination.TYPING_CONTENT_PREVIEW_COUNT; i++) { graphics.moveTo( TYPING_CONTENT_X, @@ -220,6 +230,16 @@ TypingExamination.prototype.fontLoaded = function() { .addColor(textPreviewColor[i], 0); this.textTypingContentPreview[i].anchor.set(0, 0.5); this.textTypingContentPreview[i].fontSize = FONT_SIZE; + + this.textLineNumber[i] = game.add.text( + RECORD_POSITION_X, + TYPING_CONTENT_Y + TYPING_OFFSET_Y + TYPING_PREVIEW_OFFSET_Y + i * TYPING_TEXT_OFFSET_HEIGHT, + "", textStyleBasic + ) + // .setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2) + // .addColor(textDoneColor[i], 0); + this.textLineNumber[i].anchor.set(1, 0.5); + this.textLineNumber[i].fontSize = FONT_SIZE; } @@ -295,6 +315,8 @@ TypingExamination.prototype.startGame = function() { this.showTypingExaminationContents(); this.showPlayingWordNumber(); + + this.stageTimer.start(); } TypingExamination.prototype.timeOver = function() { @@ -305,6 +327,8 @@ TypingExamination.prototype.timeOver = function() { TypingExamination.prototype.gameOver = function() { var missionClearText = new MissionClearText(); this.stopAndGoResult(); + + this.stageTimer.pause(); } TypingExamination.prototype.stopAndGoResult = function() { @@ -439,7 +463,10 @@ TypingExamination.prototype.showTypingExaminationContents = function() { this.textTypingRecordsDone[i].text = ""; } else { this.textTypingContentsDone[i].text = this.typingExaminationContents[doneIndex]; - this.textTypingRecordsDone[i].text = NumberUtil.getRecordText(Math.floor(this.typingRecordForLines[doneIndex])); + // this.textTypingRecordsDone[i].text = NumberUtil.getRecordText(Math.floor(this.typingRecordForLines[doneIndex])); + + var lineNumber = this.typingContentLength - doneIndex; + this.textTypingRecordsDone[i].text = NumberUtil.numberWithCommas(lineNumber) + " "; } } @@ -457,8 +484,13 @@ TypingExamination.prototype.showTypingExaminationContents = function() { if(previewIndex < this.typingExaminationContents.length) { var previewText = this.typingExaminationContents[previewIndex]; this.textTypingContentPreview[i].text = previewText; - } else + + var lineNumber = this.typingContentLength - this.typingIndex - 1 - i; + this.textLineNumber[i].text = NumberUtil.numberWithCommas(lineNumber) + " "; + } else { this.textTypingContentPreview[i].text = ""; + this.textLineNumber[i].text = ""; + } } } @@ -600,8 +632,8 @@ TypingExamination.prototype.playNextContent = function() { TypingExamination.prototype.showPlayingWordNumber = function() { var currentLine = this.typingIndex + 1; - this.textTypingLine.text = currentLine + " / " + this.typingContentLength + " 줄"; - // this.textTypingLine.text = "9,999/9,999 줄"; + // this.textTypingLine.text = "#" + (this.typingContentLength - this.typingIndex); + this.textTypingLine.text = this.typingContentLength - this.typingIndex + " "; } TypingExamination.prototype.setTimeTypingStart = function() { @@ -624,7 +656,8 @@ TypingExamination.prototype.setTimeTypingStart = function() { TypingExamination.GAME_TIME_SEC = 60 * 5; // 5 minutes -TypingExamination.SPACE_INDICATOR = "ˇ"; // "ᵔ"; // "ᵕ"; // "ˣ"; // "ᵛ"; // " · "; +TypingExamination.SPACE_INDICATOR = "␣"; // "ˇ"; // "ᵔ"; // "ᵕ"; // "ˣ"; // "ᵛ"; // " · "; +TypingExamination.ENTER_INDICATOR = "⏎"; // "↵"; // "↵"; TypingExamination.TYPING_CONTENT_PREVIEW_COUNT = 4; // 3; TypingExamination.TYPING_CONTENT_DONE_COUNT = 4; // 3; diff --git a/test/tdd.js b/test/tdd.js index 6d94da0..a9b9534 100644 --- a/test/tdd.js +++ b/test/tdd.js @@ -607,7 +607,7 @@ QUnit.test( "App ranking", function( assert ) { date4, time4, (type, rankingRecordManager) => { - assert.equal(rankingRecordManager.getCount(), 0, "no data"); + assert.equal(rankingRecordManager.getCount(), 1, "month - rank"); // assert.equal(rankingRecordManager.getRankAt(0), 1, "day - rank #3"); // assert.equal(rankingRecordManager.getBestRecordAt(0), 99.18, "day - best record"); // assert.equal(rankingRecordManager.getPlayerIDAt(0), 46, "day - player ID");