diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2023-05-21 13:12:50 -0400 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2023-05-21 13:12:50 -0400 |
| commit | 711d326fa4585031b9d623541624826558bdf547 (patch) | |
| tree | 14aad4560bfe0674098b96f859a62c63b693406b /Archipelago | |
| parent | 234388269696e3383631f4f0450b1096577d91cb (diff) | |
| download | lingo-archipelago-711d326fa4585031b9d623541624826558bdf547.tar.gz lingo-archipelago-711d326fa4585031b9d623541624826558bdf547.tar.bz2 lingo-archipelago-711d326fa4585031b9d623541624826558bdf547.zip | |
Report achievements to AP using data storage (for tracker)
Diffstat (limited to 'Archipelago')
| -rw-r--r-- | Archipelago/client.gd | 6 | ||||
| -rw-r--r-- | Archipelago/load.gd | 12 | ||||
| -rw-r--r-- | Archipelago/notifier.gd | 14 |
3 files changed, 31 insertions, 1 deletions
| diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 0326ffb..d7074f5 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd | |||
| @@ -540,6 +540,12 @@ func sendLocation(loc_id): | |||
| 540 | _held_locations.append(loc_id) | 540 | _held_locations.append(loc_id) |
| 541 | 541 | ||
| 542 | 542 | ||
| 543 | func setValue(key, value): | ||
| 544 | sendMessage( | ||
| 545 | [{"cmd": "Set", "key": key, "operations": [{"operation": "replace", "value": value}]}] | ||
| 546 | ) | ||
| 547 | |||
| 548 | |||
| 543 | func completedGoal(): | 549 | func completedGoal(): |
| 544 | sendMessage([{"cmd": "StatusUpdate", "status": 30}]) # CLIENT_GOAL | 550 | sendMessage([{"cmd": "StatusUpdate", "status": 30}]) # CLIENT_GOAL |
| 545 | 551 | ||
| diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 9568f69..052aa84 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd | |||
| @@ -267,12 +267,22 @@ func _load(): | |||
| 267 | painting_node.move_to_z = painting_node.translation.z | 267 | painting_node.move_to_z = painting_node.translation.z |
| 268 | painting_node.translation.x = 88 | 268 | painting_node.translation.x = 88 |
| 269 | painting_node.translation.z = 39 | 269 | painting_node.translation.z = 39 |
| 270 | 270 | ||
| 271 | var fearless_door = get_node("Doors/Naps Room Doors/Door_hider_5").duplicate() | 271 | var fearless_door = get_node("Doors/Naps Room Doors/Door_hider_5").duplicate() |
| 272 | fearless_door.name = "Door_hider_new1" | 272 | fearless_door.name = "Door_hider_new1" |
| 273 | fearless_door.translation.y = 5 | 273 | fearless_door.translation.y = 5 |
| 274 | get_node("Doors/Naps Room Doors").add_child(fearless_door) | 274 | get_node("Doors/Naps Room Doors").add_child(fearless_door) |
| 275 | 275 | ||
| 276 | # Set up notifiers for each achievement panel, for the tracker. | ||
| 277 | var notifier_script = ResourceLoader.load("user://maps/Archipelago/notifier.gd") | ||
| 278 | for panel in gamedata.panels: | ||
| 279 | if "achievement" in panel: | ||
| 280 | var panel_node = panels_parent.get_node(panel["id"]) | ||
| 281 | var script_instance = notifier_script.new() | ||
| 282 | script_instance.name = "Achievement_Notifier" | ||
| 283 | script_instance.key = "Achievement|%s" % panel["achievement"] | ||
| 284 | panel_node.add_child(script_instance) | ||
| 285 | |||
| 276 | # Attach a script to every panel so that we can do things like conditionally | 286 | # Attach a script to every panel so that we can do things like conditionally |
| 277 | # disable them. | 287 | # disable them. |
| 278 | var panel_script = ResourceLoader.load("user://maps/Archipelago/panel.gd") | 288 | var panel_script = ResourceLoader.load("user://maps/Archipelago/panel.gd") |
| diff --git a/Archipelago/notifier.gd b/Archipelago/notifier.gd new file mode 100644 index 0000000..57d6564 --- /dev/null +++ b/Archipelago/notifier.gd | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | extends Node | ||
| 2 | |||
| 3 | var key | ||
| 4 | |||
| 5 | |||
| 6 | func _ready(): | ||
| 7 | self.get_parent().get_node("Viewport/GUI/Panel/TextEdit").connect( | ||
| 8 | "answer_correct", self, "handle_correct" | ||
| 9 | ) | ||
| 10 | |||
| 11 | |||
| 12 | func handle_correct(): | ||
| 13 | var apclient = global.get_node("Archipelago") | ||
| 14 | apclient.setValue(key, true) | ||
