@@ -8,7 +8,13 @@ import {
88 stringToCoord ,
99} from "../state/GameOfLifeState" ;
1010
11- export type PatternName = "glider" | "diagonal" | "hexagon" | "triangle" | "line" | "spark" ;
11+ export type PatternName =
12+ | "glider"
13+ | "diagonal"
14+ | "hexagon"
15+ | "triangle"
16+ | "line"
17+ | "spark" ;
1218
1319export const PATTERNS : Record < PatternName , Coordinate [ ] > = {
1420 glider : [
@@ -25,32 +31,57 @@ export const PATTERNS: Record<PatternName, Coordinate[]> = {
2531 ] ,
2632 diagonal : [
2733 // Diagonal stripe (10 cells)
28- { q : - 2 , r : 2 } , { q : - 1 , r : 1 } , { q : 0 , r : 0 } , { q : 1 , r : - 1 } , { q : 2 , r : - 2 } ,
29- { q : - 1 , r : 2 } , { q : 0 , r : 1 } , { q : 1 , r : 0 } , { q : 2 , r : - 1 } , { q : 3 , r : - 2 } ,
34+ { q : - 2 , r : 2 } ,
35+ { q : - 1 , r : 1 } ,
36+ { q : 0 , r : 0 } ,
37+ { q : 1 , r : - 1 } ,
38+ { q : 2 , r : - 2 } ,
39+ { q : - 1 , r : 2 } ,
40+ { q : 0 , r : 1 } ,
41+ { q : 1 , r : 0 } ,
42+ { q : 2 , r : - 1 } ,
43+ { q : 3 , r : - 2 } ,
3044 ] ,
3145 hexagon : [
3246 // Hexagon ring (6 cells)
33- { q : 1 , r : 0 } , { q : 0 , r : 1 } , { q : - 1 , r : 1 } ,
34- { q : - 1 , r : 0 } , { q : 0 , r : - 1 } , { q : 1 , r : - 1 } ,
47+ { q : 1 , r : 0 } ,
48+ { q : 0 , r : 1 } ,
49+ { q : - 1 , r : 1 } ,
50+ { q : - 1 , r : 0 } ,
51+ { q : 0 , r : - 1 } ,
52+ { q : 1 , r : - 1 } ,
3553 ] ,
3654 triangle : [
3755 // Filled triangle (10 cells)
3856 { q : 0 , r : 0 } ,
39- { q : - 1 , r : 1 } , { q : 0 , r : 1 } ,
40- { q : - 2 , r : 2 } , { q : - 1 , r : 2 } , { q : 0 , r : 2 } ,
41- { q : - 3 , r : 3 } , { q : - 2 , r : 3 } , { q : - 1 , r : 3 } , { q : 0 , r : 3 } ,
57+ { q : - 1 , r : 1 } ,
58+ { q : 0 , r : 1 } ,
59+ { q : - 2 , r : 2 } ,
60+ { q : - 1 , r : 2 } ,
61+ { q : 0 , r : 2 } ,
62+ { q : - 3 , r : 3 } ,
63+ { q : - 2 , r : 3 } ,
64+ { q : - 1 , r : 3 } ,
65+ { q : 0 , r : 3 } ,
4266 ] ,
4367 line : [
4468 // Straight line (6 cells)
45- { q : - 2 , r : 0 } , { q : - 1 , r : 0 } , { q : 0 , r : 0 } ,
46- { q : 1 , r : 0 } , { q : 2 , r : 0 } , { q : 3 , r : 0 } ,
69+ { q : - 2 , r : 0 } ,
70+ { q : - 1 , r : 0 } ,
71+ { q : 0 , r : 0 } ,
72+ { q : 1 , r : 0 } ,
73+ { q : 2 , r : 0 } ,
74+ { q : 3 , r : 0 } ,
4775 ] ,
4876 spark : [
4977 // Sparse pattern - each cell has ~2-3 neighbors
5078 { q : 0 , r : 0 } ,
51- { q : 2 , r : 0 } , { q : - 2 , r : 0 } ,
52- { q : 1 , r : 1 } , { q : - 1 , r : - 1 } ,
53- { q : 1 , r : - 1 } , { q : - 1 , r : 1 } ,
79+ { q : 2 , r : 0 } ,
80+ { q : - 2 , r : 0 } ,
81+ { q : 1 , r : 1 } ,
82+ { q : - 1 , r : - 1 } ,
83+ { q : 1 , r : - 1 } ,
84+ { q : - 1 , r : 1 } ,
5485 ] ,
5586} ;
5687
@@ -84,7 +115,11 @@ export class GameOfLifeGrid {
84115 private drawMode : boolean = true ; // true = draw alive, false = erase
85116 private selectedPattern : PatternName = "glider" ;
86117
87- constructor ( map : OLMap , config : GameOfLifeGridConfig , gameLogic : GameOfLifeLogic ) {
118+ constructor (
119+ map : OLMap ,
120+ config : GameOfLifeGridConfig ,
121+ gameLogic : GameOfLifeLogic ,
122+ ) {
88123 this . map = map ;
89124 this . config = config ;
90125 this . gameLogic = gameLogic ;
0 commit comments