diff options
Diffstat (limited to 'client')
| -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 | ||
