}
},
getGameType: function(game) {
- if (!!game.id.match(/^i/)) return "import";
+ if (!!game.id.toString().match(/^i/)) return "import";
return game.cadence.indexOf("d") >= 0 ? "corr" : "live";
},
// Notify something after a new move (to opponent and me on MyGames page)
if (sid != this.st.user.sid) {
this.send("askidentity", { target: sid });
this.people[sid] = { tmpIds: data.sockIds[sid] };
- } else {
+ }
+ else {
// Complete my tmpIds:
Object.assign(this.people[sid].tmpIds, data.sockIds[sid]);
}
// player.tmpIds is already set
player.name = user.name;
player.id = user.id;
+ if (this.game.type == "live") {
+ const myGidx =
+ this.game.players.findIndex(p => p.sid == this.st.user.sid);
+ // Sometimes a player name isn't stored yet (TODO: why?)
+ if (
+ myGidx >= 0 &&
+ !this.game.players[1 - myGidx].name &&
+ this.game.players[1 - myGidx].sid == user.sid &&
+ !!user.name
+ ) {
+ this.game.players[1-myGidx].name = user.name;
+ GameStorage.update(
+ this.gameRef,
+ { playerName: { idx: 1 - myGidx, name: user.name } }
+ );
+ }
+ }
this.$forceUpdate(); //TODO: shouldn't be required
// If I multi-connect, kill current connexion if no mark (I'm older)
if (this.newConnect[user.sid]) {
const myIdx = game.players.findIndex(p => {
return p.sid == this.st.user.sid || p.id == this.st.user.id;
});
+ // Sometimes the name isn't stored yet (TODO: why?)
+ if (
+ myIdx >= 0 &&
+ gtype == "live" &&
+ !game.players[myIdx].name &&
+ !!this.st.user.name
+ ) {
+ game.players[myIdx].name = this.st.user.name;
+ GameStorage.update(
+ game.id,
+ { playerName: { idx: myIdx, name: this.st.user.name } }
+ );
+ }
// "mycolor" is undefined for observers
const mycolor = [undefined, "w", "b"][myIdx + 1];
if (gtype == "corr") {
game.clocks = [tc.mainTime, tc.mainTime];
if (myIdx >= 0) {
// I play in this live game
- GameStorage.update(game.id, {
- clocks: game.clocks
- });
+ GameStorage.update(
+ game.id,
+ { clocks: game.clocks }
+ );
}
} else {
if (!!game.initime)
// - from server (one correspondance game I play[ed] or not)
// - from remote peer (one live game I don't play, finished or not)
fetchGame: function(callback) {
-
-console.log("fecth");
- console.log(this.gameRef);
- console.log(this.gameRef.match(/^i/));
-
if (Number.isInteger(this.gameRef) || !isNaN(parseInt(this.gameRef))) {
// corr games identifiers are integers
ajax(
}
);
// PlayOnBoard is enough, and more appropriate for Synchrone Chess
- V.PlayOnBoard(this.vr.board, move);
+ const arMove = (Array.isArray(move) ? move : [move]);
+ for (let i = 0; i < arMove.length; i++)
+ V.PlayOnBoard(this.vr.board, arMove[i]);
const position = this.vr.getBaseFen();
- V.UndoOnBoard(this.vr.board, move);
+ for (let i = arMove.length - 1; i >= 0; i--)
+ V.UndoOnBoard(this.vr.board, arMove[i]);
if (["all","byrow"].includes(V.ShowMoves)) {
this.curDiag = getDiagram({
position: position,