WebHost: remove team argument from tracker arguments where it's irrelevant (#5272)

This commit is contained in:
Fabian Dill
2025-09-22 00:17:10 +02:00
committed by GitHub
parent 6c45c8d606
commit 68187ba25f
4 changed files with 46 additions and 46 deletions

View File

@@ -98,7 +98,7 @@
<td>
{% if hint.finding_player == player %}
<b>{{ player_names_with_alias[(team, hint.finding_player)] }}</b>
{% elif get_slot_info(team, hint.finding_player).type == 2 %}
{% elif get_slot_info(hint.finding_player).type == 2 %}
<i>{{ player_names_with_alias[(team, hint.finding_player)] }}</i>
{% else %}
<a href="{{ url_for("get_player_tracker", tracker=room.tracker, tracked_team=team, tracked_player=hint.finding_player) }}">
@@ -109,7 +109,7 @@
<td>
{% if hint.receiving_player == player %}
<b>{{ player_names_with_alias[(team, hint.receiving_player)] }}</b>
{% elif get_slot_info(team, hint.receiving_player).type == 2 %}
{% elif get_slot_info(hint.receiving_player).type == 2 %}
<i>{{ player_names_with_alias[(team, hint.receiving_player)] }}</i>
{% else %}
<a href="{{ url_for("get_player_tracker", tracker=room.tracker, tracked_team=team, tracked_player=hint.receiving_player) }}">

View File

@@ -45,15 +45,15 @@
{%- set current_sphere = loop.index %}
{%- for player, sphere_location_ids in sphere.items() %}
{%- set checked_locations = tracker_data.get_player_checked_locations(team, player) %}
{%- set finder_game = tracker_data.get_player_game(team, player) %}
{%- set player_location_data = tracker_data.get_player_locations(team, player) %}
{%- set finder_game = tracker_data.get_player_game(player) %}
{%- set player_location_data = tracker_data.get_player_locations(player) %}
{%- for location_id in sphere_location_ids.intersection(checked_locations) %}
<tr>
{%- set item_id, receiver, item_flags = player_location_data[location_id] %}
{%- set receiver_game = tracker_data.get_player_game(team, receiver) %}
{%- set receiver_game = tracker_data.get_player_game(receiver) %}
<td>{{ current_sphere }}</td>
<td>{{ tracker_data.get_player_name(team, player) }}</td>
<td>{{ tracker_data.get_player_name(team, receiver) }}</td>
<td>{{ tracker_data.get_player_name(player) }}</td>
<td>{{ tracker_data.get_player_name(receiver) }}</td>
<td>{{ tracker_data.item_id_to_name[receiver_game][item_id] }}</td>
<td>{{ tracker_data.location_id_to_name[finder_game][location_id] }}</td>
<td>{{ finder_game }}</td>

View File

@@ -22,14 +22,14 @@
-%}
<tr>
<td>
{% if get_slot_info(team, hint.finding_player).type == 2 %}
{% if get_slot_info(hint.finding_player).type == 2 %}
<i>{{ player_names_with_alias[(team, hint.finding_player)] }}</i>
{% else %}
{{ player_names_with_alias[(team, hint.finding_player)] }}
{% endif %}
</td>
<td>
{% if get_slot_info(team, hint.receiving_player).type == 2 %}
{% if get_slot_info(hint.receiving_player).type == 2 %}
<i>{{ player_names_with_alias[(team, hint.receiving_player)] }}</i>
{% else %}
{{ player_names_with_alias[(team, hint.receiving_player)] }}

View File

