| window.fakeStorage = { | |
| _data: {}, | |
| setItem: function (id, val) { | |
| return this._data[id] = String(val); | |
| }, | |
| getItem: function (id) { | |
| return this._data.hasOwnProperty(id) ? this._data[id] : undefined; | |
| }, | |
| removeItem: function (id) { | |
| return delete this._data[id]; | |
| }, | |
| clear: function () { | |
| return this._data = {}; | |
| } | |
| }; | |
| function LocalStorageManager() { | |
| this.bestScoreKey = "bestScore"; | |
| this.gameStateKey = "gameState"; | |
| var supported = this.localStorageSupported(); | |
| this.storage = supported ? window.localStorage : window.fakeStorage; | |
| } | |
| LocalStorageManager.prototype.localStorageSupported = function () { | |
| var testKey = "test"; | |
| try { | |
| var storage = window.localStorage; | |
| storage.setItem(testKey, "1"); | |
| storage.removeItem(testKey); | |
| return true; | |
| } catch (error) { | |
| return false; | |
| } | |
| }; | |
| LocalStorageManager.prototype.getBestScore = function () { | |
| return this.storage.getItem(this.bestScoreKey) || 0; | |
| }; | |
| LocalStorageManager.prototype.setBestScore = function (score) { | |
| this.storage.setItem(this.bestScoreKey, score); | |
| }; | |
| LocalStorageManager.prototype.getGameState = function () { | |
| var stateJSON = this.storage.getItem(this.gameStateKey); | |
| return stateJSON ? JSON.parse(stateJSON) : null; | |
| }; | |
| LocalStorageManager.prototype.setGameState = function (gameState) { | |
| this.storage.setItem(this.gameStateKey, JSON.stringify(gameState)); | |
| }; | |
| LocalStorageManager.prototype.clearGameState = function () { | |
| this.storage.removeItem(this.gameStateKey); | |
| }; | |