projects
/
xogo.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix Dobutsu, extend Align4
[xogo.git]
/
base_rules.js
diff --git
a/base_rules.js
b/base_rules.js
index
0f89cc4
..
9a364e8
100644
(file)
--- a/
base_rules.js
+++ b/
base_rules.js
@@
-338,7
+338,7
@@
export default class ChessRules {
getReserveFen(o) {
if (o.init)
getReserveFen(o) {
if (o.init)
- return
"000000000000"
;
+ return
Array(2 * V.ReserveArray.length).fill('0').join("")
;
return (
['w', 'b'].map(c => Object.values(this.reserve[c]).join("")).join("")
);
return (
['w', 'b'].map(c => Object.values(this.reserve[c]).join("")).join("")
);
@@
-416,14
+416,14
@@
export default class ChessRules {
}
// Some additional variables from FEN (variant dependant)
}
// Some additional variables from FEN (variant dependant)
- setOtherVariables(fenParsed
, pieceArray
) {
+ setOtherVariables(fenParsed) {
// Set flags and enpassant:
if (this.hasFlags)
this.setFlags(fenParsed.flags);
if (this.hasEnpassant)
this.epSquare = this.getEpSquare(fenParsed.enpassant);
if (this.hasReserve && !this.isDiagram)
// Set flags and enpassant:
if (this.hasFlags)
this.setFlags(fenParsed.flags);
if (this.hasEnpassant)
this.epSquare = this.getEpSquare(fenParsed.enpassant);
if (this.hasReserve && !this.isDiagram)
- this.initReserves(fenParsed.reserve
, pieceArray
);
+ this.initReserves(fenParsed.reserve);
if (this.options["crazyhouse"])
this.initIspawn(fenParsed.ispawn);
if (this.options["teleport"]) {
if (this.options["crazyhouse"])
this.initIspawn(fenParsed.ispawn);
if (this.options["teleport"]) {
@@
-441,14
+441,16
@@
export default class ChessRules {
}
// ordering as in pieces() p,r,n,b,q,k
}
// ordering as in pieces() p,r,n,b,q,k
- initReserves(reserveStr, pieceArray) {
- if (!pieceArray)
- pieceArray = ['p', 'r', 'n', 'b', 'q', 'k'];
+ static get ReserveArray() {
+ return ['p', 'r', 'n', 'b', 'q', 'k'];
+ }
+
+ initReserves(reserveStr) {
const counts = reserveStr.split("").map(c => parseInt(c, 36));
const counts = reserveStr.split("").map(c => parseInt(c, 36));
- const L =
piec
eArray.length;
+ const L =
V.Reserv
eArray.length;
this.reserve = {
this.reserve = {
- w: ArrayFun.toObject(
piec
eArray, counts.slice(0, L)),
- b: ArrayFun.toObject(
piec
eArray, counts.slice(L, 2 * L))
+ w: ArrayFun.toObject(
V.Reserv
eArray, counts.slice(0, L)),
+ b: ArrayFun.toObject(
V.Reserv
eArray, counts.slice(L, 2 * L))
};
}
};
}
@@
-463,7
+465,7
@@
export default class ChessRules {
// VISUAL UTILS
getPieceWidth(rwidth) {
// VISUAL UTILS
getPieceWidth(rwidth) {
- return (rwidth /
this.size.y
);
+ return (rwidth /
Math.max(this.size.x, this.size.y)
);
}
getReserveSquareSize(rwidth, nbR) {
}
getReserveSquareSize(rwidth, nbR) {
@@
-854,9
+856,10
@@
export default class ChessRules {
y = (this.playerColor == i ? y = r.height + 5 : - 5 - rsqSize);
}
else {
y = (this.playerColor == i ? y = r.height + 5 : - 5 - rsqSize);
}
else {
- const sqSize = r.width /
this.size.y
;
+ const sqSize = r.width /
Math.max(this.size.x, this.size.y)
;
const flipped = this.flippedBoard;
const flipped = this.flippedBoard;
- x = (flipped ? this.size.y - 1 - j : j) * sqSize;
+ x = (flipped ? this.size.y - 1 - j : j) * sqSize +
+ Math.abs(this.size.x - this.size.y) * sqSize / 2;
y = (flipped ? this.size.x - 1 - i : i) * sqSize;
}
return [r.x + x, r.y + y];
y = (flipped ? this.size.x - 1 - i : i) * sqSize;
}
return [r.x + x, r.y + y];
@@
-2282,11
+2285,6
@@
export default class ChessRules {
if (this.hasCastle)
this.updateCastleFlags(move);
if (this.options["crazyhouse"]) {
if (this.hasCastle)
this.updateCastleFlags(move);
if (this.options["crazyhouse"]) {
- move.vanish.forEach(v => {
- const square = C.CoordsToSquare({x: v.x, y: v.y});
- if (this.ispawn[square])
- delete this.ispawn[square];
- });
if (move.appear.length > 0 && move.vanish.length > 0) {
// Assumption: something is moving
const initSquare = C.CoordsToSquare(move.start);
if (move.appear.length > 0 && move.vanish.length > 0) {
// Assumption: something is moving
const initSquare = C.CoordsToSquare(move.start);
@@
-2305,6
+2303,11
@@
export default class ChessRules {
delete this.ispawn[destSquare];
}
}
delete this.ispawn[destSquare];
}
}
+ move.vanish.forEach(v => {
+ const square = C.CoordsToSquare({x: v.x, y: v.y});
+ if (this.ispawn[square])
+ delete this.ispawn[square];
+ });
}
const minSize = Math.min(move.appear.length, move.vanish.length);
if (
}
const minSize = Math.min(move.appear.length, move.vanish.length);
if (