Commit | Line | Data |
---|---|---|
33b42748 BA |
1 | import ChessRules from "/base_rules.js"; |
2 | ||
3 | export default class AbstractFlipRules extends ChessRules { | |
4 | ||
5 | // For games without captures (replaced by flips) | |
6 | get hasEnpassant() { | |
7 | return false; | |
8 | } | |
9 | canTake() { | |
10 | return false; | |
11 | } | |
12 | filterValid(moves) { | |
13 | return moves; | |
14 | } | |
15 | underCheck() { | |
16 | return false; | |
17 | } | |
18 | ||
19 | playOnBoard(move) { | |
20 | super.playOnBoard(move); | |
21 | this.flipColorOf(move.flips); | |
22 | } | |
23 | undoOnBoard(move) { | |
24 | super.undoOnBoard(move); | |
25 | this.flipColorOf(move.flips); | |
26 | } | |
27 | ||
28 | flipColorOf(flips) { | |
29 | for (let xy of flips) { | |
616a8d7a | 30 | const newColor = C.GetOppTurn(this.getColor(xy.x, xy.y)); |
33b42748 BA |
31 | this.board[xy.x][xy.y] = newColor + this.board[xy.x][xy.y][1]; |
32 | } | |
33 | } | |
34 | ||
35 | playVisual(move, r) { | |
36 | super.playVisual(move, r); | |
37 | move.flips.forEach(f => { | |
38 | this.g_pieces[f.x][f.y].classList.toggle("white"); | |
39 | this.g_pieces[f.x][f.y].classList.toggle("black"); | |
40 | }); | |
41 | } | |
42 | ||
43 | }; |