diff options
Diffstat (limited to 'apworld/static_logic.py')
-rw-r--r-- | apworld/static_logic.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/apworld/static_logic.py b/apworld/static_logic.py index 3f6cdea..c112d8e 100644 --- a/apworld/static_logic.py +++ b/apworld/static_logic.py | |||
@@ -1,4 +1,5 @@ | |||
1 | from .generated import data_pb2 as data_pb2 | 1 | from .generated import data_pb2 as data_pb2 |
2 | from .items import SYMBOL_ITEMS | ||
2 | import pkgutil | 3 | import pkgutil |
3 | 4 | ||
4 | class Lingo2StaticLogic: | 5 | class Lingo2StaticLogic: |
@@ -8,9 +9,14 @@ class Lingo2StaticLogic: | |||
8 | item_name_to_id: dict[str, int] | 9 | item_name_to_id: dict[str, int] |
9 | location_name_to_id: dict[str, int] | 10 | location_name_to_id: dict[str, int] |
10 | 11 | ||
12 | item_name_groups: dict[str, list[str]] | ||
13 | location_name_groups: dict[str, list[str]] | ||
14 | |||
11 | def __init__(self): | 15 | def __init__(self): |
12 | self.item_id_to_name = {} | 16 | self.item_id_to_name = {} |
13 | self.location_id_to_name = {} | 17 | self.location_id_to_name = {} |
18 | self.item_name_groups = {} | ||
19 | self.location_name_groups = {} | ||
14 | 20 | ||
15 | file = pkgutil.get_data(__name__, "generated/data.binpb") | 21 | file = pkgutil.get_data(__name__, "generated/data.binpb") |
16 | self.objects = data_pb2.AllObjects() | 22 | self.objects = data_pb2.AllObjects() |
@@ -29,17 +35,21 @@ class Lingo2StaticLogic: | |||
29 | letter_name = f"{letter.key.upper()}{'2' if letter.level2 else '1'}" | 35 | letter_name = f"{letter.key.upper()}{'2' if letter.level2 else '1'}" |
30 | location_name = f"{self.get_room_object_map_name(letter)} - {letter_name}" | 36 | location_name = f"{self.get_room_object_map_name(letter)} - {letter_name}" |
31 | self.location_id_to_name[letter.ap_id] = location_name | 37 | self.location_id_to_name[letter.ap_id] = location_name |
38 | self.location_name_groups.setdefault("Letters", []).append(location_name) | ||
32 | 39 | ||
33 | if not letter.level2: | 40 | if not letter.level2: |
34 | self.item_id_to_name[letter.ap_id] = letter.key.upper() | 41 | self.item_id_to_name[letter.ap_id] = letter.key.upper() |
42 | self.item_name_groups.setdefault("Letters", []).append(letter.key.upper()) | ||
35 | 43 | ||
36 | for mastery in self.objects.masteries: | 44 | for mastery in self.objects.masteries: |
37 | location_name = f"{self.get_room_object_map_name(mastery)} - Mastery" | 45 | location_name = f"{self.get_room_object_map_name(mastery)} - Mastery" |
38 | self.location_id_to_name[mastery.ap_id] = location_name | 46 | self.location_id_to_name[mastery.ap_id] = location_name |
47 | self.location_name_groups.setdefault("Masteries", []).append(location_name) | ||
39 | 48 | ||
40 | for ending in self.objects.endings: | 49 | for ending in self.objects.endings: |
41 | location_name = f"{self.get_room_object_map_name(ending)} - {ending.name.title()} Ending" | 50 | location_name = f"{self.get_room_object_map_name(ending)} - {ending.name.title()} Ending" |
42 | self.location_id_to_name[ending.ap_id] = location_name | 51 | self.location_id_to_name[ending.ap_id] = location_name |
52 | self.location_name_groups.setdefault("Endings", []).append(location_name) | ||
43 | 53 | ||
44 | for progressive in self.objects.progressives: | 54 | for progressive in self.objects.progressives: |
45 | self.item_id_to_name[progressive.ap_id] = progressive.name | 55 | self.item_id_to_name[progressive.ap_id] = progressive.name |
@@ -51,9 +61,13 @@ class Lingo2StaticLogic: | |||
51 | if keyholder.HasField("key"): | 61 | if keyholder.HasField("key"): |
52 | location_name = f"{self.get_room_object_location_prefix(keyholder)} - {keyholder.key.upper()} Keyholder" | 62 | location_name = f"{self.get_room_object_location_prefix(keyholder)} - {keyholder.key.upper()} Keyholder" |
53 | self.location_id_to_name[keyholder.ap_id] = location_name | 63 | self.location_id_to_name[keyholder.ap_id] = location_name |
64 | self.location_name_groups.setdefault("Keyholders", []).append(location_name) | ||
54 | 65 | ||
55 | self.item_id_to_name[self.objects.special_ids["A Job Well Done"]] = "A Job Well Done" | 66 | self.item_id_to_name[self.objects.special_ids["A Job Well Done"]] = "A Job Well Done" |
56 | 67 | ||
68 | for symbol_name in SYMBOL_ITEMS.values(): | ||
69 | self.item_id_to_name[self.objects.special_ids[symbol_name]] = symbol_name | ||
70 | |||
57 | self.item_name_to_id = {name: ap_id for ap_id, name in self.item_id_to_name.items()} | 71 | self.item_name_to_id = {name: ap_id for ap_id, name in self.item_id_to_name.items()} |
58 | self.location_name_to_id = {name: ap_id for ap_id, name in self.location_id_to_name.items()} | 72 | self.location_name_to_id = {name: ap_id for ap_id, name in self.location_id_to_name.items()} |
59 | 73 | ||