The tile result doesn't look right
This commit is contained in:
31
client.gd
31
client.gd
@@ -11,16 +11,20 @@ var _chunks: Array[Chunk] = []
|
||||
@onready
|
||||
var wfc: Node = get_node("../Generator")
|
||||
|
||||
@onready
|
||||
var map: TileMapLayer = get_node("../TileMapLayer")
|
||||
|
||||
func _ready() -> void:
|
||||
var ruleset: PackedInt32Array = read_sample_ruleset("sample1.png")
|
||||
var ruleset: PackedInt32Array = read_sample_ruleset("sample2.png")
|
||||
var samples: Array[PackedInt32Array] = parse_samples_from_ruleset(ruleset)
|
||||
var c = wfc.generate_chunk_at(0,0,_chunks,samples)
|
||||
var c: Chunk = wfc.generate_chunk_at(0,0,_chunks,samples)
|
||||
#TODO: build a visual layout for the results
|
||||
#TODO: handle the chunk-edges
|
||||
|
||||
#print(ruleset)
|
||||
#print(samples)
|
||||
print(c.data)
|
||||
draw_map_data(c)
|
||||
|
||||
## Read the png file, and parse it to a useable ruleset
|
||||
func read_sample_ruleset(filename: String) -> PackedInt32Array:
|
||||
@@ -43,7 +47,8 @@ func parse_samples_from_ruleset(ruleset: PackedInt32Array) -> Array[PackedInt32A
|
||||
const RULESET_WIDTH: int = 8
|
||||
const RULESET_HEIGHT: int = 8
|
||||
|
||||
var samples: Array[PackedInt32Array] = []
|
||||
#using a custom container type
|
||||
var samples: Set = Set.new()
|
||||
|
||||
for x in range(1, RULESET_WIDTH-1):
|
||||
for y in range(1, RULESET_HEIGHT-1):
|
||||
@@ -61,6 +66,22 @@ func parse_samples_from_ruleset(ruleset: PackedInt32Array) -> Array[PackedInt32A
|
||||
ruleset[(y +1) * RULESET_WIDTH + (x +1)],
|
||||
]
|
||||
|
||||
samples.append(sample)
|
||||
samples.add(sample)
|
||||
|
||||
return samples
|
||||
var result: Array[PackedInt32Array] = []
|
||||
result.assign(samples.elements())
|
||||
return result
|
||||
|
||||
func draw_map_data(chunk: Chunk) -> void:
|
||||
#hacky
|
||||
var fix = func(x) -> int:
|
||||
match x:
|
||||
0x000000: return 0
|
||||
0xFF0000: return 1
|
||||
0x00FF00: return 2
|
||||
0x0000FF: return 3
|
||||
_: return -1
|
||||
|
||||
for x in range(Chunk.CHUNK_WIDTH):
|
||||
for y in range(Chunk.CHUNK_HEIGHT):
|
||||
map.set_cell(Vector2i(x, y), fix.call(chunk.data[y * Chunk.CHUNK_WIDTH + x]), Vector2i.ZERO)
|
||||
|
||||
Reference in New Issue
Block a user