about summary refs log tree commit diff stats
path: root/client/Archipelago/gamedata.gd
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-09-25 12:09:50 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-09-25 12:09:50 -0400
commit3f53502a5907ed1982d28a392c54331f0c1c2c42 (patch)
tree1dd087464d0fba1c35feaab0cee357fca6f2763c /client/Archipelago/gamedata.gd
parentfb220e1c75e72a536c19aa1283f905850a91cf44 (diff)
downloadlingo2-archipelago-3f53502a5907ed1982d28a392c54331f0c1c2c42.tar.gz
lingo2-archipelago-3f53502a5907ed1982d28a392c54331f0c1c2c42.tar.bz2
lingo2-archipelago-3f53502a5907ed1982d28a392c54331f0c1c2c42.zip
Move the client into the apworld
Only works on source right now, not as an apworld.
Diffstat (limited to 'client/Archipelago/gamedata.gd')
-rw-r--r--client/Archipelago/gamedata.gd159
1 files changed, 0 insertions, 159 deletions
diff --git a/client/Archipelago/gamedata.gd b/client/Archipelago/gamedata.gd deleted file mode 100644 index 9eeec3b..0000000 --- a/client/Archipelago/gamedata.gd +++ /dev/null
@@ -1,159 +0,0 @@
1extends Node
2
3var SCRIPT_proto
4
5var objects
6var door_id_by_map_node_path = {}
7var painting_id_by_map_node_path = {}
8var panel_id_by_map_node_path = {}
9var port_id_by_map_node_path = {}
10var door_id_by_ap_id = {}
11var map_id_by_name = {}
12var progressive_id_by_ap_id = {}
13var letter_id_by_ap_id = {}
14var symbol_item_ids = []
15var anti_trap_ids = {}
16
17var kSYMBOL_ITEMS
18
19
20func _init(proto_script):
21 SCRIPT_proto = proto_script
22
23 kSYMBOL_ITEMS = {
24 SCRIPT_proto.PuzzleSymbol.SUN: "Sun Symbol",
25 SCRIPT_proto.PuzzleSymbol.SPARKLES: "Sparkles Symbol",
26 SCRIPT_proto.PuzzleSymbol.ZERO: "Zero Symbol",
27 SCRIPT_proto.PuzzleSymbol.EXAMPLE: "Example Symbol",
28 SCRIPT_proto.PuzzleSymbol.BOXES: "Boxes Symbol",
29 SCRIPT_proto.PuzzleSymbol.PLANET: "Planet Symbol",
30 SCRIPT_proto.PuzzleSymbol.PYRAMID: "Pyramid Symbol",
31 SCRIPT_proto.PuzzleSymbol.CROSS: "Cross Symbol",
32 SCRIPT_proto.PuzzleSymbol.SWEET: "Sweet Symbol",
33 SCRIPT_proto.PuzzleSymbol.GENDER: "Gender Symbol",
34 SCRIPT_proto.PuzzleSymbol.AGE: "Age Symbol",
35 SCRIPT_proto.PuzzleSymbol.SOUND: "Sound Symbol",
36 SCRIPT_proto.PuzzleSymbol.ANAGRAM: "Anagram Symbol",
37 SCRIPT_proto.PuzzleSymbol.JOB: "Job Symbol",
38 SCRIPT_proto.PuzzleSymbol.STARS: "Stars Symbol",
39 SCRIPT_proto.PuzzleSymbol.NULL: "Null Symbol",
40 SCRIPT_proto.PuzzleSymbol.EVAL: "Eval Symbol",
41 SCRIPT_proto.PuzzleSymbol.LINGO: "Lingo Symbol",
42 SCRIPT_proto.PuzzleSymbol.QUESTION: "Question Symbol",
43 }
44
45
46func load(data_bytes):
47 objects = SCRIPT_proto.AllObjects.new()
48
49 var result_code = objects.from_bytes(data_bytes)
50 if result_code != SCRIPT_proto.PB_ERR.NO_ERRORS:
51 print("Could not load generated data: %d" % result_code)
52 return
53
54 for map in objects.get_maps():
55 map_id_by_name[map.get_name()] = map.get_id()
56
57 for door in objects.get_doors():
58 var map = objects.get_maps()[door.get_map_id()]
59
60 if not map.get_name() in door_id_by_map_node_path:
61 door_id_by_map_node_path[map.get_name()] = {}
62
63 var map_data = door_id_by_map_node_path[map.get_name()]
64 for receiver in door.get_receivers():
65 map_data[receiver] = door.get_id()
66
67 for painting_id in door.get_move_paintings():
68 var painting = objects.get_paintings()[painting_id]
69 map_data[painting.get_path()] = door.get_id()
70
71 if door.has_ap_id():
72 door_id_by_ap_id[door.get_ap_id()] = door.get_id()
73
74 for painting in objects.get_paintings():
75 var room = objects.get_rooms()[painting.get_room_id()]
76 var map = objects.get_maps()[room.get_map_id()]
77
78 if not map.get_name() in painting_id_by_map_node_path:
79 painting_id_by_map_node_path[map.get_name()] = {}
80
81 var _map_data = painting_id_by_map_node_path[map.get_name()]
82
83 for port in objects.get_ports():
84 var room = objects.get_rooms()[port.get_room_id()]
85 var map = objects.get_maps()[room.get_map_id()]
86
87 if not map.get_name() in port_id_by_map_node_path:
88 port_id_by_map_node_path[map.get_name()] = {}
89
90 var map_data = port_id_by_map_node_path[map.get_name()]
91 map_data[port.get_path()] = port.get_id()
92
93 for progressive in objects.get_progressives():
94 progressive_id_by_ap_id[progressive.get_ap_id()] = progressive.get_id()
95
96 for letter in objects.get_letters():
97 letter_id_by_ap_id[letter.get_ap_id()] = letter.get_id()
98
99 for panel in objects.get_panels():
100 var room = objects.get_rooms()[panel.get_room_id()]
101 var map = objects.get_maps()[room.get_map_id()]
102
103 if not map.get_name() in panel_id_by_map_node_path:
104 panel_id_by_map_node_path[map.get_name()] = {}
105
106 var map_data = panel_id_by_map_node_path[map.get_name()]
107 map_data[panel.get_path()] = panel.get_id()
108
109 for symbol_name in kSYMBOL_ITEMS.values():
110 symbol_item_ids.append(objects.get_special_ids()[symbol_name])
111
112 for special_name in objects.get_special_ids().keys():
113 if special_name.begins_with("Anti "):
114 anti_trap_ids[objects.get_special_ids()[special_name]] = (
115 special_name.substr(5).to_lower()
116 )
117
118
119func get_door_for_map_node_path(map_name, node_path):
120 if not door_id_by_map_node_path.has(map_name):
121 return null
122
123 var map_data = door_id_by_map_node_path[map_name]
124 return map_data.get(node_path, null)
125
126
127func get_panel_for_map_node_path(map_name, node_path):
128 if not panel_id_by_map_node_path.has(map_name):
129 return null
130
131 var map_data = panel_id_by_map_node_path[map_name]
132 return map_data.get(node_path, null)
133
134
135func get_port_for_map_node_path(map_name, node_path):
136 if not port_id_by_map_node_path.has(map_name):
137 return null
138
139 var map_data = port_id_by_map_node_path[map_name]
140 return map_data.get(node_path, null)
141
142
143func get_door_ap_id(door_id):
144 var door = objects.get_doors()[door_id]
145 if door.has_ap_id():
146 return door.get_ap_id()
147 else:
148 return null
149
150
151func get_door_receivers(door_id):
152 var door = objects.get_doors()[door_id]
153 return door.get_receivers()
154
155
156func get_door_map_name(door_id):
157 var door = objects.get_doors()[door_id]
158 var map = objects.get_maps()[door.get_map_id()]
159 return map.get_name()