2018-11-18 18:04:50 +00:00
|
|
|
import Color from "./color.js";
|
|
|
|
|
2018-11-18 10:07:36 +00:00
|
|
|
class Shape {
|
2018-11-18 18:04:50 +00:00
|
|
|
constructor(x, y, color) {
|
|
|
|
this._x = x;
|
|
|
|
this._y = y;
|
|
|
|
this.color = color;
|
2018-11-18 18:09:30 +00:00
|
|
|
}
|
2018-11-18 18:04:50 +00:00
|
|
|
draw(context) {
|
2018-11-18 18:14:06 +00:00
|
|
|
throw new Error("A pure virtual method call of a shape " + this.constructor.name);
|
2018-11-18 18:09:30 +00:00
|
|
|
}
|
2018-11-19 07:59:20 +00:00
|
|
|
|
|
|
|
static get maxX() {
|
|
|
|
return maxX;
|
|
|
|
}
|
|
|
|
static get maxY() {
|
|
|
|
return maxY;
|
|
|
|
}
|
|
|
|
|
2018-11-18 18:04:50 +00:00
|
|
|
static randomOptions() {
|
|
|
|
return {
|
2018-11-19 07:59:20 +00:00
|
|
|
x: Math.floor(Math.random() * this.maxX),
|
|
|
|
y: Math.floor(Math.random() * this.maxY),
|
2018-11-20 14:30:01 +00:00
|
|
|
color: coloring ? Color.random() : Color.randomGray()
|
2018-11-18 18:04:50 +00:00
|
|
|
}
|
2018-11-18 18:09:30 +00:00
|
|
|
}
|
2018-11-18 18:04:50 +00:00
|
|
|
static fromOptions(o) {
|
|
|
|
return new Shape(o.x, o.y, o.color);
|
2018-11-18 10:07:36 +00:00
|
|
|
}
|
2018-11-19 07:59:20 +00:00
|
|
|
static setBounding(w, h) {
|
|
|
|
maxX = w;
|
|
|
|
maxY = h;
|
|
|
|
}
|
2018-11-20 14:30:01 +00:00
|
|
|
static setColoring(bool) {
|
2018-11-20 14:32:45 +00:00
|
|
|
coloring = bool !== false;
|
2018-11-20 14:30:01 +00:00
|
|
|
}
|
2018-11-18 10:07:36 +00:00
|
|
|
}
|
|
|
|
|
2018-11-19 07:59:20 +00:00
|
|
|
let maxX = 1000;
|
|
|
|
let maxY = 1000;
|
2018-11-20 14:30:01 +00:00
|
|
|
let coloring = true;
|
2018-11-18 18:04:50 +00:00
|
|
|
|
2018-11-18 10:07:36 +00:00
|
|
|
export default Shape;
|