extends Reference class_name GameState # var parent: GameState # possibly reference the previous state and only store changed cells # cell state info var cellOwners: Array # line state info var lineOwners: Array func init_arrays(size: Vector2): var cells: int = int(size.x * size.y) # A grid graph G_(m,n) has mn nodes and (m-1)n+(n-1)m=2mn-m-n edges var lines: int = int((2 * size.x * size.y) - size.x - size.y) for _cell in range(cells): cellOwners.append(0) for _line in range(lines): lineOwners.append(0) func clone() -> GameState: var ret = .new() ret.cellOwners = cellOwners.duplicate() ret.lineOwners = lineOwners.duplicate() return ret; func get_cell_count(): return cellOwners.size() func get_line_count(): return lineOwners.size()