Address review feedback: Implement chunk streaming system in GDScript #20

Merged
reviewer-bot merged 21 commits from agent/bd718b31b595 into main 2026-08-18 14:41:08 +00:00
Showing only changes of commit 929c69e5da - Show all commits
+11 -32
View File
@@ -107,27 +107,6 @@ class TileLayerData:
return null
## A single tile definition (palette entry).
class TileDef:
var id: int = 0
var asset_id: String = ""
var solid: bool = false
var flags: int = 0
var variants: int = 1
func is_solid() -> bool:
return solid
func is_walkable() -> bool:
return (flags & 0x01) != 0
func is_climbable() -> bool:
return (flags & 0x02) != 0
func is_liquid() -> bool:
return (flags & 0x04) != 0
## A world object parsed from chunk data.
class WorldObjectData:
var id: String = ""
@@ -159,9 +138,9 @@ class ChunkPayload:
var checksum: String = ""
# ─── Binary Decoding ────────────────────────────────────────────────────────
# ───────────────── Binary Decoding ─────────────────
const MAGIC: PackedByteArray = PackedByteArray([0x41, 0x47, 0x50, 0x43]) # "AGPC"
static var MAGIC := PackedByteArray([0x41, 0x47, 0x50, 0x43]) # "AGPC"
const HEADER_SIZE: int = 48
const SECTION_META: int = 0x01
const SECTION_TILE: int = 0x02
@@ -274,7 +253,7 @@ static func encode_binary(payload: ChunkPayload) -> PackedByteArray:
return header + payload_bytes
# ─── Section Parsers ────────────────────────────────────────────────────────
# ───────────────── Section Parsers ─────────────────
static func _parse_metadata_section(data: PackedByteArray, result: ChunkPayload) -> void:
var offset := 0
@@ -496,7 +475,7 @@ static func _parse_revision_meta_section(data: PackedByteArray, result: ChunkPay
result.author = data.slice(offset, offset + author_len).get_string_from_utf8()
# ─── Section Builders ───────────────────────────────────────────────────────
# ───────────────── Section Builders ─────────────────
static func _build_metadata_section(payload: ChunkPayload) -> PackedByteArray:
var data := PackedByteArray()
@@ -607,7 +586,7 @@ static func _wrap_section(data: PackedByteArray, section_id: int) -> PackedByteA
return wrapped
# ─── Binary Helpers ─────────────────────────────────────────────────────────
# ───────────────── Binary Helpers ─────────────────
static func _read_uint16(data: PackedByteArray, offset: int) -> int:
return data[offset] | (data[offset + 1] << 8)
@@ -668,18 +647,18 @@ static func _write_string(s: String) -> PackedByteArray:
static func _hex_to_bytes(hex_str: String) -> PackedByteArray:
var result := PackedByteArray()
for i in range(0, hex_str.length(), 2):
var byte_val := int("0x" + hex_str.substr(i, 2), 16)
var byte_val := ("0x" + hex_str.substr(i, 2)).hex_to_int()
result.append(byte_val)
return result
# ─── SHA-256 ────────────────────────────────────────────────────────────────
# ───────────────── SHA-256 ─────────────────
static func _sha256_hex(data: PackedByteArray) -> String:
var sha256 := SHA256Hash.new()
sha256.start()
sha256.update(data)
var hash := sha256.finish()
var ctx := HashingContext.new()
ctx.start(HashingContext.HASH_SHA256)
ctx.update(data)
var hash := ctx.finish()
var hex_chars := "0123456789abcdef"
var result := ""
for byte_val in hash: