client/src/session.js

73 lines
1.3 KiB
JavaScript

function Session() {
var game = JSON.parse(localStorage.getItem('game'));
var options = JSON.parse(localStorage.getItem('options')) || defaultOptions();
return {
getOptions: getOptions,
getGame: getGame,
save: save,
setOptions: setOptions
};
function getGame() {
return game;
}
function update(state) {
game = state;
}
function save() {
localStorage.setItem('game', JSON.stringify(game));
}
function merge(a, b) {
for(var key in b) {
var value = b[key];
if(typeof value == "object") {
if(Array.isArray(value)) {
a[key] = [];
for(var i = 0; i < value.length; i++) {
a[key][i] = value[i];
}
} else {
merge(a[key], value);
}
} else {
if(value !== undefined) {
a[key] = value;
} else {
delete a[key];
}
}
}
}
function setOptions(newOptions) {
merge(options, newOptions);
localStorage.setItem('options', JSON.stringify(options));
}
function defaultOptions() {
var o = {
layout: {
'a': 'A',
'b': 'B',
'ArrowLeft': 'Left',
'ArrowRight': 'Right',
'ArrowUp': 'Up',
'ArrowDown': 'Down',
'Enter': 'Start',
' ': 'Select'
},
textSpeed: 'medium'
};
localStorage.setItem('options', JSON.stringify(o));
return o;
}
function getOptions() {
return options;
}
}