diff --git a/src/data/HexGrid.vue b/src/data/HexGrid.vue
index 6791d5d..ea97493 100644
--- a/src/data/HexGrid.vue
+++ b/src/data/HexGrid.vue
@@ -4,13 +4,12 @@
@@ -111,6 +109,7 @@ function resetHoveredCell() {
height: 100%;
backdrop-filter: blur(3px);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
+ background-color: var(--color);
}
.hexagon-overlay {
@@ -138,4 +137,20 @@ function resetHoveredCell() {
transform: translateY(-7.5px);
}
}
+
+.gray {
+ --color: rgba(64, 64, 64, 0.6);
+}
+
+.red {
+ --color: rgba(255, 0, 0, 0.86);
+}
+
+.green {
+ --color: rgba(0, 255, 0, 0.6);
+}
+
+.blue {
+ --color: rgba(0, 0, 255, 0.6);
+}
diff --git a/src/data/hexutils.ts b/src/data/hexutils.ts
new file mode 100644
index 0000000..9eb4497
--- /dev/null
+++ b/src/data/hexutils.ts
@@ -0,0 +1,43 @@
+export const hexOffsets = [
+ // even rows
+ [
+ [+1, 0],
+ [+1, -1],
+ [0, -1],
+ [-1, 0],
+ [0, +1],
+ [+1, +1]
+ ],
+ // odd rows
+ [
+ [+1, 0],
+ [0, -1],
+ [-1, -1],
+ [-1, 0],
+ [-1, +1],
+ [0, +1]
+ ]
+] as const;
+
+export function forEachNeighbor(
+ grid: string[][],
+ row: number,
+ col: number,
+ cb: (cell: string | undefined, row: number, col: number) => void
+) {
+ const parity = row & 1;
+ for (let i = 0; i < 6; i++) {
+ const [xOffset, yOffset] = hexOffsets[parity][i];
+ const neighborRow = row + yOffset;
+ const neighborCol = col + xOffset;
+ const neighborCell = grid[neighborRow]?.[neighborCol];
+ cb(neighborCell, neighborRow, neighborCol);
+ }
+}
+
+export function getNeighbors(grid: string[][], row: number, col: number) {
+ const parity = row & 1;
+ return hexOffsets[parity]
+ .map(([xOffset, yOffset]) => grid[row + yOffset]?.[col + xOffset])
+ .filter(cell => cell != null);
+}
diff --git a/src/data/projEntry.tsx b/src/data/projEntry.tsx
index 7d75a4c..9ec9487 100644
--- a/src/data/projEntry.tsx
+++ b/src/data/projEntry.tsx
@@ -9,10 +9,10 @@ import { persistent } from "game/persistence";
import "./main.css";
const tiles = {
- gray: "rgba(64, 64, 64, 0.6)",
- red: "rgba(255, 0, 0, 0.86)",
- green: "rgba(0, 255, 0, 0.6)",
- blue: "rgba(0, 0, 255, 0.6)"
+ gray: "gray",
+ red: "red",
+ green: "green",
+ blue: "blue"
};
/**
@@ -21,7 +21,7 @@ const tiles = {
export const main = createLayer("main", function (this: BaseLayer) {
const grid = persistent([
[tiles.gray, tiles.gray],
- [tiles.gray, tiles.gray, tiles.gray],
+ [tiles.red, tiles.green, tiles.blue],
[tiles.gray, tiles.gray]
]);
return {
@@ -44,7 +44,7 @@ export const main = createLayer("main", function (this: BaseLayer) {
*/
export const getInitialLayers = (
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
- player: Partial
+ player: Partial
): Array => [main];
/**