about summary refs log tree commit diff stats
path: root/Archipelago/client.gd
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2023-08-01 17:11:10 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2023-08-01 17:11:10 -0400
commit6d8b971e7824dd6486bb4cb5a0f72eda7c5e47d3 (patch)
tree5e3ecfb848f4bb525a9c75a1627120bf9f2cad28 /Archipelago/client.gd
parent62f06090014aee90231eb90da36d5ae1b65171a3 (diff)
downloadlingo-archipelago-6d8b971e7824dd6486bb4cb5a0f72eda7c5e47d3.tar.gz
lingo-archipelago-6d8b971e7824dd6486bb4cb5a0f72eda7c5e47d3.tar.bz2
lingo-archipelago-6d8b971e7824dd6486bb4cb5a0f72eda7c5e47d3.zip
Gamedata is generated from main AP yaml
We now also include static data that was previously sent in slot data.
Diffstat (limited to 'Archipelago/client.gd')
-rw-r--r--Archipelago/client.gd49
1 files changed, 12 insertions, 37 deletions
diff --git a/Archipelago/client.gd b/Archipelago/client.gd index a816c42..a4ffb1b 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd
@@ -73,12 +73,6 @@ var _players = []
73var _player_name_by_slot = {} 73var _player_name_by_slot = {}
74var _checked_locations = [] 74var _checked_locations = []
75var _slot_data = {} 75var _slot_data = {}
76var _door_ids_by_item = {}
77var _mentioned_doors = []
78var _painting_ids_by_item = {}
79var _mentioned_paintings = []
80var _panel_ids_by_location = {}
81var _paintings = {}
82var _paintings_mapping = {} 76var _paintings_mapping = {}
83var _localdata_file = "" 77var _localdata_file = ""
84var _death_link = false 78var _death_link = false
@@ -230,25 +224,6 @@ func _on_data():
230 for player in _players: 224 for player in _players:
231 _player_name_by_slot[player["slot"]] = player["alias"] 225 _player_name_by_slot[player["slot"]] = player["alias"]
232 226
233 if _slot_data.has("door_ids_by_item_id"):
234 _door_ids_by_item = _slot_data["door_ids_by_item_id"]
235
236 _mentioned_doors = []
237 for item in _door_ids_by_item.values():
238 for door in item:
239 _mentioned_doors.append(door)
240 if _slot_data.has("painting_ids_by_item_id"):
241 _painting_ids_by_item = _slot_data["painting_ids_by_item_id"]
242
243 _mentioned_paintings = []
244 for item in _painting_ids_by_item.values():
245 for painting in item:
246 _mentioned_paintings.append(painting)
247 if _slot_data.has("panel_ids_by_location_id"):
248 _panel_ids_by_location = _slot_data["panel_ids_by_location_id"]
249 if _slot_data.has("paintings"):
250 _paintings = _slot_data["paintings"]
251
252 _death_link = _slot_data.has("death_link") and _slot_data["death_link"] 227 _death_link = _slot_data.has("death_link") and _slot_data["death_link"]
253 if _death_link: 228 if _death_link:
254 sendConnectUpdate(["DeathLink"]) 229 sendConnectUpdate(["DeathLink"])
@@ -260,7 +235,7 @@ func _on_data():
260 if _slot_data.has("shuffle_doors"): 235 if _slot_data.has("shuffle_doors"):
261 _door_shuffle = (_slot_data["shuffle_doors"] > 0) 236 _door_shuffle = (_slot_data["shuffle_doors"] > 0)
262 if _slot_data.has("shuffle_paintings"): 237 if _slot_data.has("shuffle_paintings"):
263 _painting_shuffle = (_slot_data["shuffle_paintings"] > 0) 238 _painting_shuffle = _slot_data["shuffle_paintings"]
264 if _slot_data.has("shuffle_panels"): 239 if _slot_data.has("shuffle_panels"):
265 _panel_shuffle = _slot_data["shuffle_panels"] 240 _panel_shuffle = _slot_data["shuffle_panels"]
266 if _slot_data.has("seed"): 241 if _slot_data.has("seed"):
@@ -585,17 +560,21 @@ func processItem(item, index, from, flags):
585 560
586 global._print(item) 561 global._print(item)
587 562
588 var stringified = String(item) 563 var gamedata = $Gamedata
589 if _door_ids_by_item.has(stringified): 564 var item_name = "Unknown"
565 if _item_id_to_name.has(item):
566 item_name = _item_id_to_name[item]
567
568 if gamedata.door_ids_by_item_id.has(item_name):
590 var doorsNode = get_tree().get_root().get_node("Spatial/Doors") 569 var doorsNode = get_tree().get_root().get_node("Spatial/Doors")
591 for door_id in _door_ids_by_item[stringified]: 570 for door_id in gamedata.door_ids_by_item_id[item_name]:
592 doorsNode.get_node(door_id).openDoor() 571 doorsNode.get_node(door_id).openDoor()
593 572
594 if _painting_ids_by_item.has(stringified): 573 if gamedata.painting_ids_by_item_id.has(item_name):
595 var real_parent_node = get_tree().get_root().get_node("Spatial/Decorations/Paintings") 574 var real_parent_node = get_tree().get_root().get_node("Spatial/Decorations/Paintings")
596 var fake_parent_node = get_tree().get_root().get_node_or_null("Spatial/AP_Paintings") 575 var fake_parent_node = get_tree().get_root().get_node_or_null("Spatial/AP_Paintings")
597 576
598 for painting_id in _painting_ids_by_item[stringified]: 577 for painting_id in gamedata.painting_ids_by_item_id[item_name]:
599 var painting_node = real_parent_node.get_node_or_null(painting_id) 578 var painting_node = real_parent_node.get_node_or_null(painting_id)
600 if painting_node != null: 579 if painting_node != null:
601 painting_node.movePainting() 580 painting_node.movePainting()
@@ -606,10 +585,6 @@ func processItem(item, index, from, flags):
606 painting_node.get_node("Script").movePainting() 585 painting_node.get_node("Script").movePainting()
607 586
608 # Handle progressive items. 587 # Handle progressive items.
609 var item_name = "Unknown"
610 if _item_id_to_name.has(item):
611 item_name = _item_id_to_name[item]
612
613 if item_name in progressive_items.keys(): 588 if item_name in progressive_items.keys():
614 if not item_name in _progressive_progress: 589 if not item_name in _progressive_progress:
615 _progressive_progress[item_name] = 0 590 _progressive_progress[item_name] = 0
@@ -659,11 +634,11 @@ func processItem(item, index, from, flags):
659 634
660 635
661func doorIsVanilla(door): 636func doorIsVanilla(door):
662 return !_mentioned_doors.has(door) 637 return !$Gamedata.mentioned_doors.has(door)
663 638
664 639
665func paintingIsVanilla(painting): 640func paintingIsVanilla(painting):
666 return !_mentioned_paintings.has(painting) 641 return !$Gamedata.mentioned_paintings.has(painting)
667 642
668 643
669func evaluateSolvability(): 644func evaluateSolvability():