+ // For (generally old) variants without checkered board
+ static get Monochrome() {
+ return false;
+ }
+
+ // Some games are drawn unusually (bottom right corner is black)
+ static get DarkBottomRight() {
+ return false;
+ }
+
+ // Some variants require lines drawing
+ static get Lines() {
+ if (V.Monochrome) {
+ let lines = [];
+ // Draw all inter-squares lines
+ for (let i = 0; i <= V.size.x; i++)
+ lines.push([[i, 0], [i, V.size.y]]);
+ for (let j = 0; j <= V.size.y; j++)
+ lines.push([[0, j], [V.size.x, j]]);
+ return lines;
+ }
+ return null;
+ }
+
+ // In some variants, the player who repeat a position loses
+ static get LoseOnRepetition() {
+ return false;
+ }
+ // And in some others (Iceage), repetitions should be ignored:
+ static get IgnoreRepetition() {
+ return false;
+ }
+
+ // At some stages, some games could wait clicks only:
+ onlyClick() {
+ return false;
+ }
+
+ // Some variants use click infos:
+ doClick() {
+ return null;
+ }
+
+ // Some variants may need to highlight squares on hover (Hamilton, Weiqi...)
+ hoverHighlight() {
+ return false;
+ }
+