67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
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(); |