about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--apworld/client/effects.gd32
-rw-r--r--apworld/client/main.gd5
-rw-r--r--apworld/client/manager.gd24
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 @@
1extends CanvasLayer
2
3var _label
4
5var _disconnected = false
6
7
8func _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
20func set_connection_lost(arg):
21 _disconnected = arg
22
23 _update_label()
24
25
26func _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 = {}
28var _inverse_item_locks = {} 28var _inverse_item_locks = {}
29var _held_letters = {} 29var _held_letters = {}
30var _letters_setup = false 30var _letters_setup = false
31var _already_connected = false
31 32
32const kSHUFFLE_LETTERS_VANILLA = 0 33const kSHUFFLE_LETTERS_VANILLA = 0
33const kSHUFFLE_LETTERS_UNLOCKED = 1 34const 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
189func disconnect_from_ap(): 191func 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():
353func _client_could_not_connect(message): 360func _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
357func _client_connect_status(message): 371func _client_connect_status(message):
358 connect_status.emit(message) 372 connect_status.emit(message)
359 373
360 374
361func _client_connected(slot_data): 375func _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]