more explicit names for draw<Shape>
This commit is contained in:
74
src/drawHexagon.js
Normal file
74
src/drawHexagon.js
Normal file
@@ -0,0 +1,74 @@
|
||||
|
||||
export default class DrawHexagon {
|
||||
constructor(settings) {
|
||||
this.flatTopCornerX = [];
|
||||
this.flatTopCornerY = [];
|
||||
this.pointyTopCornerX = [];
|
||||
this.pointyTopCornerY = [];
|
||||
|
||||
// dice dots, 0,0 is center
|
||||
// TODO: if pointy: [0].concat(flatTop), if flat: [0].concat(pointy)
|
||||
// this.hexDotX = [0];
|
||||
// this.hexDotY = [0];
|
||||
|
||||
let hexSides = 6;
|
||||
let hexSlices = 24;
|
||||
for (let hexSlice = 0; hexSlice < hexSlices; hexSlice++) {
|
||||
let x = parseInt(Math.cos(((hexSlice / hexSlices) * hexSides) * (2 * Math.PI) / hexSides) * 1000) / 1000;
|
||||
let y = parseInt(Math.sin(((hexSlice / hexSlices) * hexSides) * (2 * Math.PI) / hexSides) * 1000) / 1000;
|
||||
|
||||
if ((hexSlice % 4) === 0) {
|
||||
let cur = hexSlice / 4;
|
||||
this.flatTopCornerX[cur] = x;
|
||||
this.flatTopCornerY[cur] = y;
|
||||
}
|
||||
|
||||
if (((hexSlice-2) % 4) === 0) {
|
||||
let cur = (hexSlice-2) / 4;
|
||||
this.pointyTopCornerX[cur] = x;
|
||||
this.pointyTopCornerY[cur] = y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
outline(context, cell) {
|
||||
let x = cell.x;
|
||||
let y = cell.y;
|
||||
let scale = cell.scale;
|
||||
let hexCornerX = cell.pointyTop ? this.pointyTopCornerX : this.flatTopCornerX;
|
||||
let hexCornerY = cell.pointyTop ? this.pointyTopCornerY : this.flatTopCornerY;
|
||||
|
||||
context.beginPath();
|
||||
context.moveTo(x + scale * hexCornerX[0], y + scale * hexCornerY[0]);
|
||||
context.lineTo(x + scale * hexCornerX[1], y + scale * hexCornerY[1]);
|
||||
context.lineTo(x + scale * hexCornerX[2], y + scale * hexCornerY[2]);
|
||||
context.lineTo(x + scale * hexCornerX[3], y + scale * hexCornerY[3]);
|
||||
context.lineTo(x + scale * hexCornerX[4], y + scale * hexCornerY[4]);
|
||||
context.lineTo(x + scale * hexCornerX[5], y + scale * hexCornerY[5]);
|
||||
context.closePath();
|
||||
|
||||
context.lineWidth = cell.width;
|
||||
context.strokeStyle = cell.getColor();
|
||||
context.stroke();
|
||||
}
|
||||
|
||||
filled(context, cell) {
|
||||
let x = cell.x;
|
||||
let y = cell.y;
|
||||
let scale = cell.scale;
|
||||
let hexCornerX = cell.pointyTop ? this.pointyTopCornerX : this.flatTopCornerX;
|
||||
let hexCornerY = cell.pointyTop ? this.pointyTopCornerY : this.flatTopCornerY;
|
||||
|
||||
context.beginPath();
|
||||
context.moveTo(x + scale * hexCornerX[0], y + scale * hexCornerY[0]);
|
||||
context.lineTo(x + scale * hexCornerX[1], y + scale * hexCornerY[1]);
|
||||
context.lineTo(x + scale * hexCornerX[2], y + scale * hexCornerY[2]);
|
||||
context.lineTo(x + scale * hexCornerX[3], y + scale * hexCornerY[3]);
|
||||
context.lineTo(x + scale * hexCornerX[4], y + scale * hexCornerY[4]);
|
||||
context.lineTo(x + scale * hexCornerX[5], y + scale * hexCornerY[5]);
|
||||
|
||||
context.fillStyle = cell.getColor();
|
||||
context.fill();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user