Fix magnetic promotions, attempt to fix Alice chess
authorBenjamin Auder <benjamin.auder@somewhere>
Fri, 23 Nov 2018 12:09:51 +0000 (13:09 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Fri, 23 Nov 2018 12:09:51 +0000 (13:09 +0100)
public/javascripts/components/game.js
public/javascripts/variants/Alice.js
public/javascripts/variants/Magnetic.js

index e3cc6af..ca8a6bf 100644 (file)
@@ -574,7 +574,7 @@ Vue.component('my-game', {
                        this.newGame("computer");
                },
                newGame: function(mode, fenInit, color, oppId, moves, continuation) {
-                       const fen = fenInit || VariantRules.GenRandInitFen();
+                       const fen = "pppppppp/rnbqkbnr/8/8/8/8/PPPPPPPP/ROBQKBOR 1111"; //fenInit || VariantRules.GenRandInitFen();
                        console.log(fen); //DEBUG
                        this.score = "*";
                        if (mode=="human" && !oppId)
index 3cba8d0..1e1ce46 100644 (file)
@@ -76,12 +76,15 @@ class AliceRules extends ChessRules
                                        return false;
                                }
                        }
-                       m.appear.forEach(psq => {
-                               if (Object.keys(VariantRules.ALICE_CODES).includes(psq.p))
+                       // If the move is computed on board1, m.appear change for Alice pieces.
+                       if (mirrorSide==1)
+                       {
+                               m.appear.forEach(psq => { //forEach: castling taken into account
                                        psq.p = VariantRules.ALICE_CODES[psq.p]; //goto board2
-                               else
-                                       psq.p = VariantRules.ALICE_PIECES[psq.p]; //goto board1
-                       });
+                               });
+                       }
+                       else //move on board2: mark vanishing piece as Alice
+                               m.vanish[0].p = VariantRules.ALICE_CODES[m.vanish[0].p]
                        return true;
                });
        }
index 7fecf78..d1436c0 100644 (file)
@@ -112,7 +112,7 @@ class MagneticRules extends ChessRules
                // Scan move for pawn (max 1) on 8th rank
                for (let i=1; i<move.appear.length; i++)
                {
-                       if (move.appear[i].p==V.PAWN && move.appear[i].x==lastRank)
+                       if (move.appear[i].p==V.PAWN && move.appear[i].c==color && move.appear[i].x==lastRank)
                        {
                                move.appear[i].p = V.ROOK;
                                moves.push(move);