not correct, but doing something.
This commit is contained in:
50
grid.gd
50
grid.gd
@@ -6,6 +6,7 @@ extends Node2D
|
|||||||
@export var offset: float = 55.0
|
@export var offset: float = 55.0
|
||||||
|
|
||||||
var grid: Array[Array]
|
var grid: Array[Array]
|
||||||
|
var groups: Array
|
||||||
|
|
||||||
var token = preload("res://token.tscn")
|
var token = preload("res://token.tscn")
|
||||||
|
|
||||||
@@ -23,21 +24,44 @@ func _ready():
|
|||||||
func populate_grid():
|
func populate_grid():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
func to_grid_coord(idx):
|
||||||
|
pass
|
||||||
|
|
||||||
|
func to_index(idx):
|
||||||
|
pass
|
||||||
|
|
||||||
func calculate_token_groups():
|
func calculate_token_groups():
|
||||||
|
groups = []
|
||||||
|
var visited_nodes = []
|
||||||
|
var group_queue = []
|
||||||
for row in rows:
|
for row in rows:
|
||||||
for col in cols:
|
for col in cols:
|
||||||
var current_token = grid[row][col]
|
if [row, col] in visited_nodes:
|
||||||
var adjacent_token_coords = [
|
continue
|
||||||
[row - 1, col],
|
|
||||||
[row, col + 1],
|
group_queue.append([row,col])
|
||||||
[row + 1, col],
|
|
||||||
[row, col - 1]
|
|
||||||
]
|
|
||||||
|
|
||||||
var valid_coords = adjacent_token_coords.filter(
|
var new_group = []
|
||||||
func(coord_pair): return coord_pair[0] >= 0 and coord_pair[0] < rows and coord_pair[1] >= 0 and coord_pair[1] < cols
|
while not group_queue.is_empty():
|
||||||
)
|
var current_coord = group_queue.pop_back()
|
||||||
|
var current_token = grid[current_coord[0]][current_coord[1]]
|
||||||
|
new_group.append(current_coord)
|
||||||
|
visited_nodes.append(current_coord)
|
||||||
|
|
||||||
for coord in valid_coords:
|
var adjacent_token_coords = [
|
||||||
if grid[coord[0]][coord[1]].type == current_token.type:
|
[row - 1, col],
|
||||||
print(coord)
|
[row, col + 1],
|
||||||
|
[row + 1, col],
|
||||||
|
[row, col - 1]
|
||||||
|
]
|
||||||
|
|
||||||
|
var valid_coords = adjacent_token_coords.filter(
|
||||||
|
func(coord_pair): return coord_pair[0] >= 0 and coord_pair[0] < rows and coord_pair[1] >= 0 and coord_pair[1] < cols
|
||||||
|
)
|
||||||
|
|
||||||
|
for coord in valid_coords:
|
||||||
|
if coord not in visited_nodes and grid[coord[0]][coord[1]].type == current_token.type:
|
||||||
|
group_queue.append(coord)
|
||||||
|
groups.append(new_group)
|
||||||
|
|
||||||
|
print(groups)
|
||||||
|
|||||||
Reference in New Issue
Block a user