const GAME_STATE_KEY = "gameState"; const MAX_QUESTIONS = 10; class GameState { getQuestionChoice(qId) { let savedItem = this._readGameState(); if (qId in savedItem) { return savedItem[qId]; } return null; } setQuestionChoice(qId, cId, isRight) { let savedItem = this._readGameState(); savedItem[qId] = {cId: cId, isRight: isRight}; localStorage.setItem(GAME_STATE_KEY, JSON.stringify(savedItem)); } clearChoices() { localStorage.removeItem(GAME_STATE_KEY); } getMaxQuestions() { return MAX_QUESTIONS; } getSummary() { let savedItem = this._readGameState(); let summary = { totalAnswered: 0, totalRight: 0 }; for (let k in savedItem) { summary.totalAnswered++; if (savedItem[k].isRight) { summary.totalRight++; } } if (summary.totalAnswered != MAX_QUESTIONS) { summary.rank = "Incompletionist"; } else if (summary.totalRight <= 2) { summary.rank = "Developer"; } else if (summary.totalRight <= 5) { summary.rank = "Senior Developer"; } else if (summary.totalRight <= 7) { summary.rank = "Standard Enthusiast"; } else if (summary.totalRight <= 9) { summary.rank = "Standard Maker"; } else if (summary.totalRight == 10) { summary.rank = "ISO President"; } else { summary.rank = "Beta Tester"; } return summary; } _readGameState() { let savedItem = localStorage.getItem(GAME_STATE_KEY); if (savedItem === null) { return {}; } else { return JSON.parse(savedItem); } } } export let gameState = new GameState();