summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/game.gd19
-rw-r--r--client/multiplayer.gd12
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()