-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLocations.py
More file actions
43 lines (28 loc) · 1.22 KB
/
Copy pathLocations.py
File metadata and controls
43 lines (28 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from typing import Final, List, Dict
from BaseClasses import Location
class LocationData:
name: str = ""
id: int = 0
difficulty: int = 0
tags: Final[tuple[str, ...]]
def __init__(self, name, id, difficulty, tags=None):
if tags is None:
tags = []
self.name = name
self.id = id
self.difficulty = difficulty
self.tags = tags
class GLLocation(Location):
game: str = "Gauntlet Legends"
def import_locations() -> List[LocationData]:
import json
import pkgutil
return json.loads(pkgutil.get_data(__name__, "json/locations.json").decode("utf-8"), object_hook=lambda d: LocationData(**d))
def get_locations_by_tags(tags: str | List[str]) -> List[LocationData]:
if isinstance(tags, str):
tags = [tags]
return [loc for loc in all_locations if any(tag in loc.tags for tag in tags)]
all_locations: List[LocationData] = import_locations()
location_table: Dict[str, int] = {locData.name: locData.id for locData in all_locations}
location_id_to_name: Dict[int, str] = {locData.id: locData.name for locData in all_locations if locData.id is not None}
locationName_to_data: Dict[str, LocationData] = {locData.name: locData for locData in all_locations}