Better randomness in Ball variant + notify when receiving targetting challenge
authorBenjamin Auder <benjamin.auder@somewhere>
Sat, 28 Mar 2020 21:04:43 +0000 (22:04 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Sat, 28 Mar 2020 21:04:43 +0000 (22:04 +0100)
client/src/variants/Ball.js
client/src/views/Hall.vue

index 19b81ed..734a921 100644 (file)
@@ -134,17 +134,26 @@ export class BallRules extends ChessRules {
         break;
       }
 
-      // Get random squares for every piece, totally freely
+      // Get random squares for every piece, with bishops and phoenixes
+      // on different colors:
       let positions = shuffle(ArrayFun.range(9));
-      const composition = ['b', 'b', 'r', 'r', 'n', 'n', 'h', 'h', 'q'];
-      const rem2 = positions[0] % 2;
+      const composition = ['b', 'b', 'h', 'h', 'n', 'n', 'r', 'r', 'q'];
+      let rem2 = positions[0] % 2;
       if (rem2 == positions[1] % 2) {
         // Fix bishops (on different colors)
-        for (let i=2; i<9; i++) {
+        for (let i=4; i<9; i++) {
           if (positions[i] % 2 != rem2)
             [positions[1], positions[i]] = [positions[i], positions[1]];
         }
       }
+      rem2 = positions[2] % 2;
+      if (rem2 == positions[3] % 2) {
+        // Fix phoenixes too:
+        for (let i=4; i<9; i++) {
+          if (positions[i] % 2 != rem2)
+            [positions[3], positions[i]] = [positions[i], positions[3]];
+        }
+      }
       for (let i = 0; i < 9; i++) pieces[c][positions[i]] = composition[i];
     }
     return (
index ab5108e..0ed355b 100644 (file)
@@ -927,6 +927,15 @@ export default {
             .getElementById("btnC" + newChall.type)
             .classList.add("somethingnew");
         }
+        if (!!chall.to) {
+          notify(
+            "New challenge",
+            // fromValues.name should exist since the player is online, but
+            // let's consider there is some chance that the challenge arrives
+            // right after we connected and before receiving the poll result:
+            { body: "from " + (fromValues.name || "unknown yet...") }
+          );
+        }
       }
     },
     loadNewchallVariant: async function(cb) {