diff --git a/js/game_manager.js b/js/game_manager.js index 11974c13d96b42767d8d9cf4ea85a13df0695500..91c0390b15590ac5c453ef9df3da23929928f916 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 3e51195440a6eea9493526e98db005c8948b6c3f..36e1d754aaf2f862d1e6481b3190e6c2a8c30d0a 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 400633b4227272c834d4fa4b76a9eeb7e4ffe439..95c6966a6ef011d818cc02d8d6e08412fd0aab99 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); };