diff options
-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] |