From: Benjamin Auder Date: Mon, 6 Apr 2020 23:03:52 +0000 (+0200) Subject: Show score message in versus mode too. Fix Ambiguous chess for pawns promotions X-Git-Url: https://git.auder.net/js/css/%7B%7B%20path%28%27fos_user_profile_show%27%29%20%7D%7D?a=commitdiff_plain;h=ff3a8d16dc0aed16ff471834fe7af0253b50ead6;p=vchess.git Show score message in versus mode too. Fix Ambiguous chess for pawns promotions --- diff --git a/client/src/components/BaseGame.vue b/client/src/components/BaseGame.vue index 8cb1f68a..ae6c128f 100644 --- a/client/src/components/BaseGame.vue +++ b/client/src/components/BaseGame.vue @@ -501,9 +501,9 @@ export default { else this.lastMove.notation += "#"; } } - if (score != "*" && this.mode == "analyze") { + if (score != "*" && ["analyze", "versus"].includes(this.mode)) { const message = getScoreMessage(score); - // Just show score on screen (allow undo) + // Show score on screen this.showEndgameMsg(score + " . " + this.st.tr[message]); } return score; diff --git a/client/src/variants/Ambiguous.js b/client/src/variants/Ambiguous.js index 29ab2ca6..88566e76 100644 --- a/client/src/variants/Ambiguous.js +++ b/client/src/variants/Ambiguous.js @@ -19,8 +19,21 @@ export class AmbiguousRules extends ChessRules { const oppCol = V.GetOppCol(color); if (this.subTurn == 2) { // Just play a normal move (which in fact only indicate a square) + let movesHash = {}; return ( super.getPotentialMovesFrom([x, y]) + .filter(m => { + // Filter promotions: keep only one, since no choice now. + if (m.appear[0].p != m.vanish[0].p) { + const hash = V.CoordsToSquare(m.start) + V.CoordsToSquare(m.end); + if (!movesHash[hash]) { + movesHash[hash] = true; + return true; + } + return false; + } + return true; + }) .map(m => { if (m.vanish.length == 1) m.appear[0].p = V.GOAL; else m.appear[0].p = V.TARGET_CODE[m.vanish[1].p];