@@ -85,27 +85,27 @@ class TrackerData:
"""Retrieves the seed name."""
return self._multidata["seed_name"]
def get_slot_data(self, team: int, player: int) -> Dict[str, Any]:
def get_slot_data(self, player: int) -> Dict[str, Any]:
"""Retrieves the slot data for a given player."""
return self._multidata["slot_data"][player]
def get_slot_info(self, team: int, player: int) -> NetworkSlot:
def get_slot_info(self, player: int) -> NetworkSlot:
"""Retrieves the NetworkSlot data for a given player."""
return self._multidata["slot_info"][player]
def get_player_name(self, team: int, player: int) -> str:
def get_player_name(self, player: int) -> str:
"""Retrieves the slot name for a given player."""
return self.get_slot_info(team, player).name
return self.get_slot_info(player).name
def get_player_game(self, team: int, player: int) -> str:
def get_player_game(self, player: int) -> str:
"""Retrieves the game for a given player."""
return self.get_slot_info(team, player).game
return self.get_slot_info(player).game
def get_player_locations(self, team: int, player: int) -> Dict[int, ItemMetadata]:
def get_player_locations(self, player: int) -> Dict[int, ItemMetadata]:
"""Retrieves all locations with their containing item's metadata for a given player."""
return self._multidata["locations"][player]
def get_player_starting_inventory(self, team: int, player: int) -> List[int]:
def get_player_starting_inventory(self, player: int) -> List[int]:
"""Retrieves a list of all item codes a given slot starts with."""
return self._multidata["precollected_items"][player]
@@ -116,7 +116,7 @@ class TrackerData:
@_cache_results
def get_player_missing_locations(self, team: int, player: int) -> Set[int]:
"""Retrieves the set of all locations not marked complete by this player."""
return set(self.get_player_locations(team, player)) - self.get_player_checked_locations(team, player)
return set(self.get_player_locations(player)) - self.get_player_checked_locations(team, player)
def get_player_received_items(self, team: int, player: int) -> List[NetworkItem]:
"""Returns all items received to this player in order of received."""
@@ -126,7 +126,7 @@ class TrackerData:
def get_player_inventory_counts(self, team: int, player: int) -> collections.Counter:
"""Retrieves a dictionary of all items received by their id and their received count."""
received_items = self.get_player_received_items(team, player)
starting_items = self.get_player_starting_inventory(team, player)
starting_items = self.get_player_starting_inventory(player)
inventory = collections.Counter()
for item in received_items:
inventory[item.item] += 1
@@ -179,7 +179,7 @@ class TrackerData:
def get_team_locations_total_count(self) -> Dict[int, int]:
"""Retrieves a dictionary of total player locations each team has."""
return {
team: sum(len(self.get_player_locations(team, player)) for player in players)
team: sum(len(self.get_player_locations(player)) for player in players)
for team, players in self.get_all_players().items()
}
@@ -210,7 +210,7 @@ class TrackerData:
return {
0: [
player for player, slot_info in self._multidata["slot_info"].items()
if self.get_slot_info(0, player).type == SlotType.player
if self.get_slot_info(player).type == SlotType.player
]
}
@@ -226,7 +226,7 @@ class TrackerData:
def get_room_locations(self) -> Dict[TeamPlayer, Dict[int, ItemMetadata]]:
"""Retrieves a dictionary of all locations and their associated item metadata per player."""
return {
(team, player): self.get_player_locations(team, player)
(team, player): self.get_player_locations(player)
for team, players in self.get_all_players().items() for player in players
}
@@ -234,7 +234,7 @@ class TrackerData:
def get_room_games(self) -> Dict[TeamPlayer, str]:
"""Retrieves a dictionary of games for each player."""
return {
(team, player): self.get_player_game(team, player)
(team, player): self.get_player_game(player)
for team, players in self.get_all_slots().items() for player in players
}
@@ -262,9 +262,9 @@ class TrackerData:
for player in players:
alias = self.get_player_alias(team, player)
if alias:
long_player_names[team, player] = f"{alias} ({self.get_player_name(team, player)})"
long_player_names[team, player] = f"{alias} ({self.get_player_name(player)})"
else:
long_player_names[team, player] = self.get_player_name(team, player)
long_player_names[team, player] = self.get_player_name(player)
return long_player_names
@@ -344,7 +344,7 @@ def get_timeout_and_player_tracker(room: Room, tracked_team: int, tracked_player
tracker_data = TrackerData(room)
# Load and render the game-specific player tracker, or fallback to generic tracker if none exists.
game_specific_tracker = _player_trackers.get(tracker_data.get_player_game(tracked_team, tracked_player), None)
game_specific_tracker = _player_trackers.get(tracker_data.get_player_game(tracked_player), None)
if game_specific_tracker and not generic:
tracker = game_specific_tracker(tracker_data, tracked_team, tracked_player)
else:
@@ -409,10 +409,10 @@ def get_enabled_multiworld_trackers(room: Room) -> Dict[str, Callable]:
def render_generic_tracker(tracker_data: TrackerData, team: int, player: int) -> str:
game = tracker_data.get_player_game(team, player)
game = tracker_data.get_player_game(player)
received_items_in_order = {}
starting_inventory = tracker_data.get_player_starting_inventory(team, player)
starting_inventory = tracker_data.get_player_starting_inventory(player)
for index, item in enumerate(starting_inventory):
received_items_in_order[item] = index
for index, network_item in enumerate(tracker_data.get_player_received_items(team, player),
@@ -428,7 +428,7 @@ def render_generic_tracker(tracker_data: TrackerData, team: int, player: int) ->
player=player,
player_name=tracker_data.get_room_long_player_names()[team, player],
inventory=tracker_data.get_player_inventory_counts(team, player),
locations=tracker_data.get_player_locations(team, player),
locations=tracker_data.get_player_locations(player),
checked_locations=tracker_data.get_player_checked_locations(team, player),
received_items=received_items_in_order,
saving_second=tracker_data.get_room_saving_second(),
@@ -500,7 +500,7 @@ if "Factorio" in network_data_package["games"]:
tracker_data.item_id_to_name["Factorio"][item_id]: count
for item_id, count in tracker_data.get_player_inventory_counts(team, player).items()
}) for team, players in tracker_data.get_all_players().items() for player in players
if tracker_data.get_player_game(team, player) == "Factorio"
if tracker_data.get_player_game(player) == "Factorio"
}
return render_template(
@@ -589,7 +589,7 @@ if "A Link to the Past" in network_data_package["games"]:
# Highlight 'bombs' if we received any bomb upgrades in bombless start.
# In race mode, we'll just assume bombless start for simplicity.
if tracker_data.get_slot_data(team, player).get("bombless_start", True):
if tracker_data.get_slot_data(player).get("bombless_start", True):
inventory["Bombs"] = sum(count for item, count in inventory.items() if item.startswith("Bomb Upgrade"))
else:
inventory["Bombs"] = 1
@@ -605,7 +605,7 @@ if "A Link to the Past" in network_data_package["games"]:
for code, count in tracker_data.get_player_inventory_counts(team, player).items()
})
for team, players in tracker_data.get_all_players().items()
for player in players if tracker_data.get_slot_info(team, player).game == "A Link to the Past"
for player in players if tracker_data.get_slot_info(player).game == "A Link to the Past"
}
# Translate non-progression items to progression items for tracker simplicity.
@@ -624,7 +624,7 @@ if "A Link to the Past" in network_data_package["games"]:
for region_name in known_regions
}
for team, players in tracker_data.get_all_players().items()
for player in players if tracker_data.get_slot_info(team, player).game == "A Link to the Past"
for player in players if tracker_data.get_slot_info(player).game == "A Link to the Past"
}
# Get a totals count.
@@ -698,7 +698,7 @@ if "A Link to the Past" in network_data_package["games"]:
team=team,
player=player,
inventory=inventory,
player_name=tracker_data.get_player_name(team, player),
player_name=tracker_data.get_player_name(player),
regions=regions,
known_regions=known_regions,
)
@@ -845,7 +845,7 @@ if "Ocarina of Time" in network_data_package["games"]:
return full_name[len(area):]
return full_name
locations = tracker_data.get_player_locations(team, player)
locations = tracker_data.get_player_locations(player)
checked_locations = tracker_data.get_player_checked_locations(team, player).intersection(set(locations))
location_info = {}
checks_done = {}
@@ -907,7 +907,7 @@ if "Ocarina of Time" in network_data_package["games"]:
player=player,
team=team,
room=tracker_data.room,
player_name=tracker_data.get_player_name(team, player),
player_name=tracker_data.get_player_name(player),
icons=icons,
acquired_items={lookup_any_item_id_to_name[id] for id, count in inventory.items() if count > 0},
checks_done=checks_done, checks_in_area=checks_in_area, location_info=location_info,
@@ -966,7 +966,7 @@ if "Timespinner" in network_data_package["games"]:
1337246, 1337247, 1337248, 1337249]
}
slot_data = tracker_data.get_slot_data(team, player)
slot_data = tracker_data.get_slot_data(player)
if (slot_data["DownloadableItems"]):
timespinner_location_ids["Present"] += [1337156, 1337157] + list(range(1337159, 1337170))
if (slot_data["Cantoran"]):
@@ -1015,7 +1015,7 @@ if "Timespinner" in network_data_package["games"]:
player=player,
team=team,
room=tracker_data.room,
player_name=tracker_data.get_player_name(team, player),
player_name=tracker_data.get_player_name(player),
checks_done=checks_done,
checks_in_area=checks_in_area,
location_info=location_info,
@@ -1124,7 +1124,7 @@ if "Super Metroid" in network_data_package["games"]:
player=player,
team=team,
room=tracker_data.room,
player_name=tracker_data.get_player_name(team, player),
player_name=tracker_data.get_player_name(player),
checks_done=checks_done,
checks_in_area=checks_in_area,
location_info=location_info,
@@ -1174,7 +1174,7 @@ if "ChecksFinder" in network_data_package["games"]:
display_data = {}
inventory = tracker_data.get_player_inventory_counts(team, player)
locations = tracker_data.get_player_locations(team, player)
locations = tracker_data.get_player_locations(player)
# Multi-items
multi_items = {
@@ -1216,7 +1216,7 @@ if "ChecksFinder" in network_data_package["games"]:
player=player,
team=team,
room=tracker_data.room,
player_name=tracker_data.get_player_name(team, player),
player_name=tracker_data.get_player_name(player),
checks_done=checks_done,
checks_in_area=checks_in_area,
location_info=location_info,
@@ -1244,7 +1244,7 @@ if "Starcraft 2" in network_data_package["games"]:
UPGRADE_RESEARCH_SPEED_ITEM_ID = 1807
UPGRADE_RESEARCH_COST_ITEM_ID = 1808
REDUCED_MAX_SUPPLY_ITEM_ID = 1850
slot_data = tracker_data.get_slot_data(team, player)
slot_data = tracker_data.get_slot_data(player)
inventory: collections.Counter[int] = tracker_data.get_player_inventory_counts(team, player)
item_id_to_name = tracker_data.item_id_to_name["Starcraft 2"]
location_id_to_name = tracker_data.location_id_to_name["Starcraft 2"]
@@ -1260,10 +1260,10 @@ if "Starcraft 2" in network_data_package["games"]:
display_data["shield_regen_count"] = inventory.get(SHIELD_REGENERATION_ITEM_ID, 0)
display_data["upgrade_speed_count"] = inventory.get(UPGRADE_RESEARCH_SPEED_ITEM_ID, 0)
display_data["research_cost_count"] = inventory.get(UPGRADE_RESEARCH_COST_ITEM_ID, 0)
# Locations
have_nco_locations = False
locations = tracker_data.get_player_locations(team, player)
locations = tracker_data.get_player_locations(player)
checked_locations = tracker_data.get_player_checked_locations(team, player)
missions: dict[str, list[tuple[str, bool]]] = {}
for location_id in locations:
@@ -1418,7 +1418,7 @@ if "Starcraft 2" in network_data_package["games"]:
# the maximum bundle contribution, not the sum
inventory[upgrade_id] = bundle_amount
# Victory condition
game_state = tracker_data.get_player_client_status(team, player)
display_data["game_finished"] = game_state == ClientStatus.CLIENT_GOAL
@@ -1436,7 +1436,7 @@ if "Starcraft 2" in network_data_package["games"]:
player=player,
team=team,
room=tracker_data.room,
player_name=tracker_data.get_player_name(team, player),
player_name=tracker_data.get_player_name(player),
missions=missions,
locations=locations,
checked_locations=checked_locations,