Object.prototype.hasOwnProperty.call(localStorage, "trivabble" + key);
}
- function getSetting(key) {
+ function getSetting(key, defaultValue) {
let type;
let value;
} else {
console.error("Unsupported type");
}
+ } else if (defaultValue !== undefined) {
+ return defaultValue;
}
return value;
case "popBag": //TODO
break;
- case "reset": //TODO
+ case "reset":
+ setTimerDate(true);
tablePlayers = {};
while (participants.rows[1]) {
participants.removeChild(participants.rows[1]);
myConfirm(
_("Are you sure you want to put all the tiles back in the bag (in order to play another game)?"),
function () {
- const currentTimer = timerDate();
- setSetting("TimerGameDate", currentTimer);
- setSetting("TimerTurnDate", currentTimer);
sendCmds([{cmd: "resetGame"}]);
}
);
return Math.floor(Date.now() / 1000);
}
- function initTimer() {
+ function setTimerDate(force) {
const currentTimer = timerDate();
- if (!isSetting("TimerTurnDate")) {
+ if (force || !isSetting("TimerTurnDate")) {
setSetting("TimerTurnDate", currentTimer);
}
- if (!isSetting("TimerGameDate")) {
+
+ if (force || !isSetting("TimerGameDate")) {
setSetting("TimerGameDate", currentTimer);
}
- if (!isSetting("TimerEnable")) {
- setSetting("TimerEnable", getSetting("ENABLE_TIMER"));
- }
+ }
+
+ function initTimer() {
+ setTimerDate();
+
document.getElementById("enable-timer").onclick = function () {
setTimerState(document.getElementById("enable-timer").checked);
};
- setTimerState(getSetting("TimerEnable"));
+
+ setTimerState(getSetting("TimerEnable", getSetting("ENABLE_TIMER")));
}
- function setTimerState(state) {
- setSetting("TimerEnable", state);
- if (state) {
+ let timerTimeout = 0
+
+ function updateTimer() {
+ const currentTimer = timerDate();
+ document.getElementById("timer-turn").textContent = timerString(currentTimer - getSetting("TimerTurnDate"));
+ document.getElementById("timer-game").textContent = timerString(currentTimer - getSetting("TimerGameDate"));
+ }
+
+ function setTimerState(enabled) {
+ setSetting("TimerEnable", enabled);
+ if (timerTimeout) {
+ clearInterval(timerTimeout);
+ timerTimeout = 0
+ }
+
+ if (enabled) {
document.getElementById("timer").hidden = false;
document.getElementById("enable-timer").checked = true;
- setSetting("Timer", setInterval(function () {
- const currentTimer = timerDate();
- document.getElementById("timer-turn").textContent = timerString(currentTimer - getSetting("TimerTurnDate"));
- document.getElementById("timer-game").textContent = timerString(currentTimer - getSetting("TimerGameDate"));
- }, 1000));
+ timerTimeout = setInterval(updateTimer, 1000);
+ updateTimer();
} else {
- document.getElementById("timer").style.display = "none";
+ document.getElementById("timer").hidden = true;
document.getElementById("enable-timer").checked = false;
- if (isSetting("Timer")) {
- clearInterval(getSetting("Timer"));
- unsetSetting("Timer");
- }
- const currentTimer = timerDate();
- setSetting("TimerGameDate", currentTimer);
- setSetting("TimerTurnDate", currentTimer);
+ setTimerDate();
}
}