iswhoa/public/scripts/controllers/gamestate.js

67 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2025-06-20 12:00:23 +00:00
const GAME_STATE_KEY = "gameState";
const MAX_QUESTIONS = 10;
2025-06-20 12:00:23 +00:00
class GameState {
getQuestionChoice(qId) {
let savedItem = this._readGameState();
if (qId in savedItem) {
return savedItem[qId];
}
return null;
}
2025-06-22 12:06:49 +00:00
setQuestionChoice(qId, cId, isRight) {
2025-06-20 12:00:23 +00:00
let savedItem = this._readGameState();
2025-06-22 12:06:49 +00:00
savedItem[qId] = {cId: cId, isRight: isRight};
2025-06-20 12:00:23 +00:00
localStorage.setItem(GAME_STATE_KEY, JSON.stringify(savedItem));
}
clearChoices() {
localStorage.removeItem(GAME_STATE_KEY);
}
getMaxQuestions() {
return MAX_QUESTIONS;
}
2025-06-22 12:06:49 +00:00
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";
}
2025-06-22 12:06:49 +00:00
return summary;
}
2025-06-20 12:00:23 +00:00
_readGameState() {
let savedItem = localStorage.getItem(GAME_STATE_KEY);
if (savedItem === null) {
return {};
} else {
return JSON.parse(savedItem);
}
}
}
export let gameState = new GameState();