Fix Antiking
[xogo.git] / variants / Antiking2 / class.js
CommitLineData
a548cb4e 1import ChessRules from "/base_rules.js";
f3e90e30
BA
2import AbstractAntikingRules from "/variants/_Antiking/class.js";
3import {Random} from "/utils/alea.js";
a548cb4e 4
f3e90e30 5export default class Antiking2Rules extends AbstractAntikingRules {
a548cb4e
BA
6
7 static get Options() {
8 return {
f3e90e30 9 select: C.Options.select,
a548cb4e
BA
10 styles: A.Options.styles.concat("cylinder")
11 };
12 }
13
14 genRandInitFen(seed) {
15 const baseFen = super.genRandInitFen(seed);
16 // Just add an antiking on 3rd ranks
17 let akPos = [3, 3];
18 if (this.options.randomness >= 1) {
19 akPos[0] = Random.randInt(this.size.y);
20 if (this.options.randomness == 2)
21 akPos[1] = Random.randInt(this.size.y);
22 else
23 akPos[1] = akPos[0];
24 }
f3e90e30
BA
25 const antikingLine = (color) => {
26 const [idx, symbol] = (color == 'w' ? [0, 'a'] : [1, 'A']);
27 return (
28 (akPos[idx] > 0 ? akPos[idx] : "") + symbol +
29 (akPos[idx] < this.size.y - 1
30 ? C.FenEmptySquares(this.size.y - 1 - akPos[idx])
31 : "")
32 );
33 };
34 return (
35 baseFen.replace("p/8", "p/" + antikingLine('b'))
36 .replace("8/P", antikingLine('w') + "/P")
37 );
a548cb4e
BA
38 }
39
40};