73 lines
1.3 KiB
JavaScript
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;
|
|
}
|
|
}
|