From 54e22c5614ffe3a8a4a74fd3555edccf0c49ab23 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 1 Oct 2025 12:32:00 -0400 Subject: Show in-game when connection drops --- apworld/client/effects.gd | 32 ++++++++++++++++++++++++++++++++ apworld/client/main.gd | 5 +++++ apworld/client/manager.gd | 24 ++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 apworld/client/effects.gd diff --git a/apworld/client/effects.gd b/apworld/client/effects.gd new file mode 100644 index 0000000..9dc1dd8 --- /dev/null +++ b/apworld/client/effects.gd @@ -0,0 +1,32 @@ +extends CanvasLayer + +var _label + +var _disconnected = false + + +func _ready(): + _label = Label.new() + _label.name = "Label" + _label.offset_left = 20 + _label.offset_top = 20 + _label.horizontal_alignment = HORIZONTAL_ALIGNMENT_LEFT + _label.vertical_alignment = VERTICAL_ALIGNMENT_TOP + _label.theme = preload("res://assets/themes/baseUI.tres") + _label.add_theme_font_size_override("font_size", 36) + add_child(_label) + + +func set_connection_lost(arg): + _disconnected = arg + + _update_label() + + +func _update_label(): + var text = [] + + if _disconnected: + text.append("Disconnected from multiworld.") + + _label.text = "\n".join(text) diff --git a/apworld/client/main.gd b/apworld/client/main.gd index bbefc02..e1f9610 100644 --- a/apworld/client/main.gd +++ b/apworld/client/main.gd @@ -66,6 +66,11 @@ func _ready(): messages_instance.SCRIPT_rainbowText = runtime.load_script("rainbowText.gd") global.add_child(messages_instance) + var effects_script = runtime.load_script("effects.gd") + var effects_instance = effects_script.new() + effects_instance.name = "Effects" + global.add_child(effects_instance) + var textclient_script = runtime.load_script("textclient.gd") var textclient_instance = textclient_script.new() textclient_instance.name = "Textclient" diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index a5b9db0..9212233 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd @@ -28,6 +28,7 @@ var _item_locks = {} var _inverse_item_locks = {} var _held_letters = {} var _letters_setup = false +var _already_connected = false const kSHUFFLE_LETTERS_VANILLA = 0 const kSHUFFLE_LETTERS_UNLOCKED = 1 @@ -178,6 +179,7 @@ func connectToServer(): _location_scouts = {} _letters_setup = false _held_letters = {} + _already_connected = false client.connectToServer(ap_server, ap_user, ap_pass) @@ -187,6 +189,11 @@ func getSaveFileName(): func disconnect_from_ap(): + _already_connected = false + + var effects = global.get_node("Effects") + effects.set_connection_lost(false) + client.disconnect_from_ap() @@ -353,12 +360,29 @@ func _on_checked_worldports_updated(): func _client_could_not_connect(message): could_not_connect.emit(message) + if global.loaded: + var effects = global.get_node("Effects") + effects.set_connection_lost(true) + + var messages = global.get_node("Messages") + messages.showMessage("Connection to multiworld lost.") + func _client_connect_status(message): connect_status.emit(message) func _client_connected(slot_data): + var effects = global.get_node("Effects") + effects.set_connection_lost(false) + + if _already_connected: + var messages = global.get_node("Messages") + messages.showMessage("Reconnected to multiworld!") + return + + _already_connected = true + var gamedata = global.get_node("Gamedata") _localdata_file = "user://archipelago_data/%s_%d" % [client._seed, client._slot] -- cgit 1.4.1