import React from "react";
import { Line, Group, RegularPolygon } from "react-konva";
import {
getCellLocation,
gridClipFunction,
shouldClipCell,
} from "../helpers/grid";
import { useGrid } from "../contexts/GridContext";
function Grid({ strokeWidth, stroke }) {
const {
grid,
gridStrokeWidth,
gridPixelSize,
gridOffset,
gridCellPixelSize,
} = useGrid();
if (!grid?.size.x || !grid?.size.y) {
return null;
}
const shapes = [];
if (grid.type === "square") {
for (let x = 1; x < grid.size.x; x++) {
shapes.push(
);
}
for (let y = 1; y < grid.size.y; y++) {
shapes.push(
);
}
} else if (grid.type === "hexVertical" || grid.type === "hexHorizontal") {
// Start at -1 to overshoot the bounds of the grid to ensure all lines are drawn
for (let x = -1; x < grid.size.x; x++) {
for (let y = -1; y < grid.size.y; y++) {
const cellLocation = getCellLocation(grid, x, y, gridCellPixelSize);
shapes.push(
gridClipFunction(context, grid, x, y, gridCellPixelSize))
}
x={cellLocation.x}
y={cellLocation.y}
offset={gridOffset}
>
);
}
}
}
return {shapes};
}
Grid.defaultProps = {
strokeWidth: 0.1,
stroke: "white",
};
export default Grid;