summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--client/Archipelago/client.gd4
-rw-r--r--client/Archipelago/manager.gd8
-rw-r--r--client/Archipelago/player.gd23
-rw-r--r--client/Archipelago/settings_screen.gd1
-rw-r--r--client/Archipelago/victoryListener.gd18
5 files changed, 51 insertions, 3 deletions
diff --git a/client/Archipelago/client.gd b/client/Archipelago/client.gd index 7b690f5..f0f36d7 100644 --- a/client/Archipelago/client.gd +++ b/client/Archipelago/client.gd
@@ -37,7 +37,7 @@ var _slot_data = {}
37 37
38signal could_not_connect 38signal could_not_connect
39signal connect_status 39signal connect_status
40signal client_connected 40signal client_connected(slot_data)
41signal item_received(item_id, index, player, flags) 41signal item_received(item_id, index, player, flags)
42signal message_received(message) 42signal message_received(message)
43 43
@@ -183,7 +183,7 @@ func _process(_delta):
183 player["slot"] 183 player["slot"]
184 )]["game"] 184 )]["game"]
185 185
186 emit_signal("client_connected") 186 emit_signal("client_connected", _slot_data)
187 187
188 elif cmd == "ConnectionRefused": 188 elif cmd == "ConnectionRefused":
189 var error_message = "" 189 var error_message = ""
diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd index f83d0cc..97c556a 100644 --- a/client/Archipelago/manager.gd +++ b/client/Archipelago/manager.gd
@@ -5,6 +5,7 @@ const my_version = "0.1.0"
5var SCRIPT_client 5var SCRIPT_client
6var SCRIPT_locationListener 6var SCRIPT_locationListener
7var SCRIPT_uuid 7var SCRIPT_uuid
8var SCRIPT_victoryListener
8 9
9var ap_server = "" 10var ap_server = ""
10var ap_user = "" 11var ap_user = ""
@@ -19,6 +20,8 @@ var _last_new_item = -1
19var _batch_locations = false 20var _batch_locations = false
20var _held_locations = [] 21var _held_locations = []
21 22
23var victory_condition = -1
24
22signal could_not_connect 25signal could_not_connect
23signal connect_status 26signal connect_status
24signal ap_connected 27signal ap_connected
@@ -267,7 +270,7 @@ func _client_connect_status(message):
267 emit_signal("connect_status", message) 270 emit_signal("connect_status", message)
268 271
269 272
270func _client_connected(): 273func _client_connected(slot_data):
271 _localdata_file = "user://archipelago_data/%s_%d" % [client._seed, client._slot] 274 _localdata_file = "user://archipelago_data/%s_%d" % [client._seed, client._slot]
272 _last_new_item = -1 275 _last_new_item = -1
273 276
@@ -285,6 +288,9 @@ func _client_connected():
285 if localdata.size() > 0: 288 if localdata.size() > 0:
286 _last_new_item = localdata[0] 289 _last_new_item = localdata[0]
287 290
291 if slot_data.has("victory_condition"):
292 victory_condition = int(slot_data["victory_condition"])
293
288 emit_signal("ap_connected") 294 emit_signal("ap_connected")
289 295
290 296
diff --git a/client/Archipelago/player.gd b/client/Archipelago/player.gd index b23553c..7a1f5db 100644 --- a/client/Archipelago/player.gd +++ b/client/Archipelago/player.gd
@@ -1,5 +1,21 @@
1extends "res://scripts/nodes/player.gd" 1extends "res://scripts/nodes/player.gd"
2 2
3const kEndingNameByVictoryValue = {
4 0: "GRAY",
5 1: "PURPLE",
6 2: "MINT",
7 3: "BLACK",
8 4: "BLUE",
9 5: "CYAN",
10 6: "RED",
11 7: "PLUM",
12 8: "ORANGE",
13 9: "GOLD",
14 10: "YELLOW",
15 11: "GREEN",
16 12: "WHITE",
17}
18
3 19
4func _ready(): 20func _ready():
5 var khl_script = load("res://scripts/nodes/keyHolderListener.gd") 21 var khl_script = load("res://scripts/nodes/keyHolderListener.gd")
@@ -91,6 +107,13 @@ func _ready():
91 107
92 get_parent().add_child.call_deferred(locationListener) 108 get_parent().add_child.call_deferred(locationListener)
93 109
110 if kEndingNameByVictoryValue.get(ap.victory_condition, null) == ending.get_name():
111 var victoryListener = ap.SCRIPT_victoryListener.new()
112 victoryListener.name = "victoryListener"
113 victoryListener.senders.append(NodePath("/root/scene/" + ending.get_path()))
114
115 get_parent().add_child.call_deferred(victoryListener)
116
94 # Block off roof access in Daedalus. 117 # Block off roof access in Daedalus.
95 if global.map == "daedalus": 118 if global.map == "daedalus":
96 _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49) 119 _set_up_invis_wall(75.5, 11, -24.5, 1, 10, 49)
diff --git a/client/Archipelago/settings_screen.gd b/client/Archipelago/settings_screen.gd index 3697466..624b1eb 100644 --- a/client/Archipelago/settings_screen.gd +++ b/client/Archipelago/settings_screen.gd
@@ -32,6 +32,7 @@ func _ready():
32 ap_instance.SCRIPT_client = load("user://maps/Archipelago/client.gd") 32 ap_instance.SCRIPT_client = load("user://maps/Archipelago/client.gd")
33 ap_instance.SCRIPT_locationListener = load("user://maps/Archipelago/locationListener.gd") 33 ap_instance.SCRIPT_locationListener = load("user://maps/Archipelago/locationListener.gd")
34 ap_instance.SCRIPT_uuid = load("user://maps/Archipelago/vendor/uuid.gd") 34 ap_instance.SCRIPT_uuid = load("user://maps/Archipelago/vendor/uuid.gd")
35 ap_instance.SCRIPT_victoryListener = load("user://maps/Archipelago/victoryListener.gd")
35 36
36 global.add_child(ap_instance) 37 global.add_child(ap_instance)
37 38
diff --git a/client/Archipelago/victoryListener.gd b/client/Archipelago/victoryListener.gd new file mode 100644 index 0000000..4b85d3a --- /dev/null +++ b/client/Archipelago/victoryListener.gd
@@ -0,0 +1,18 @@
1extends Receiver
2
3
4func _ready():
5 super._ready()
6
7
8func handleTriggered():
9 triggered += 1
10 if triggered >= total:
11 var ap = global.get_node("Archipelago")
12 ap.client.completedGoal()
13
14
15func handleUntriggered():
16 triggered -= 1
17 if triggered < total:
18 pass