Save after every game change
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
2137bdcf25
commit
def582f350
@ -1842,7 +1842,8 @@ const trade = (game, session, action, offer) => {
|
||||
|
||||
const clearTimeNotice= (game, session) => {
|
||||
if (!session.player.turnNotice) {
|
||||
return `You have not been idle.`;
|
||||
/* benign state; don't alert the user */
|
||||
//return `You have not been idle.`;
|
||||
}
|
||||
session.player.turnNotice = "";
|
||||
sendUpdateToPlayer(game, session, {
|
||||
@ -1852,7 +1853,7 @@ const clearTimeNotice= (game, session) => {
|
||||
|
||||
const startTurnTimer = (game, session) => {
|
||||
const timeout = 90;
|
||||
if (!session.connection) {
|
||||
if (!session.ws) {
|
||||
console.log(`${session.id}: Aborting turn timer as ${session.name} is disconnected.`);
|
||||
} else {
|
||||
console.log(`${session.id}: (Re)setting turn timer for ${session.name} to ${timeout} seconds.`);
|
||||
@ -1942,6 +1943,7 @@ const pass = (game, session) => {
|
||||
chat: game.chat,
|
||||
activities: game.activities
|
||||
});
|
||||
saveGame(game);
|
||||
}
|
||||
|
||||
const placeRobber = (game, session, robber) => {
|
||||
@ -3052,7 +3054,7 @@ const saveGame = async (game) => {
|
||||
delete reducedGame.unselected;
|
||||
|
||||
/* Save per turn while debugging... */
|
||||
await writeFile(`games/${game.id}.${game.turns}`, JSON.stringify(reducedGame, null, 2))
|
||||
await writeFile(`games/${game.id}.${game.step++}`, JSON.stringify(reducedGame, null, 2))
|
||||
.catch((error) => {
|
||||
console.error(`${session.id} Unable to write to games/${game.id}`);
|
||||
console.error(error);
|
||||
@ -3156,7 +3158,6 @@ const sendUpdateToPlayers = async (game, update) => {
|
||||
_session.ws.send(message);
|
||||
}
|
||||
}
|
||||
await saveGame(game);
|
||||
}
|
||||
|
||||
const sendUpdateToPlayer = async (game, session, update) => {
|
||||
@ -3525,9 +3526,9 @@ router.ws("/ws/:id", async (ws, req) => {
|
||||
error = setPlayerName(game, session, data.name);
|
||||
if (error) {
|
||||
sendError(session, error);
|
||||
break;
|
||||
}
|
||||
}else {
|
||||
saveGame(game);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'set':
|
||||
@ -3538,7 +3539,7 @@ router.ws("/ws/:id", async (ws, req) => {
|
||||
if (warning) {
|
||||
sendWarning(session, warning);
|
||||
} else {
|
||||
await saveGame(game);
|
||||
saveGame(game);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -3547,7 +3548,7 @@ router.ws("/ws/:id", async (ws, req) => {
|
||||
if (warning) {
|
||||
sendWarning(session, warning);
|
||||
} else {
|
||||
await saveGame(game);
|
||||
saveGame(game);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -3615,6 +3616,7 @@ router.ws("/ws/:id", async (ws, req) => {
|
||||
addChatMessage(game, session, `${session.name}: ${data.message}`);
|
||||
parseChatCommands(game, data.message);
|
||||
sendUpdateToPlayers(game, { chat: game.chat });
|
||||
saveGame(game);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -3623,6 +3625,7 @@ router.ws("/ws/:id", async (ws, req) => {
|
||||
}
|
||||
|
||||
if (processed) {
|
||||
/* saveGame(game); -- do not save here; only save on changes */
|
||||
return;
|
||||
}
|
||||
|
||||
@ -3789,6 +3792,11 @@ router.ws("/ws/:id", async (ws, req) => {
|
||||
break;
|
||||
}
|
||||
|
||||
/* If action was taken, persist the game */
|
||||
if (processed) {
|
||||
saveGame(game);
|
||||
}
|
||||
|
||||
/* If the current player took an action, reset the session timer */
|
||||
if (processed && session.color === game.turn.color && game.state !== 'winner') {
|
||||
resetTurnTimer(game, session);
|
||||
@ -3945,6 +3953,7 @@ const resetGame = (game) => {
|
||||
startTime: Date.now(),
|
||||
state: 'lobby',
|
||||
turns: 0,
|
||||
step: 0, /* used for the suffix # in game backups */
|
||||
turn: {},
|
||||
sheep: 19,
|
||||
ore: 19,
|
||||
@ -4069,7 +4078,8 @@ const createGame = (id) => {
|
||||
},
|
||||
sessions: {},
|
||||
unselected: [],
|
||||
active: 0
|
||||
active: 0,
|
||||
step: 0 /* used for the suffix # in game backups */
|
||||
};
|
||||
|
||||
[ "pips", "borders", "tiles" ].forEach((field) => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user