fix(client): parse-order fixes for Protocol autoload and MetaScreen extends

Protocol.gd is an autoload — replace Messagepack class_name refs with
inline load() calls via a static helper. main_menu.gd extends MetaScreen
by class_name which fails at parse time; switch to path-based extends.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-03 09:27:22 +02:00
co-authored by Claude Sonnet 4.6
parent 702fed5922
commit 698c5eea9b
2 changed files with 12 additions and 9 deletions
+11 -8
View File
@@ -9,6 +9,9 @@ extends Node
## Unit enum variants (no data) → bare strings ("MoveNorth", "Npc")
## Data enum variants → single-element maps ({"UsePerceptionMode": "thermal"})
static func _mp():
return load("res://addons/messagepack/messagepack.gd")
# -- Decode: bytes from server → GDScript types --------------------------------
@@ -17,7 +20,7 @@ extends Node
## v2 fields (version, game_time, player_facing, visible_tiles) default to null/empty
## when decoding v1 snapshots for backward compatibility.
static func decode_snapshot(bytes: PackedByteArray) -> Variant:
var result = Messagepack.decode(bytes)
var result = _mp().decode(bytes)
if result.status != null:
push_error("Protocol: msgpack decode failed: %s" % result.status)
return null
@@ -625,7 +628,7 @@ static func encode_startup_message(
}
if character_visual != null and character_visual.has_method("to_dict"):
msg["character_visual_descriptor"] = character_visual.to_dict()
var result = Messagepack.encode(msg)
var result = _mp().encode(msg)
if result.status != null:
push_error("Protocol: startup message encode failed: %s" % result.status)
return PackedByteArray()
@@ -646,7 +649,7 @@ static func encode_player_input(
"action": action_value,
}
var result = Messagepack.encode(input)
var result = _mp().encode(input)
if result.status != null:
push_error("Protocol: msgpack encode failed: %s" % result.status)
return PackedByteArray()
@@ -672,7 +675,7 @@ static func encode_player_inputs(inputs: Array) -> PackedByteArray:
)
)
var result = Messagepack.encode(wire_inputs)
var result = _mp().encode(wire_inputs)
if result.status != null:
push_error("Protocol: msgpack encode failed: %s" % result.status)
return PackedByteArray()
@@ -705,7 +708,7 @@ static func encode_change_settings(enabled: bool) -> PackedByteArray:
"action_data": {"ai_enhanced_dialogue": enabled},
}
]
var result = Messagepack.encode(entries)
var result = _mp().encode(entries)
if result.status != null:
push_error("Protocol: encode_change_settings failed: %s" % result.status)
return PackedByteArray()
@@ -716,7 +719,7 @@ static func encode_change_settings(enabled: bool) -> PackedByteArray:
## Unit variant — no payload. Server responds with bookmark_catalog in the next snapshot.
static func encode_request_bookmark_catalog() -> PackedByteArray:
var entries: Array = [{"tick": 0, "action_name": "RequestBookmarkCatalog", "action_data": null}]
var result = Messagepack.encode(entries)
var result = _mp().encode(entries)
if result.status != null:
push_error("Protocol: encode_request_bookmark_catalog failed: %s" % result.status)
return PackedByteArray()
@@ -733,7 +736,7 @@ static func encode_confirm_bookmark(bookmark_id: String, starting_location_id: S
"action_data": {"bookmark_id": bookmark_id, "starting_location_id": starting_location_id},
}
]
var result = Messagepack.encode(entries)
var result = _mp().encode(entries)
if result.status != null:
push_error("Protocol: encode_confirm_bookmark failed: %s" % result.status)
return PackedByteArray()
@@ -743,7 +746,7 @@ static func encode_confirm_bookmark(bookmark_id: String, starting_location_id: S
## Decode a PlayerInput from MessagePack bytes (used in tests / echo scenarios).
## Returns { "tick": int, "action": { "variant": String, "data": Variant } } or null.
static func decode_player_input(bytes: PackedByteArray) -> Variant:
var result = Messagepack.decode(bytes)
var result = _mp().decode(bytes)
if result.status != null:
push_error("Protocol: msgpack decode failed: %s" % result.status)
return null
@@ -1,4 +1,4 @@
extends MetaScreen
extends "res://ui/meta/meta_screen.gd"
## #258: Main menu — New Game / Continue / Load Game / Quit.
## New Game: opens character creation screen, then starts game.
## Continue: loads most recent save directory.