diff options
Diffstat (limited to 'client/multiplayer.gd')
| -rw-r--r-- | client/multiplayer.gd | 20 | 
1 files changed, 9 insertions, 11 deletions
diff --git a/client/multiplayer.gd b/client/multiplayer.gd index 2d4b9533..b9242a41 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -2,19 +2,19 @@  # Copyright 2024 nokoe  # Copyright 2024 metamuffin  # Copyright 2024 tpart -#  +#  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as published by  # the Free Software Foundation, version 3 of the License only. -#  +#  # This program is distributed in the hope that it will be useful,  # but WITHOUT ANY WARRANTY; without even the implied warranty of  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  # GNU Affero General Public License for more details. -#  +#  # You should have received a copy of the GNU Affero General Public License  # along with this program.  If not, see <https://www.gnu.org/licenses/>. -#  +#  class_name Multiplayer  extends Node @@ -35,6 +35,8 @@ signal remove_player_item(player: int)  signal set_progress(tile: Vector2i, progress: float, warn: bool)  signal set_finished(tile: Vector2i, warn: bool) +signal connection_closed(reason: String) +  var connected := false  var socket := WebSocketPeer.new() @@ -51,6 +53,7 @@ func _ready():  	print("Multiplayer connect");  	socket.connect_to_url(Global.server_url)  	connected = true +  func _notification(what):  	if what == NOTIFICATION_PREDELETE:  		print("Multiplayer disconnect"); @@ -64,16 +67,11 @@ func _process(_delta):  		if state == WebSocketPeer.STATE_OPEN:  			while socket.get_available_packet_count():  				handle_packet(socket.get_packet()) -		elif state == WebSocketPeer.STATE_CONNECTING: -			print("connecting") -		elif state == WebSocketPeer.STATE_CLOSING: -			# Keep polling to achieve proper close. -			print("closing") -			pass  		elif state == WebSocketPeer.STATE_CLOSED:  			var code = socket.get_close_code()  			var reason = socket.get_close_reason() -			print("WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != - 1]) +			emit_signal("connection_closed", "WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1]) +			self.queue_free()  func handle_packet(bytes: PackedByteArray):  	var decoded = decode_packet(bytes)  |