const Data = require('./Data'); const storage = require('./storage'); /** * Persistent data storage, save/load data from `localStorage`. * * @class PersistentData * @constructor * @extends {Data} */ class PersistentData extends Data { /** * Save data to localStorage. * @memberof PersistentData * @method save */ save() { storage.set('savedata', this.data); } /** * Load data from localStorage. * @memberof PersistentData * @method load */ load() { var i, valid, key, value; var data = storage.get('savedata', this.defaultVal); for (i = 0; i < this.keys.length; i++) { key = this.keys[i]; value = data[key]; // Check whether the valus is valid valid = false; if ( (this.defaultVal[key] instanceof Array) && (value instanceof Array) && (value.length >= this.defaultVal[key].length) ) { valid = true; } else if ( ((typeof(this.defaultVal[key]) === 'boolean') && (typeof(value) === 'boolean')) || ((typeof(this.defaultVal[key]) === 'number') && (typeof(value) === 'number')) || ((typeof(this.defaultVal[key]) === 'string') && (typeof(value) === 'string')) ) { valid = true; } this.set(key, valid ? data[key] : this.defaultVal[key]); } } } /** * @exports engine/storage/PersistentData * @see PersistentData * * @requires module:engine/storage/storage * @requires module:engine/storage/Data */ module.exports = PersistentData;