From 5a187b07e221493931cf089bf85ef6db41d8b775 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Sat, 28 Mar 2020 21:02:47 +0100
Subject: [PATCH] Fix Horde variant + a bug when socket is not ready in Hall
 and Game send() method

---
 client/src/variants/Horde.js | 18 ++++++++++++++++--
 client/src/views/Game.vue    |  2 +-
 client/src/views/Hall.vue    |  2 +-
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/client/src/variants/Horde.js b/client/src/variants/Horde.js
index e61803b3..6305c412 100644
--- a/client/src/variants/Horde.js
+++ b/client/src/variants/Horde.js
@@ -39,13 +39,27 @@ export class HordeRules extends ChessRules {
     if (randomness == 2) randomness--;
     const fen = ChessRules.GenRandInitFen(randomness);
     return (
-      // 27 first chars are 3 rows + 3 slashes
-      fen.substr(0, 27)
+      // 20 first chars are 3 rows + 3 slashes
+      fen.substr(0, 20)
       // En passant available, but no castle:
       .concat("1PP2PP1/PPPPPPPP/PPPPPPPP/PPPPPPPP/PPPPPPPP w 0 -")
     );
   }
 
+  filterValid(moves) {
+    if (this.turn == 'w') return moves;
+    return super.filterValid(moves);
+  }
+
+  getCheckSquares(color) {
+    if (color == 'w') return [];
+    return (
+      this.underCheck('b')
+        ? [JSON.parse(JSON.stringify(this.kingPos['b']))]
+        : []
+    );
+  }
+
   getCurrentScore() {
     if (this.turn == 'w') {
       // Do I have any unit remaining? If not, I lost.
diff --git a/client/src/views/Game.vue b/client/src/views/Game.vue
index fe55f743..19033f50 100644
--- a/client/src/views/Game.vue
+++ b/client/src/views/Game.vue
@@ -372,7 +372,7 @@ export default {
       }
     },
     send: function(code, obj) {
-      if (!!this.conn)
+      if (!!this.conn && this.conn.readyState == 1)
         this.conn.send(JSON.stringify(Object.assign({ code: code }, obj)));
     },
     isConnected: function(index) {
diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue
index 57557d49..ab5108e5 100644
--- a/client/src/views/Hall.vue
+++ b/client/src/views/Hall.vue
@@ -502,7 +502,7 @@ export default {
         document.getElementById("cadence").focus();
     },
     send: function(code, obj) {
-      if (!!this.conn) {
+      if (!!this.conn && this.conn.readyState == 1) {
         this.conn.send(JSON.stringify(Object.assign({ code: code }, obj)));
       }
     },
-- 
2.44.0