import json from typing import Set def determine_must_visit_locations(plan_json: dict, db_conn, game_name: str) -> Set[str]: # Extract needed Pokemon, find their encounter locations via db, return that set. # No route logic here, just data derivation. target = None for game in plan_json: if game["game_name"] == game_name: target = game break if not target: return set() # gather up all the pokemon needed for say crystal and find all the encounter routes/locations needed_locations = set() game_info = db_conn.get_game_id_by_name(game_name) for key in target["pokemon"]: catch_stats = target["pokemon"][key] rep = catch_stats["representative"] rand = db_conn.get_encounters(rep, "random") static = db_conn.get_encounters(rep, "static") encounters = [] encounters.extend(rand) encounters.extend(static) for encounter in encounters: if encounter["game_id"] != game_info["id"]: continue encounter_data = json.loads(encounter["data"]) needed_locations.add(encounter_data["location"].replace("*", "")) return needed_locations