From d6da8d99251266445beaead0da79f0085756c054 Mon Sep 17 00:00:00 2001 From: Tim Petricola Date: Tue, 11 Mar 2014 11:52:02 -0400 Subject: [PATCH] localStorage fallback --- js/game_manager.js | 2 +- js/html_actuator.js | 11 ++--------- js/local_score_manager.js | 33 ++++++++++++++++++++------------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/js/game_manager.js b/js/game_manager.js index 11974c1..91c0390 100644 --- a/js/game_manager.js +++ b/js/game_manager.js @@ -2,7 +2,7 @@ function GameManager(size, InputManager, Actuator, ScoreManager) { this.size = size; // Size of the grid this.inputManager = new InputManager; this.scoreManager = new ScoreManager; - this.actuator = new Actuator(this.scoreManager.isSupported()); + this.actuator = new Actuator; this.startTiles = 2; diff --git a/js/html_actuator.js b/js/html_actuator.js index 3e51195..36e1d75 100644 --- a/js/html_actuator.js +++ b/js/html_actuator.js @@ -1,15 +1,10 @@ -function HTMLActuator(bestScoreSupported) { +function HTMLActuator() { this.tileContainer = document.getElementsByClassName("tile-container")[0]; this.scoreContainer = document.getElementsByClassName("score-container")[0]; this.bestContainer = document.getElementsByClassName("best-container")[0]; this.messageContainer = document.getElementsByClassName("game-message")[0]; this.score = 0; - this.bestScoreSupported = bestScoreSupported; - - if (!this.bestScoreSupported) { - this.bestContainer.style.display = "none"; - } } HTMLActuator.prototype.actuate = function (grid, metadata) { @@ -111,9 +106,7 @@ HTMLActuator.prototype.updateScore = function (score) { }; HTMLActuator.prototype.updateBestScore = function (bestScore) { - if (this.bestScoreSupported) { - this.bestContainer.textContent = bestScore; - } + this.bestContainer.textContent = bestScore; }; HTMLActuator.prototype.message = function (won) { diff --git a/js/local_score_manager.js b/js/local_score_manager.js index 400633b..95c6966 100644 --- a/js/local_score_manager.js +++ b/js/local_score_manager.js @@ -1,24 +1,31 @@ +window.fakeStorage = { + _data : {}, + setItem : function (id, val) { + console.log('set'); + 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 LocalScoreManager() { + var localSupported = !!window.localStorage; this.key = 'bestScore'; + this.storage = localSupported ? window.localStorage : window.fakeStorage; } LocalScoreManager.prototype.get = function () { - if (!this.isSupported()) { - return 0; + var score = this.storage.getItem(this.key); + if (typeof score === "undefined" || score === null) { + score = 0; } - - return localStorage.getItem(this.key); + return score; }; LocalScoreManager.prototype.set = function (score) { - if (!this.isSupported()) { - return false; - } - - localStorage.setItem(this.key, score); -}; - -LocalScoreManager.prototype.isSupported = function () { - return !!window.localStorage; + this.storage.setItem(this.key, score); }; -- GitLab