From b543806c034150b637ac3baf6c434c634ecca4c1 Mon Sep 17 00:00:00 2001 From: tpart Date: Sat, 13 Jul 2024 16:31:09 +0200 Subject: Add protocol version check in client --- client/multiplayer.gd | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'client/multiplayer.gd') diff --git a/client/multiplayer.gd b/client/multiplayer.gd index 4c334700..d2739250 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -52,9 +52,11 @@ signal score(demands_failed: int, demands_completed: int, points: int, time_rema signal hide_score() signal server_message(text: String) signal replay_start() - signal connection_closed(reason: String) +const VERSION_MAJOR: int = 1 +const VERSION_MINOR: int = 1 + var connected := false var socket := WebSocketPeer.new() @@ -81,7 +83,7 @@ func _process(_delta): var code = socket.get_close_code() var reason = socket.get_close_reason() connection_closed.emit( - "WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != - 1] + tr("WebSocket closed with code: %d, reason %s. Clean: %s") % [code, reason, code != - 1] ) self.queue_free() @@ -96,6 +98,13 @@ func handle_packet(bytes: PackedByteArray): "init": var player_id = decoded["id"] init.emit(player_id) + "version": + var major = decoded["major"] + var minor = decoded["minor"] + if major != VERSION_MAJOR or minor != VERSION_MINOR: + socket.close() + connected = false + connection_closed.emit(tr("Server and client versions do not match. Server: %d.%d, Client: %d.%d.\nAre you sure the game is up to date?") % [major, minor, VERSION_MAJOR, VERSION_MINOR]) "data": var item_names = decoded["data"]["item_names"] var tile_names = decoded["data"]["tile_names"] -- cgit v1.2.3-70-g09d2 From 78ab4d19c8e1f78a1e5092d643d0634721cea9ae Mon Sep 17 00:00:00 2001 From: tpart Date: Sat, 13 Jul 2024 16:32:00 +0200 Subject: Fix minor protocol version to match 1.1 release --- client/multiplayer.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'client/multiplayer.gd') diff --git a/client/multiplayer.gd b/client/multiplayer.gd index d2739250..d3e80613 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -55,7 +55,7 @@ signal replay_start() signal connection_closed(reason: String) const VERSION_MAJOR: int = 1 -const VERSION_MINOR: int = 1 +const VERSION_MINOR: int = 0 var connected := false var socket := WebSocketPeer.new() -- cgit v1.2.3-70-g09d2