diff --git a/Game.gd b/Game.gd index 8d6691a..d79755c 100644 --- a/Game.gd +++ b/Game.gd @@ -11,8 +11,26 @@ func _ready(): GameEvents.insect_tile_finished_moving.connect(_on_insect_tile_finished_moving) GameEvents.insect_tile_created.connect(_on_insect_tile_created) + # since we sealed in webrtc, + # and limited players to 1 in enet + # this should only happen when the opponent disconnects + # as opposed to someone (3rd) connecting DURING the game + # and disconnecting again + multiplayer.peer_disconnected.connect(_on_peer_disconnected) + multiplayer.server_disconnected.connect(_on_server_disconnected) + GameEvents.game_started.emit() +func _on_peer_disconnected(id: int) -> void: + GameData.disconnect_reason = "Connection to other peer closed unexpectedly" + Networking.disconnect_all() + get_tree().change_scene_to_file("res://UI/main_menu.tscn") + +func _on_server_disconnected() -> void: + GameData.disconnect_reason = "Connection to other peer closed unexpectedly" + Networking.disconnect_all() + get_tree().change_scene_to_file("res://UI/main_menu.tscn") + func advance_turn(): GameEvents.turn_ended.emit(current_turn, map) is_blacks_turn = !is_blacks_turn diff --git a/Networking/Networking.gd b/Networking/Networking.gd index 8af4ae5..1e71391 100644 --- a/Networking/Networking.gd +++ b/Networking/Networking.gd @@ -28,6 +28,9 @@ func stop_webrtc() -> void: ws_client.stop() offline_mode() +func seal_webrtc() -> void: + ws_client.seal_lobby() + func start_webrtc_lobby() -> void: if not multiplayer.multiplayer_peer is WebRTCMultiplayerPeer: disconnect_all() diff --git a/UI/Lobby/WebRTCLobby.gd b/UI/Lobby/WebRTCLobby.gd index 001d072..65b809d 100644 --- a/UI/Lobby/WebRTCLobby.gd +++ b/UI/Lobby/WebRTCLobby.gd @@ -34,4 +34,5 @@ func load_game() -> void: get_tree().change_scene_to_file("res://Game.tscn") func _on_start_game_button_pressed(): + Networking.seal_webrtc() load_game.rpc()