From 78aa3f6281e037b67edc9aa8605ed55feada18c7 Mon Sep 17 00:00:00 2001 From: Tissevert Date: Fri, 23 Nov 2018 17:03:09 +0100 Subject: [PATCH] Handle text speeds and store it along with keyboard layout --- src/buttons.js | 3 +-- src/main.js | 2 +- src/session.js | 24 ++++++++++++------------ src/ui.js | 10 ++++++++-- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/buttons.js b/src/buttons.js index 1545c75..964c13f 100644 --- a/src/buttons.js +++ b/src/buttons.js @@ -1,10 +1,9 @@ function Buttons(session) { var mapping; var mappingsStack = []; - var layout = session.getLayout(); document.addEventListener('keydown', function(event) { - var button = layout[event.key]; + var button = session.getOptions().layout[event.key]; if(button != undefined && mapping[button] != undefined) { mapping[button](); } diff --git a/src/main.js b/src/main.js index a76e980..9c8e7a2 100644 --- a/src/main.js +++ b/src/main.js @@ -5,7 +5,7 @@ window.addEventListener('load', function() { screen = Screen(dom); session = Session(); buttons = Buttons(session); - ui = UI(async, buttons, screen); + ui = UI(async, buttons, screen, session); automaton = Automaton(async, dom, messaging, screen, session, ui); messaging.start(); diff --git a/src/session.js b/src/session.js index 0f96547..fa3a533 100644 --- a/src/session.js +++ b/src/session.js @@ -1,9 +1,9 @@ function Session() { var game = JSON.parse(localStorage.getItem('game')); - var layout = loadLayout(); + var options = JSON.parse(localStorage.getItem('options')) || defaultOptions(); return { - getLayout: getLayout, + getOptions: getOptions, getGame: getGame, save : save }; @@ -20,10 +20,9 @@ function Session() { localStorage.setItem('game', JSON.stringify(game)); } - function loadLayout() { - var saved = JSON.parse(localStorage.getItem('layout')); - if(saved == undefined) { - saved = { + function defaultOptions() { + var o = { + layout: { 'a': 'A', 'b': 'B', 'ArrowLeft': 'Left', @@ -32,13 +31,14 @@ function Session() { 'ArrowDown': 'Down', 'Enter': 'Start', ' ': 'Select' - }; - localStorage.setItem('layout', JSON.stringify(saved)); - } - return saved; + }, + textSpeed: 'medium' + }; + localStorage.setItem('options', JSON.stringify(o)); + return o; } - function getLayout() { - return layout; + function getOptions() { + return options; } } diff --git a/src/ui.js b/src/ui.js index 1c03b21..9e58236 100644 --- a/src/ui.js +++ b/src/ui.js @@ -1,5 +1,11 @@ -function UI(async, buttons, screen) { +function UI(async, buttons, screen, session) { var lineWidth = 36; + var textSpeeds = { + slow: 100, + medium: 50, + fast: 20 + }; + var textDelay = textSpeeds[session.getOptions().textSpeed]; return { animation: animation, @@ -74,7 +80,7 @@ function UI(async, buttons, screen) { var ready = false; var append = function(c) { return function() { screen.appendText(c); }; }; for(var i = 0; i < characters.length; i++) { - frames.push({action: append(characters[i]), delay: 50}); + frames.push({action: append(characters[i]), delay: textDelay}); } frames.push({action: function() { ready = true; screen.markAsRead(); }, delay: null}); var remote = animation(frames);