Result.prototype = Object.create(Phaser.State.prototype); Result.constructor = Result; function Result() { } Result.prototype.preload = function() { game.load.image('icon_fullscreen', '../../../resources/image/icon/fullscreen_white.png'); if(isTypingPracticeApp() || isTypingTestApp() || isTypingExamApp()) Animal.loadResources(); RankingBoard.loadResources(); game.load.image('star', '../../../resources/image/ui/star_particle.png'); } Result.prototype.create = function() { this.dbConnectManager = new DBConnectManager(); this.game.stage.backgroundColor = '#4d4d4d'; this.chartGraphics = game.add.graphics(100, game.world.height - 120); // keyboard shortcut this.keyboardShortcut = new KeyboardShortcut(); this.keyboardShortcut.addCallback( Phaser.KeyCode.ESC, // keyCode null, // keyDownHandler (function() { this.back(); }).bind(this), // keyUpHandler "result" // callerClassName ); this.keyboardShortcut.addCallback( Phaser.KeyCode.ENTER, // keyCode null, // keyDownHandler (function() { this.restartStage(); }).bind(this), // keyUpHandler "result" // callerClassName ); // top ui var screenTopUI = new ScreenTopUI(); screenTopUI.makeBackButton( (function() { this.back(); }).bind(this) ); screenTopUI.makeFullScreenButton(); var titleText = this.makeDefaultText(game.world.width / 2, 35); titleText.text = "결과"; titleText.fontSize = 38; titleText.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2); titleText.anchor.set(0.5); // contents this.printRecord(); this.makeRestartButton(); if(sessionStorageManager.getMaestroAccountType() >= 100) { // experience account var recordBoard = new RecordBoard(RecordBoard.TYPE_SAMPLE); this.announceBox = new AnnounceBox(50, 648); this.announceBox.drawBox("체험 계정에서는 기록이 저장되지 않습니다."); } else { this.printTodayBestRecord(); var recordBoard = new RecordBoard(RecordBoard.TYPE_DB); } // bottom ui var screenBottomUI = new ScreenBottomUI(); screenBottomUI.printLeftTextWithAppHighestRecord(sessionStorageManager.getAppHighestRecord()); screenBottomUI.printCenterText(sessionStorageManager.getPlayingAppKoreanName()); screenBottomUI.printRightText(sessionStorageManager.getPlayerName()); } Result.prototype.back = function() { location.href = '../../web/client/main_menu.html'; } Result.prototype.makeDefaultText = function(x, y) { var defaultText = game.add.text(x, y, ""); defaultText.anchor.set(0, 0.5); // defaultText.font = "Nanum Gothic Coding"; defaultText.fontSize = 26; defaultText.fontWeight = "normal"; defaultText.style.fill = "white"; return defaultText; } Result.prototype.printRecord = function() { if(sessionStorageManager.getRecord() === null) sessionStorageManager.setRecord(0); var record = sessionStorageManager.getRecord(); var x = game.world.width / 2; var y = 150; var scoreText = this.makeDefaultText(x, y); scoreText.text = ""; scoreText.fontSize = 80; scoreText.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2); scoreText.anchor.set(0.5); if(record < 0) { scoreText.style.fill = MainColor.THISTLE_STRING; var timeoverText = this.makeDefaultText(game.world.width / 2, 225); timeoverText.text = "== 아깝네요, 제한 시간 초과! =="; timeoverText.fontSize = 50; timeoverText.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2); timeoverText.anchor.set(0.5); timeoverText.style.fill = MainColor.INDIAN_RED_STRING; record = -1 * record; } scoreText.text = RecordUtil.getRecordValueWithUnit(record, sessionStorageManager.getPlayingAppID()); if(isTypingPracticeApp() || isTypingTestApp() || isTypingExamApp()) { var animalLevelID = 0; if(isTypingPracticeApp()) animalLevelID = Animal.animalLevelIDByRecord(sessionStorageManager.getRecord(), Animal.TYPE_PRACTICE); else // Typing Test App animalLevelID = Animal.animalLevelIDByRecord(sessionStorageManager.getRecord(), Animal.TYPE_TEST); var leftAnimal = new Animal(Animal.TYPE_ANIMATION, animalLevelID, game.world.centerX - 200, 150); leftAnimal.startAnimation(Animal.SPECIES_DATA[animalLevelID]); var rightAnimal = new Animal(Animal.TYPE_ANIMATION, animalLevelID, game.world.centerX + 200, 150); rightAnimal.startAnimation(Animal.SPECIES_DATA[animalLevelID]); } } Result.prototype.printTodayBestRecord = function() { // console.log(sessionStorageManager.getAppHighestRecord()); // console.log(sessionStorageManager.getRecord()); var appHighestRecord = sessionStorageManager.getAppHighestRecord(); var prevRecord = sessionStorageManager.getRecord(); if(appHighestRecord == 'undefined' || appHighestRecord == null) { this.showHighestRecordEffect(prevRecord); return; } if(this.isHighestRecordPreferApp()) { if(prevRecord > appHighestRecord) this.showHighestRecordEffect(prevRecord); } else { if(appHighestRecord == 0) this.showHighestRecordEffect(prevRecord); else if(prevRecord < appHighestRecord) this.showHighestRecordEffect(prevRecord); } } Result.prototype.showHighestRecordEffect = function(record) { sessionStorageManager.setAppHighestRecord(record); var newRecordEmitter = game.add.emitter(game.world.centerX, 140, 300); newRecordEmitter.makeParticles('star'); newRecordEmitter.gravity = 300; var style = { font: "32px Arial", fill: "#ff0", align: "left", boundsAlignH: "center", boundsAlignV: "middle" }; var bestRecordText = game.add.text(game.world.centerX, 220, "", style); bestRecordText.anchor.set(0.5); bestRecordText.stroke = "#333"; bestRecordText.strokeThickness = 5; bestRecordText.text = "! : . 최고 기록 경신 . : !"; newRecordEmitter.start(true, 2000, null, 20); } Result.prototype.isHighestRecordPreferApp = function() { if(sessionStorageManager.getPlayingAppID() == 105) return false; return true; } Result.prototype.makeRestartButton = function() { var setting = new RoundRectButtonSetting(game.world.centerX, game.world.height / 2 - 70, 200, 100); setting.fontStyle.fontWeight = "bold"; var startButton = new RoundRectButton(setting, RoundRectButton.NONE_ICON, "다시 시작", this.restartStage); startButton.addShortcutText("Enter"); } Result.prototype.restartStage = function() { location.href = "../../web/client/" + getGameAppName() + ".html"; }