diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-10-01 12:32:00 -0400 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-10-01 12:32:00 -0400 |
| commit | 54e22c5614ffe3a8a4a74fd3555edccf0c49ab23 (patch) | |
| tree | b7e59f69705504978672054820fc59c9c75307ad /apworld/client | |
| parent | c7c64dcc56432e85e92a7c619a260bd01bf56e56 (diff) | |
| download | lingo2-archipelago-54e22c5614ffe3a8a4a74fd3555edccf0c49ab23.tar.gz lingo2-archipelago-54e22c5614ffe3a8a4a74fd3555edccf0c49ab23.tar.bz2 lingo2-archipelago-54e22c5614ffe3a8a4a74fd3555edccf0c49ab23.zip | |
Show in-game when connection drops
Diffstat (limited to 'apworld/client')
| -rw-r--r-- | apworld/client/effects.gd | 32 | ||||
| -rw-r--r-- | apworld/client/main.gd | 5 | ||||
| -rw-r--r-- | apworld/client/manager.gd | 24 |
3 files changed, 61 insertions, 0 deletions
| 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 @@ | |||
| 1 | extends CanvasLayer | ||
| 2 | |||
| 3 | var _label | ||
| 4 | |||
| 5 | var _disconnected = false | ||
| 6 | |||
| 7 | |||
| 8 | func _ready(): | ||
| 9 | _label = Label.new() | ||
| 10 | _label.name = "Label" | ||
| 11 | _label.offset_left = 20 | ||
| 12 | _label.offset_top = 20 | ||
| 13 | _label.horizontal_alignment = HORIZONTAL_ALIGNMENT_LEFT | ||
| 14 | _label.vertical_alignment = VERTICAL_ALIGNMENT_TOP | ||
| 15 | _label.theme = preload("res://assets/themes/baseUI.tres") | ||
| 16 | _label.add_theme_font_size_override("font_size", 36) | ||
| 17 | add_child(_label) | ||
| 18 | |||
| 19 | |||
| 20 | func set_connection_lost(arg): | ||
| 21 | _disconnected = arg | ||
| 22 | |||
| 23 | _update_label() | ||
| 24 | |||
| 25 | |||
| 26 | func _update_label(): | ||
| 27 | var text = [] | ||
| 28 | |||
| 29 | if _disconnected: | ||
| 30 | text.append("Disconnected from multiworld.") | ||
| 31 | |||
| 32 | _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(): | |||
| 66 | messages_instance.SCRIPT_rainbowText = runtime.load_script("rainbowText.gd") | 66 | messages_instance.SCRIPT_rainbowText = runtime.load_script("rainbowText.gd") |
| 67 | global.add_child(messages_instance) | 67 | global.add_child(messages_instance) |
| 68 | 68 | ||
| 69 | var effects_script = runtime.load_script("effects.gd") | ||
| 70 | var effects_instance = effects_script.new() | ||
| 71 | effects_instance.name = "Effects" | ||
| 72 | global.add_child(effects_instance) | ||
| 73 | |||
| 69 | var textclient_script = runtime.load_script("textclient.gd") | 74 | var textclient_script = runtime.load_script("textclient.gd") |
| 70 | var textclient_instance = textclient_script.new() | 75 | var textclient_instance = textclient_script.new() |
| 71 | textclient_instance.name = "Textclient" | 76 | 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 = {} | |||
| 28 | var _inverse_item_locks = {} | 28 | var _inverse_item_locks = {} |
| 29 | var _held_letters = {} | 29 | var _held_letters = {} |
| 30 | var _letters_setup = false | 30 | var _letters_setup = false |
| 31 | var _already_connected = false | ||
| 31 | 32 | ||
| 32 | const kSHUFFLE_LETTERS_VANILLA = 0 | 33 | const kSHUFFLE_LETTERS_VANILLA = 0 |
| 33 | const kSHUFFLE_LETTERS_UNLOCKED = 1 | 34 | const kSHUFFLE_LETTERS_UNLOCKED = 1 |
| @@ -178,6 +179,7 @@ func connectToServer(): | |||
| 178 | _location_scouts = {} | 179 | _location_scouts = {} |
| 179 | _letters_setup = false | 180 | _letters_setup = false |
| 180 | _held_letters = {} | 181 | _held_letters = {} |
| 182 | _already_connected = false | ||
| 181 | 183 | ||
| 182 | client.connectToServer(ap_server, ap_user, ap_pass) | 184 | client.connectToServer(ap_server, ap_user, ap_pass) |
| 183 | 185 | ||
| @@ -187,6 +189,11 @@ func getSaveFileName(): | |||
| 187 | 189 | ||
| 188 | 190 | ||
| 189 | func disconnect_from_ap(): | 191 | func disconnect_from_ap(): |
| 192 | _already_connected = false | ||
| 193 | |||
| 194 | var effects = global.get_node("Effects") | ||
| 195 | effects.set_connection_lost(false) | ||
| 196 | |||
| 190 | client.disconnect_from_ap() | 197 | client.disconnect_from_ap() |
| 191 | 198 | ||
| 192 | 199 | ||
| @@ -353,12 +360,29 @@ func _on_checked_worldports_updated(): | |||
| 353 | func _client_could_not_connect(message): | 360 | func _client_could_not_connect(message): |
| 354 | could_not_connect.emit(message) | 361 | could_not_connect.emit(message) |
| 355 | 362 | ||
| 363 | if global.loaded: | ||
| 364 | var effects = global.get_node("Effects") | ||
| 365 | effects.set_connection_lost(true) | ||
| 366 | |||
| 367 | var messages = global.get_node("Messages") | ||
| 368 | messages.showMessage("Connection to multiworld lost.") | ||
| 369 | |||
| 356 | 370 | ||
| 357 | func _client_connect_status(message): | 371 | func _client_connect_status(message): |
| 358 | connect_status.emit(message) | 372 | connect_status.emit(message) |
| 359 | 373 | ||
| 360 | 374 | ||
| 361 | func _client_connected(slot_data): | 375 | func _client_connected(slot_data): |
| 376 | var effects = global.get_node("Effects") | ||
| 377 | effects.set_connection_lost(false) | ||
| 378 | |||
| 379 | if _already_connected: | ||
| 380 | var messages = global.get_node("Messages") | ||
| 381 | messages.showMessage("Reconnected to multiworld!") | ||
| 382 | return | ||
| 383 | |||
| 384 | _already_connected = true | ||
| 385 | |||
| 362 | var gamedata = global.get_node("Gamedata") | 386 | var gamedata = global.get_node("Gamedata") |
| 363 | 387 | ||
| 364 | _localdata_file = "user://archipelago_data/%s_%d" % [client._seed, client._slot] | 388 | _localdata_file = "user://archipelago_data/%s_%d" % [client._seed, client._slot] |
