localStorage fallback
localStorage fallback

--- a/js/game_manager.js
+++ b/js/game_manager.js
@@ -2,7 +2,7 @@
   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;
 

--- 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.updateBestScore = function (bestScore) {
-  if (this.bestScoreSupported) {
-    this.bestContainer.textContent = bestScore;
-  }
+  this.bestContainer.textContent = bestScore;
 };
 
 HTMLActuator.prototype.message = function (won) {

--- a/js/local_score_manager.js
+++ b/js/local_score_manager.js
@@ -1,25 +1,32 @@
+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);
 };
 
 

comments