extends Node #Master list of chunks var _chunks: Array[Chunk] = [] #Create some test samples - these samples must ALWAYS be 9-elements long, 5th element is the result var _samples: Array[PackedInt32Array] = [ [1,1,1, 1,1,1, 1,1,1], ] @onready var wfc: Node = get_node("../Generator") func _ready() -> void: var ruleset: PackedInt32Array = read_sample_ruleset("sample1.png") var samples: Array[PackedInt32Array] = parse_samples_from_ruleset(ruleset) #print(ruleset) #print(samples) wfc.generate_chunk_at(0,0,_chunks,samples) ## Read the png file, and parse it to a useable ruleset func read_sample_ruleset(filename: String) -> PackedInt32Array: var img: Image = Image.load_from_file(filename) var png: PackedByteArray = img.get_data() var hex: PackedInt32Array = [] @warning_ignore("integer_division") var size: int = (png.size() / 3) hex.resize(size) print(png) for i in range(size): #the file is assumed to be in RGB format hex[i] = (png[i * 3] << 16) | (png[i * 3 + 1] << 8) | (png[i * 3 + 2] << 0) print(i, "(", hex[i], "): ", png[i * 3], ",", png[i * 3 + 1], ",", png[i * 3 + 2]) return hex func parse_samples_from_ruleset(ruleset: PackedInt32Array) -> Array[PackedInt32Array]: #for now, assume the ruleset is 8x8 const RULESET_WIDTH: int = 8 const RULESET_HEIGHT: int = 8 var samples: Array[PackedInt32Array] = [] for x in range(1, RULESET_WIDTH-1): for y in range(1, RULESET_HEIGHT-1): var sample: PackedInt32Array = [ ruleset[(y -1) * RULESET_WIDTH + (x -1)], ruleset[(y -1) * RULESET_WIDTH + (x )], ruleset[(y -1) * RULESET_WIDTH + (x +1)], ruleset[(y ) * RULESET_WIDTH + (x -1)], ruleset[(y ) * RULESET_WIDTH + (x )], ruleset[(y ) * RULESET_WIDTH + (x +1)], ruleset[(y +1) * RULESET_WIDTH + (x -1)], ruleset[(y +1) * RULESET_WIDTH + (x )], ruleset[(y +1) * RULESET_WIDTH + (x +1)], ] samples.append(sample) return samples