From bca1a2d9e0c652640dc0fdc41f8dcdb12770112e Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Mon, 27 Jul 2020 19:30:31 +0200 Subject: [PATCH] WebHost: Automatic !hint tracking --- MultiServer.py | 3 ++- WebHostLib/templates/tracker.html | 34 +++++++++++++++++++++++++++++-- WebHostLib/tracker.py | 12 ++++++++++- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/MultiServer.py b/MultiServer.py index 577dbf7f..2addd9c7 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -199,7 +199,8 @@ class Context(Node): "rom_names": list(self.rom_names.items()), "received_items": tuple((k, v) for k, v in self.received_items.items()), "hints_used": tuple((key, value) for key, value in self.hints_used.items()), - "hints": tuple((key, list(value)) for key, value in self.hints.items()), + "hints": tuple( + (key, list(hint.re_check(self, key[0]) for hint in value)) for key, value in self.hints.items()), "location_checks": tuple((key, tuple(value)) for key, value in self.location_checks.items()), "name_aliases": tuple((key, value) for key, value in self.name_aliases.items()), "client_game_state": tuple((key, value) for key, value in self.client_game_state.items()), diff --git a/WebHostLib/templates/tracker.html b/WebHostLib/templates/tracker.html index 890c8528..373902a3 100644 --- a/WebHostLib/templates/tracker.html +++ b/WebHostLib/templates/tracker.html @@ -7,9 +7,9 @@ {% endblock %} {% block body %} -
+
{% endblock %} diff --git a/WebHostLib/tracker.py b/WebHostLib/tracker.py index cdbea5f0..00370d2c 100644 --- a/WebHostLib/tracker.py +++ b/WebHostLib/tracker.py @@ -7,13 +7,18 @@ import logging from uuid import UUID import Items +import Regions from WebHostLib import app, cache, Room +from Utils import Hint def get_id(item_name): return Items.item_table[item_name][3] +app.jinja_env.filters["location_name"] = lambda location: Regions.lookup_id_to_name.get(location, location) +app.jinja_env.filters['item_name'] = lambda id: Items.lookup_id_to_name.get(id, id) + icons = { "Progressive Sword": r"https://gamepedia.cursecdn.com/zelda_gamepedia_en/c/cc/ALttP_Master_Sword_Sprite.png?version=55869db2a20e157cd3b5c8f556097725", @@ -263,6 +268,10 @@ def get_tracker(tracker: UUID): for playernumber in range(1, len(team) + 1)} for teamnumber, team in enumerate(names)} precollected_items = room.seed.multidata.get("precollected_items", None) + hints = {team: set() for team in range(len(names))} + for key, hintdata in room.multisave["hints"]: + for hint in hintdata: + hints[key[0]].add(Hint(*hint)) for (team, player), locations_checked in room.multisave.get("location_checks", {}): if precollected_items: @@ -302,4 +311,5 @@ def get_tracker(tracker: UUID): multi_items=multi_items, checks_done=checks_done, ordered_areas=ordered_areas, checks_in_area=checks_in_area, activity_timers=activity_timers, key_locations=key_locations, small_key_ids=small_key_ids, big_key_ids=big_key_ids, - video=video, big_key_locations = key_locations if use_door_tracker else big_key_locations) + video=video, big_key_locations=key_locations if use_door_tracker else big_key_locations, + hints=hints)