class_name ExpansionSquarePattern extends ExpansionBase const EXPANSION_STAGES: int = 3 var expansion_stage: int = 0 var expansion_tiles: Array[Vector2i] = [] func expand_next_tile() -> Vector2i: if expansion_tiles.is_empty(): if expansion_stage < EXPANSION_STAGES: expansion_stage += 1 for x in range(-expansion_stage, expansion_stage + 1): for y in range(-expansion_stage, expansion_stage + 1): if abs(x) == expansion_stage or abs(y) == expansion_stage: expansion_tiles.append(Vector2i(x, y)) if expansion_stage == EXPANSION_STAGES and expansion_tiles.size() == 1: expansion_finished.emit() return expansion_tiles.pop_at(randi_range(0, expansion_tiles.size() - 1))