projects
/
xogo.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add Avalanche, write Avalam rules
[xogo.git]
/
base_rules.js
diff --git
a/base_rules.js
b/base_rules.js
index
08e9d1b
..
8eed3d3
100644
(file)
--- a/
base_rules.js
+++ b/
base_rules.js
@@
-1,5
+1,5
@@
-import {
Random
} from "/utils/alea.js";
-import {
ArrayFun
} from "/utils/array.js";
+import {
Random
} from "/utils/alea.js";
+import {
ArrayFun
} from "/utils/array.js";
import PiPo from "/utils/PiPo.js";
import Move from "/utils/Move.js";
import PiPo from "/utils/PiPo.js";
import Move from "/utils/Move.js";
@@
-117,7
+117,7
@@
export default class ChessRules {
}
// Some variants reveal moves only after both players played
}
// Some variants reveal moves only after both players played
- hideMoves() {
+
get
hideMoves() {
return false;
}
return false;
}
@@
-528,20
+528,16
@@
export default class ChessRules {
(oldV,newV) => oldV + (this.reserve[c][newV] > 0 ? 1 : 0), 0);
}
(oldV,newV) => oldV + (this.reserve[c][newV] > 0 ? 1 : 0), 0);
}
- static AddClass_es(
piece
, class_es) {
+ static AddClass_es(
elt
, class_es) {
if (!Array.isArray(class_es))
class_es = [class_es];
if (!Array.isArray(class_es))
class_es = [class_es];
- class_es.forEach(cl => {
- piece.classList.add(cl);
- });
+ class_es.forEach(cl => elt.classList.add(cl));
}
}
- static RemoveClass_es(
piece
, class_es) {
+ static RemoveClass_es(
elt
, class_es) {
if (!Array.isArray(class_es))
class_es = [class_es];
if (!Array.isArray(class_es))
class_es = [class_es];
- class_es.forEach(cl => {
- piece.classList.remove(cl);
- });
+ class_es.forEach(cl => elt.classList.remove(cl));
}
// Generally light square bottom-right
}
// Generally light square bottom-right
@@
-629,6
+625,8
@@
export default class ChessRules {
class="chessboard_SVG">`;
for (let i=0; i < this.size.x; i++) {
for (let j=0; j < this.size.y; j++) {
class="chessboard_SVG">`;
for (let i=0; i < this.size.x; i++) {
for (let j=0; j < this.size.y; j++) {
+ if (!this.onBoard(i, j))
+ continue;
const ii = (flipped ? this.size.x - 1 - i : i);
const jj = (flipped ? this.size.y - 1 - j : j);
let classes = this.getSquareColorClass(ii, jj);
const ii = (flipped ? this.size.x - 1 - i : i);
const jj = (flipped ? this.size.y - 1 - j : j);
let classes = this.getSquareColorClass(ii, jj);
@@
-1494,7
+1492,7
@@
export default class ChessRules {
let moves = [];
for (let i=0; i<this.size.x; i++) {
for (let j=0; j<this.size.y; j++) {
let moves = [];
for (let i=0; i<this.size.x; i++) {
for (let j=0; j<this.size.y; j++) {
- if (this.canDrop([c, p], [i, j])) {
+ if (this.
onBoard(i, j) && this.
canDrop([c, p], [i, j])) {
let mv = new Move({
start: {x: c, y: p},
end: {x: i, y: j},
let mv = new Move({
start: {x: c, y: p},
end: {x: i, y: j},
@@
-2422,7
+2420,11
@@
export default class ChessRules {
}
// What is the score ? (Interesting if game is over)
}
// What is the score ? (Interesting if game is over)
- getCurrentScore(move) {
+ getCurrentScore(move_s) {
+ const move = move_s[move_s.length - 1];
+ // Shortcut in case the score was computed before:
+ if (move.result)
+ return move.result;
const color = this.turn;
const oppCol = C.GetOppCol(color);
const kingPos = {
const color = this.turn;
const oppCol = C.GetOppCol(color);
const kingPos = {
@@
-2631,7
+2633,7
@@
export default class ChessRules {
return 0; //nb of targets
}
return 0; //nb of targets
}
- launchAnimation(moves, callback) {
+ launchAnimation(moves, c
ontainer, c
allback) {
if (this.hideMoves) {
moves.forEach(m => this.play(m));
callback();
if (this.hideMoves) {
moves.forEach(m => this.play(m));
callback();
@@
-2658,10
+2660,17
@@
export default class ChessRules {
alert("New move! Let's go back to game...");
document.getElementById("gameInfos").style.display = "none";
container.style.display = "block";
alert("New move! Let's go back to game...");
document.getElementById("gameInfos").style.display = "none";
container.style.display = "block";
- setTimeout(() => this.launchAnimation(moves, callback), 700);
+ setTimeout(
+ () => this.launchAnimation(moves, container, callback),
+ 700
+ );
+ }
+ else {
+ setTimeout(
+ () => this.launchAnimation(moves, container, callback),
+ delay || 0
+ );
}
}
- else
- setTimeout(() => this.launchAnimation(moves, callback), delay || 0);
};
let container = document.getElementById(this.containerId);
if (document.hidden) {
};
let container = document.getElementById(this.containerId);
if (document.hidden) {