diff options
author | tpart <tpart120@proton.me> | 2024-09-18 18:10:21 +0200 |
---|---|---|
committer | tpart <tpart120@proton.me> | 2024-09-18 18:10:21 +0200 |
commit | 8461de5a604d7fede00855632c55b5ec59779d0f (patch) | |
tree | 677f58636560c3f58f742f9fd877b8c536f759ed | |
parent | a182706feb0f4112063f73a3cca8ef133cd2aa66 (diff) | |
download | hurrycurry-8461de5a604d7fede00855632c55b5ec59779d0f.tar hurrycurry-8461de5a604d7fede00855632c55b5ec59779d0f.tar.bz2 hurrycurry-8461de5a604d7fede00855632c55b5ec59779d0f.tar.zst |
Implement new server message packet; Remove old server error packet; Bump protocol version to 7.0
-rw-r--r-- | client/game.gd | 19 | ||||
-rw-r--r-- | client/multiplayer.gd | 12 |
2 files changed, 21 insertions, 10 deletions
diff --git a/client/game.gd b/client/game.gd index ef7a4575..87613003 100644 --- a/client/game.gd +++ b/client/game.gd @@ -255,9 +255,15 @@ func _ready(): ) mp.server_message.connect( - func(text): - print("== ", text) - popup_message.display_server_msg(text) + func(message: Dictionary, error: bool): + var message_str := get_message_str(message) + + if error: + # TODO: Custom popup message style for errors + popup_message.display_server_msg(message_str) + push_error("Server error: %s" % message_str) + else: + popup_message.display_server_msg(message_str) ) mp.score.connect(overlay.update) @@ -289,6 +295,13 @@ func _process(delta): if is_replay and mp != null: mp.send_replay_tick(delta) +func get_message_str(m: Dictionary) -> String: + if "text" in m: return m.text + if "translation" in m: return tr(m.translation.id) % m.translation.params.map(get_message_str) + if "tile" in m: return tile_names[m.tile] + if "item" in m: return item_names[m.item] + return "[unknown message type]" + func get_tile_collision(pos: Vector2i) -> bool: var t = map.get_tile_name(pos) if t == null: return true diff --git a/client/multiplayer.gd b/client/multiplayer.gd index 1a261b99..64b23b5f 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -52,13 +52,13 @@ signal set_player_finished(player: int, warn: bool) signal set_ingame(state: bool, lobby: bool) signal score(demands_failed: int, demands_completed: int, points: int, time_remaining: float) signal environment(params: Dictionary) -signal server_message(text: String) +signal server_message(message: Dictionary, error: bool) signal replay_start() signal connection_closed(reason: String) signal show_rating(stars: int, points: int) signal show_book() -const VERSION_MAJOR: int = 6 +const VERSION_MAJOR: int = 7 const VERSION_MINOR: int = 0 var connected := false @@ -217,9 +217,6 @@ func handle_packet(bytes: PackedByteArray): var state = decoded["state"] var lobby = decoded["lobby"] set_ingame.emit(state, lobby) - "error": - var message = decoded["message"] - push_warning("server error: %s" % message) "score": var demands_failed: int = decoded["demands_failed"] var demands_completed: int = decoded["demands_completed"] @@ -238,8 +235,9 @@ func handle_packet(bytes: PackedByteArray): var points = d["points"] show_rating.emit(stars, points) "server_message": - var text = decoded["text"] - server_message.emit(text) + var message: Dictionary = decoded["message"] + var error: bool = decoded["error"] + server_message.emit(message, error) "environment": environment.emit(decoded["effects"]) "replay_start": replay_start.emit() |