-
Notifications
You must be signed in to change notification settings - Fork 0
/
Piece.js
44 lines (38 loc) · 999 Bytes
/
Piece.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import Grid from "./Grid.js";
import PieceElement from "./PieceElement.js";
export default class Piece {
/** @type {import("./PieceList.js").default} */
parent = null;
elManager = new PieceElement(this);
#color = "black";
grid = new Grid(this.elManager.els.grid, this.#color);
#count = 1;
isRotatable = false;
isFlipable = false;
/**
* @param {import("./PieceList.js").default} parent
* @param {string} defaultColor
*/
constructor(parent, defaultColor = "black") {
this.parent = parent;
this.#color = defaultColor;
this.grid.defaultColor = defaultColor;
}
get color() {
return this.#color;
}
set color(value) {
this.#color = value;
this.grid.defaultColor = value;
}
get count() {
return this.#count;
}
set count(value) {
this.#count = value;
if (isNaN(this.#count)) this.#count = 1;
if (this.#count < 0) this.#count = 0;
if (this.#count > 10000) this.#count = 10000;
this.elManager.update();
}
}