diff options
author | tpart <tpart120@proton.me> | 2024-07-13 16:31:09 +0200 |
---|---|---|
committer | tpart <tpart120@proton.me> | 2024-07-13 16:31:09 +0200 |
commit | b543806c034150b637ac3baf6c434c634ecca4c1 (patch) | |
tree | 728caca9d81e9fbac1b494b4f4061b2bfa525e5b /client/multiplayer.gd | |
parent | 54b37f35dd2a7fbbd639293d850abc97df2d4054 (diff) | |
download | hurrycurry-b543806c034150b637ac3baf6c434c634ecca4c1.tar hurrycurry-b543806c034150b637ac3baf6c434c634ecca4c1.tar.bz2 hurrycurry-b543806c034150b637ac3baf6c434c634ecca4c1.tar.zst |
Add protocol version check in client
Diffstat (limited to 'client/multiplayer.gd')
-rw-r--r-- | client/multiplayer.gd | 13 |
1 files changed, 11 insertions, 2 deletions
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"] |