diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-01 10:22:03 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-01 10:22:03 -0400 |
commit | 7ee253c666bb224c6f7e943b3bff28d2d6d61319 (patch) | |
tree | 9ca8cf02aa8471ebaee6934ae71aef5a1a480e4d /client/Archipelago | |
parent | a54edd2c0a2fc3ca851e14be96068909a56a42df (diff) | |
download | lingo2-archipelago-7ee253c666bb224c6f7e943b3bff28d2d6d61319.tar.gz lingo2-archipelago-7ee253c666bb224c6f7e943b3bff28d2d6d61319.tar.bz2 lingo2-archipelago-7ee253c666bb224c6f7e943b3bff28d2d6d61319.zip |
[Client] Handle triggering goal
Diffstat (limited to 'client/Archipelago')
-rw-r--r-- | client/Archipelago/client.gd | 4 | ||||
-rw-r--r-- | client/Archipelago/manager.gd | 8 | ||||
-rw-r--r-- | client/Archipelago/player.gd | 23 | ||||
-rw-r--r-- | client/Archipelago/settings_screen.gd | 1 | ||||
-rw-r--r-- | client/Archipelago/victoryListener.gd | 18 |
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 | ||
38 | signal could_not_connect | 38 | signal could_not_connect |
39 | signal connect_status | 39 | signal connect_status |
40 | signal client_connected | 40 | signal client_connected(slot_data) |
41 | signal item_received(item_id, index, player, flags) | 41 | signal item_received(item_id, index, player, flags) |
42 | signal message_received(message) | 42 | signal 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" | |||
5 | var SCRIPT_client | 5 | var SCRIPT_client |
6 | var SCRIPT_locationListener | 6 | var SCRIPT_locationListener |
7 | var SCRIPT_uuid | 7 | var SCRIPT_uuid |
8 | var SCRIPT_victoryListener | ||
8 | 9 | ||
9 | var ap_server = "" | 10 | var ap_server = "" |
10 | var ap_user = "" | 11 | var ap_user = "" |
@@ -19,6 +20,8 @@ var _last_new_item = -1 | |||
19 | var _batch_locations = false | 20 | var _batch_locations = false |
20 | var _held_locations = [] | 21 | var _held_locations = [] |
21 | 22 | ||
23 | var victory_condition = -1 | ||
24 | |||
22 | signal could_not_connect | 25 | signal could_not_connect |
23 | signal connect_status | 26 | signal connect_status |
24 | signal ap_connected | 27 | signal 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 | ||
270 | func _client_connected(): | 273 | func _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 @@ | |||
1 | extends "res://scripts/nodes/player.gd" | 1 | extends "res://scripts/nodes/player.gd" |
2 | 2 | ||
3 | const 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 | ||
4 | func _ready(): | 20 | func _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 @@ | |||
1 | extends Receiver | ||
2 | |||
3 | |||
4 | func _ready(): | ||
5 | super._ready() | ||
6 | |||
7 | |||
8 | func handleTriggered(): | ||
9 | triggered += 1 | ||
10 | if triggered >= total: | ||
11 | var ap = global.get_node("Archipelago") | ||
12 | ap.client.completedGoal() | ||
13 | |||
14 | |||
15 | func handleUntriggered(): | ||
16 | triggered -= 1 | ||
17 | if triggered < total: | ||
18 | pass | ||