Filter events out of datapackage
This commit is contained in:
parent
741ab3e45c
commit
14cadbf80d
|
@ -9,8 +9,13 @@ class AutoWorldRegister(type):
|
||||||
|
|
||||||
def __new__(cls, name, bases, dct):
|
def __new__(cls, name, bases, dct):
|
||||||
dct["all_names"] = dct["item_names"] | dct["location_names"] | set(dct.get("item_name_groups", {}))
|
dct["all_names"] = dct["item_names"] | dct["location_names"] | set(dct.get("item_name_groups", {}))
|
||||||
|
# filter out any events
|
||||||
|
dct["item_name_to_id"] = {name: id for name, id in dct["item_name_to_id"].items() if id}
|
||||||
|
dct["location_name_to_id"] = {name: id for name, id in dct["location_name_to_id"].items() if id}
|
||||||
|
# build reverse lookups
|
||||||
dct["item_id_to_name"] = {code: name for name, code in dct["item_name_to_id"].items()}
|
dct["item_id_to_name"] = {code: name for name, code in dct["item_name_to_id"].items()}
|
||||||
dct["location_id_to_name"] = {code: name for name, code in dct["location_name_to_id"].items()}
|
dct["location_id_to_name"] = {code: name for name, code in dct["location_name_to_id"].items()}
|
||||||
|
# construct class
|
||||||
new_class = super().__new__(cls, name, bases, dct)
|
new_class = super().__new__(cls, name, bases, dct)
|
||||||
if "game" in dct:
|
if "game" in dct:
|
||||||
AutoWorldRegister.world_types[dct["game"]] = new_class
|
AutoWorldRegister.world_types[dct["game"]] = new_class
|
||||||
|
|
|
@ -391,7 +391,7 @@ item_table = \
|
||||||
'Whispering_Root-Waterways': HKItemData(advancement=True, id=16777410, type='Root'),
|
'Whispering_Root-Waterways': HKItemData(advancement=True, id=16777410, type='Root'),
|
||||||
'World_Sense': HKItemData(advancement=False, id=16777220, type='Dreamer')}
|
'World_Sense': HKItemData(advancement=False, id=16777220, type='Dreamer')}
|
||||||
|
|
||||||
lookup_id_to_name:Dict[int, str] = {data.id: item_name for item_name, data in item_table.items()}
|
lookup_id_to_name:Dict[int, str] = {data.id: item_name for item_name, data in item_table.items() if data.type != 'Event'}
|
||||||
lookup_type_to_names:Dict[str, Set[str]] = {}
|
lookup_type_to_names:Dict[str, Set[str]] = {}
|
||||||
for item, item_data in item_table.items():
|
for item, item_data in item_table.items():
|
||||||
lookup_type_to_names.setdefault(item_data.type, set()).add(item)
|
lookup_type_to_names.setdefault(item_data.type, set()).add(item)
|
|
@ -18,7 +18,7 @@ class HKWorld(World):
|
||||||
item_names: Set[str] = frozenset(item_table)
|
item_names: Set[str] = frozenset(item_table)
|
||||||
location_names: Set[str] = frozenset(lookup_name_to_id)
|
location_names: Set[str] = frozenset(lookup_name_to_id)
|
||||||
|
|
||||||
item_name_to_id = {name: data.id for name, data in item_table.items()}
|
item_name_to_id = {name: data.id for name, data in item_table.items() if data.type != "Event"}
|
||||||
location_name_to_id = lookup_name_to_id
|
location_name_to_id = lookup_name_to_id
|
||||||
|
|
||||||
def generate_basic(self):
|
def generate_basic(self):
|
||||||
|
|
|
@ -3,7 +3,7 @@ import typing
|
||||||
|
|
||||||
|
|
||||||
class ItemData(typing.NamedTuple):
|
class ItemData(typing.NamedTuple):
|
||||||
code: int
|
code: typing.Optional[int]
|
||||||
progression: bool
|
progression: bool
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ item_table = {
|
||||||
"Single Arrow": ItemData(45034, False),
|
"Single Arrow": ItemData(45034, False),
|
||||||
"Bee Trap (Minecraft)": ItemData(45100, False),
|
"Bee Trap (Minecraft)": ItemData(45100, False),
|
||||||
|
|
||||||
"Victory": ItemData(0, True)
|
"Victory": ItemData(None, True)
|
||||||
}
|
}
|
||||||
|
|
||||||
# If not listed here then has frequency 1
|
# If not listed here then has frequency 1
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
from BaseClasses import Location
|
from BaseClasses import Location
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
|
|
||||||
class AdvData(typing.NamedTuple):
|
class AdvData(typing.NamedTuple):
|
||||||
id: int
|
id: typing.Optional[int]
|
||||||
region: str
|
region: str
|
||||||
|
|
||||||
|
|
||||||
class MinecraftAdvancement(Location):
|
class MinecraftAdvancement(Location):
|
||||||
game: str = "Minecraft"
|
game: str = "Minecraft"
|
||||||
def __init__(self, player: int, name: str, address: int, parent):
|
|
||||||
super().__init__(player, name, address if address else None, parent)
|
def __init__(self, player: int, name: str, address: typing.Optional[int], parent):
|
||||||
self.event = True if address == 0 else False
|
super().__init__(player, name, address, parent)
|
||||||
|
self.event = not address
|
||||||
|
|
||||||
|
|
||||||
advancement_table = {
|
advancement_table = {
|
||||||
"Who is Cutting Onions?": AdvData(42000, 'Overworld'),
|
"Who is Cutting Onions?": AdvData(42000, 'Overworld'),
|
||||||
|
@ -105,7 +109,7 @@ advancement_table = {
|
||||||
"Librarian": AdvData(42090, 'Overworld'),
|
"Librarian": AdvData(42090, 'Overworld'),
|
||||||
"Overpowered": AdvData(42091, 'Overworld'),
|
"Overpowered": AdvData(42091, 'Overworld'),
|
||||||
|
|
||||||
"Ender Dragon": AdvData(0, 'The End')
|
"Ender Dragon": AdvData(None, 'The End')
|
||||||
}
|
}
|
||||||
|
|
||||||
exclusion_table = {
|
exclusion_table = {
|
||||||
|
@ -134,10 +138,9 @@ exclusion_table = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
events_table = {
|
events_table = {
|
||||||
"Ender Dragon": "Victory"
|
"Ender Dragon": "Victory"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lookup_id_to_name: typing.Dict[int, str] = {loc_data.id: loc_name for loc_name, loc_data in advancement_table.items() if
|
||||||
lookup_id_to_name: typing.Dict[int, str] = {loc_data.id: loc_name for loc_name, loc_data in advancement_table.items() if loc_data.id}
|
loc_data.id}
|
||||||
|
|
Loading…
Reference in New Issue