if (c.added < minAdded) minAdded = c.added;
if (c.added > maxAdded) maxAdded = c.added;
return Object.assign({ priority: priority }, c);
- // TODO: remove patch soon
- if (!c.options) c.options = {}
});
const deltaAdded = maxAdded - minAdded;
return augmentedChalls.sort((c1, c2) => {
if (!!g.myColor) g.priority++;
if (!!g.myTurn) g.priority++;
}
- // TODO: remove patch soon
- if (!g.options) g.options = {}
});
const deltaCreated = maxCreated - minCreated;
return remGames.sort((g1, g2) => {
},
deleteGame: function(game, e) {
if (
+ // Import ?
+ (typeof game.id == "string" && game.id.charAt(0) == 'i') ||
// My game ?
game.players.some(p =>
p.sid == this.st.user.sid || p.id == this.st.user.id
case "Result":
// Allow importing unfinished games, but mark them as
// "unknown result" to avoid running the clocks...
- game.result = (value != "*" ? value : "?");
+ game.score = (value != "*" ? value : "?");
break;
case "Cadence":
game.cadence = value;
}
getPotentialN_knightMoves(sq) {
- const backward = (this.turn == 'w' ? 1 : -1);
- const kingSteps = [
- [0, -1], [0, 1], [backward, -1], [backward, 0], [backward, 1]
- ];
return (
this.getSlideNJumpMoves(sq, V.steps.$n, 1).concat(
- this.getSlideNJumpMoves(sq, kingSteps, 1))
+ this.getSlideNJumpMoves(sq, V.steps.f, 1))
);
}
}
isAttackedByN_knight(sq, color) {
- const backward = (color == 'w' ? -1 : 1);
- const kingSteps = [
- [0, -1], [0, 1], [backward, -1], [backward, 0], [backward, 1]
- ];
return (
- this.isAttackedBySlideNJump(sq, color, V.N_KNIGHT, V.steps.$n) ||
- this.isAttackedBySlideNJump(sq, color, V.N_KNIGHT, kingSteps, 1)
+ this.isAttackedBySlideNJump(sq, color, V.N_KNIGHT, V.steps.$n, 1) ||
+ this.isAttackedBySlideNJump(sq, color, V.N_KNIGHT, V.steps.f, 1)
);
}
let gameInfo = {
id: getRandString(), //ignored if corr
fen: V.GenRandInitFen(this.game.options),
- options: this.game.options,
+ options: JSON.stringify(this.game.options),
players: [this.game.players[1], this.game.players[0]],
vid: this.game.vid,
cadence: this.game.cadence
"/games",
"POST",
{
- data: Object.assign(
- {},
- gameInfo,
- { options: JSON.stringify(this.game.options) }
- ),
+ data: { gameInfo: gameInfo },
success: (response) => {
gameInfo.id = response.id;
notifyNewGame();
id: c.id,
from: this.st.user.sid,
to: c.to,
- options: c.options,
+ options: JSON.stringify(c.options),
fen: c.fen,
vid: c.vid,
cadence: c.cadence,
if (!game.score)
// New game from Hall
newGame.score = "*";
+ // TODO: remove patch on next line (options || "{}")
+ newGame.options = JSON.parse(newGame.options || "{}");
this.games.push(newGame);
if (
newGame.score == '*' &&
}
case "startgame": {
// New game just started, I'm involved
- const gameInfo = data.data;
- if (this.classifyObject(gameInfo) == "live")
+ let gameInfo = data.data;
+ if (this.classifyObject(gameInfo) == "live") {
+ // TODO: remove patch on next line (+ const gameInfo)
+ if (!gameInfo.options) gameInfo.options = "{}";
this.startNewGame(gameInfo);
+ }
else {
this.infoMessage =
this.st.tr["New correspondence game:"] + " " +
let moreGames = res.games.map(g => {
this.setVname(g);
g.type = "corr";
+ g.options = JSON.parse(g.options);
return g;
});
this.games = this.games.concat(moreGames);
) {
let newChall = Object.assign({}, chall);
newChall.type = this.classifyObject(chall);
- newChall.options = chall.options;
+ // TODO: remove patch on next line (options || "{}")
+ newChall.options = JSON.parse(chall.options || "{}");
newChall.added = Date.now();
let fromValues = Object.assign({}, this.people[chall.from]);
delete fromValues["pages"]; //irrelevant in this context
// Get/set options variables (if any) / TODO: v-model?!
for (const check of this.newchallenge.V.Options.check || []) {
const elt = document.getElementById(check.variable + "_opt");
- if (elt.checked) chall.options[check.variable] = true;
+ chall.options[check.variable] = elt.checked;
}
for (const select of this.newchallenge.V.Options.select || []) {
const elt = document.getElementById(select.variable + "_opt");
this.send("newchallenge", {
data: Object.assign(
// Temporarily add sender infos to display challenge on Discord.
- { from: this.st.user.sid, sender: this.st.user.name }, chall)
+ { from: this.st.user.sid, sender: this.st.user.name },
+ chall,
+ { options: JSON.stringify(chall.options) }
+ )
});
// Add new challenge:
chall.from = {
"POST",
{
data: {
- chall: Object.assign(
- {},
- chall,
- { options: JSON.stringify(chall.options) }
+ chall: Object.assign({},
+ chall, { options: JSON.stringify(chall.options) }
)
},
success: (response) => {
let gameInfo = {
id: getRandString(),
fen: c.fen || V.GenRandInitFen(c.options),
- options: c.options, //for rematch
+ options: JSON.stringify(c.options), //for rematch
players: players,
vid: c.vid,
cadence: c.cadence
{
// cid is useful to delete the challenge:
data: {
- gameInfo: Object.assign(
- {},
- gameInfo,
- { options: JSON.stringify(gameInfo.options) }
- ),
+ gameInfo: gameInfo,
cid: c.id
},
success: (response) => {
moves: [],
clocks: [-1, -1], //-1 = unstarted
chats: [],
- score: "*",
- options: JSON.stringify(gameInfo.options)
+ score: "*"
}
);
setTimeout(
this.corrGames.forEach(g => {
g.type = "corr";
g.score = "*";
+ g.options = JSON.parse(g.options);
});
this.decorate(this.corrGames);
// Now ask completed games (partial list)
case "notifynewgame": {
let gameInfo = data.data;
this.setVname(gameInfo);
+ // TODO: remove patch on next line (options || "{}")
+ gameInfo.options = JSON.parse(gameInfo.options || "{}");
const type = (gameInfo.cadence.indexOf('d') >= 0 ? "corr": "live");
let game = Object.assign(
{
if (L > 0) {
this.cursor["corr"] = res.games[L - 1].created;
let moreGames = res.games;
- moreGames.forEach(g => g.type = "corr");
+ moreGames.forEach(g => {
+ g.type = "corr";
+ g.options = JSON.parse(g.options);
+ });
this.decorate(moreGames);
this.corrGames = this.corrGames.concat(moreGames);
}
this.cursor["live"] = localGames[L - 1].created - 1;
localGames.forEach(g => {
g.type = "live";
- if (!g.options) g.options = {}; //TODO: remove patch
+ // TODO: remove patch on next line (options || "{}")
+ g.options = JSON.parse(g.options || "{}");
});
this.decorate(localGames);
this.liveGames = this.liveGames.concat(localGames);
this.cursor["import"] = importGames[L - 1].created - 1;
importGames.forEach(g => {
g.type = "import";
- if (!g.options) g.options = {}; //TODO: remove patch
+ g.options = JSON.parse(g.options);
this.setVname(g);
});
this.importGames = this.importGames.concat(importGames);