From 33ee191669b40afbd03d8fbf5406382fa2de1bf9 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Sun, 18 Nov 2018 12:27:35 +0100
Subject: [PATCH] Speed up computer thinking, fix Zen ep

---
 public/javascripts/base_rules.js   |  5 +++--
 public/javascripts/variants/Zen.js | 22 +++++++---------------
 2 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/public/javascripts/base_rules.js b/public/javascripts/base_rules.js
index b604e797..d8ec34a0 100644
--- a/public/javascripts/base_rules.js
+++ b/public/javascripts/base_rules.js
@@ -98,6 +98,7 @@ class ChessRules
 				j++;
 			}
 		}
+		// TODO: since we keep moves stack, next 2 are redundant
 		let epSq = undefined;
 		if (fenParts[2] != "-")
 		{
@@ -838,8 +839,7 @@ class ChessRules
 
 	alphabeta(color, oppCol, depth, alpha, beta)
   {
-		const moves = this.getAllValidMoves(color);
-		if (moves.length == 0)
+		if (!this.atLeastOneMove(color))
 		{
 			switch (this.checkGameEnd(color))
 			{
@@ -849,6 +849,7 @@ class ChessRules
 		}
 		if (depth == 0)
       return this.evalPosition();
+		const moves = this.getAllValidMoves(color);
     let v = color=="w" ? -1000 : 1000;
 		if (color == "w")
 		{
diff --git a/public/javascripts/variants/Zen.js b/public/javascripts/variants/Zen.js
index d9e22947..96dd8f9f 100644
--- a/public/javascripts/variants/Zen.js
+++ b/public/javascripts/variants/Zen.js
@@ -1,5 +1,11 @@
 class ZenRules extends ChessRules
 {
+	// NOTE: enPassant, if enabled, would need to redefine carefully getEpSquare
+	getEpSquare(move)
+	{
+		return undefined;
+	}
+
 	// TODO: some duplicated code in 2 next functions
 	getSlideNJumpMoves(x, y, color, steps, oneStep)
 	{
@@ -135,21 +141,7 @@ class ZenRules extends ChessRules
 			});
 		}
 
-		// En passant
-		const Lep = this.epSquares.length;
-		const epSquare = Lep>0 ? this.epSquares[Lep-1] : undefined;
-		if (!!epSquare && epSquare.x == x+shift && Math.abs(epSquare.y - y) == 1)
-		{
-			let epStep = epSquare.y - y;
-			var enpassantMove = this.getBasicMove(x, y, x+shift, y+epStep);
-			enpassantMove.vanish.push({
-				x: x,
-				y: y+epStep,
-				p: 'p',
-				c: this.getColor(x,y+epStep)
-			});
-			moves.push(enpassantMove);
-		}
+		// No en passant here
 
 		// Add "zen" captures
 		Array.prototype.push.apply(moves, this.findCaptures(x, y, color));
-- 
2.44.0