This commit is contained in:
parent
d6630ece24
commit
b43c6210be
2 changed files with 56 additions and 0 deletions
|
|
@ -181,6 +181,11 @@
|
|||
game = new Chess(convertChess960Fen(payload.fen));
|
||||
}
|
||||
|
||||
// Restore move history if rejoining an in-progress game
|
||||
if (payload.moveHistory && payload.moveHistory.length > 0) {
|
||||
moveHistory = payload.moveHistory;
|
||||
}
|
||||
|
||||
gamesOverlay.setMode('playing');
|
||||
gamesOverlay.updateState({
|
||||
positionId: payload.positionId,
|
||||
|
|
@ -202,6 +207,11 @@
|
|||
game = new Chess(convertChess960Fen(payload.fen));
|
||||
}
|
||||
|
||||
// Restore move history for spectators
|
||||
if (payload.moveHistory && payload.moveHistory.length > 0) {
|
||||
moveHistory = payload.moveHistory;
|
||||
}
|
||||
|
||||
gamesOverlay.setMode('spectating');
|
||||
gamesOverlay.updateState({
|
||||
positionId: payload.positionId,
|
||||
|
|
@ -213,6 +223,32 @@
|
|||
blackName: payload.blackName
|
||||
});
|
||||
|
||||
updateBoardDisplay();
|
||||
} else if (payload.status === 'finished') {
|
||||
// Rejoining a finished game
|
||||
const session = nakama.getSession();
|
||||
myColor = payload.whiteId === session?.user_id ? 'w' : 'b';
|
||||
|
||||
if (Chess && payload.fen) {
|
||||
game = new Chess(convertChess960Fen(payload.fen));
|
||||
}
|
||||
|
||||
if (payload.moveHistory && payload.moveHistory.length > 0) {
|
||||
moveHistory = payload.moveHistory;
|
||||
}
|
||||
|
||||
gamesOverlay.setMode('finished');
|
||||
gamesOverlay.updateState({
|
||||
positionId: payload.positionId,
|
||||
fen: payload.fen,
|
||||
whiteId: payload.whiteId,
|
||||
blackId: payload.blackId,
|
||||
whiteName: payload.whiteName,
|
||||
blackName: payload.blackName,
|
||||
result: payload.result,
|
||||
gameOver: payload.gameOver
|
||||
});
|
||||
|
||||
updateBoardDisplay();
|
||||
}
|
||||
}
|
||||
|
|
@ -499,6 +535,8 @@
|
|||
return myColor === 'b' ? 'You win!' : 'You lose';
|
||||
} else if (result === 'timeout') {
|
||||
return reason || 'Match timed out';
|
||||
} else if (result === 'cancelled') {
|
||||
return reason || 'Match cancelled';
|
||||
}
|
||||
return `Draw${reason ? ` (${reason})` : ''}`;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue