diff --git a/WebHostLib/api/tracker.py b/WebHostLib/api/tracker.py index 4956e644..36692af4 100644 --- a/WebHostLib/api/tracker.py +++ b/WebHostLib/api/tracker.py @@ -52,6 +52,12 @@ class PlayerStatus(TypedDict): status: ClientStatus +class PlayerLocationsTotal(TypedDict): + team: int + player: int + total_locations: int + + @api_endpoints.route("/tracker/") @cache.memoize(timeout=60) def tracker_data(tracker: UUID) -> dict[str, Any]: @@ -195,9 +201,16 @@ def static_tracker_data(tracker: UUID) -> dict[str, Any]: }) break + player_locations_total: list[PlayerLocationsTotal] = [] + for team, players in all_players.items(): + for player in players: + player_locations_total.append( + {"team": team, "player": player, "total_locations": len(tracker_data.get_player_locations(player))}) + return { "groups": groups, "datapackage": tracker_data._multidata["datapackage"], + "player_locations_total": player_locations_total, } # It should be exceedingly rare that slot data is needed, so it's separated out. diff --git a/docs/webhost api.md b/docs/webhost api.md index e34eb47f..04821134 100644 --- a/docs/webhost api.md +++ b/docs/webhost api.md @@ -383,6 +383,8 @@ Will provide a dict of static tracker data with the following keys: - item_link groups and their players (`groups`) - The datapackage hash for each game (`datapackage`) - This hash can then be sent to the datapackage API to receive the appropriate datapackage as necessary +- The number of checks found vs. total checks available per player (`player_locations_total`) + - Same logic as the multitracker template: found = len(player_checks_done.locations) / total = player_locations_total.total_locations (all available checks). Example: ```json @@ -412,7 +414,19 @@ Example: "The Messenger": { "checksum": "6991cbcda7316b65bcb072667f3ee4c4cae71c0b", } - } + }, + "player_locations_total": [ + { + "player": 1, + "team" : 0, + "total_locations": 10 + }, + { + "player": 2, + "team" : 0, + "total_locations": 20 + } + ], } ```