tracker.py: run Reformat Code

This commit is contained in:
Fabian Dill 2021-09-23 13:52:32 +02:00
parent 68a5784650
commit 7ac9bd8591
1 changed files with 37 additions and 27 deletions

View File

@ -10,6 +10,7 @@ from WebHostLib import app, cache, Room
from Utils import restricted_loads from Utils import restricted_loads
from worlds import lookup_any_item_id_to_name, lookup_any_location_id_to_name from worlds import lookup_any_item_id_to_name, lookup_any_location_id_to_name
def get_alttp_id(item_name): def get_alttp_id(item_name):
return Items.item_table[item_name][2] return Items.item_table[item_name][2]
@ -283,6 +284,7 @@ def render_timedelta(delta: datetime.timedelta):
_multidata_cache = {} _multidata_cache = {}
def get_location_table(checks_table: dict) -> dict: def get_location_table(checks_table: dict) -> dict:
loc_to_area = {} loc_to_area = {}
for area, locations in checks_table.items(): for area, locations in checks_table.items():
@ -292,6 +294,7 @@ def get_location_table(checks_table: dict) -> dict:
loc_to_area[location] = area loc_to_area[location] = area
return loc_to_area return loc_to_area
def get_static_room_data(room: Room): def get_static_room_data(room: Room):
result = _multidata_cache.get(room.seed.id, None) result = _multidata_cache.get(room.seed.id, None)
if result: if result:
@ -311,7 +314,7 @@ def get_static_room_data(room: Room):
seed_checks_in_area["Total"] = 249 seed_checks_in_area["Total"] = 249
player_checks_in_area = {playernumber: {areaname: len(multidata["checks_in_area"][playernumber][areaname]) player_checks_in_area = {playernumber: {areaname: len(multidata["checks_in_area"][playernumber][areaname])
if areaname != "Total" else multidata["checks_in_area"][playernumber]["Total"] if areaname != "Total" else multidata["checks_in_area"][playernumber]["Total"]
for areaname in ordered_areas} for areaname in ordered_areas}
for playernumber in range(1, len(names[0]) + 1)} for playernumber in range(1, len(names[0]) + 1)}
player_location_to_area = {playernumber: get_location_table(multidata["checks_in_area"][playernumber]) player_location_to_area = {playernumber: get_location_table(multidata["checks_in_area"][playernumber])
@ -373,9 +376,9 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
for location in locations_checked: for location in locations_checked:
if location in player_locations: if location in player_locations:
item, recipient = player_locations[location] item, recipient = player_locations[location]
if recipient == tracked_player: # a check done for the tracked player if recipient == tracked_player: # a check done for the tracked player
attribute_item_solo(inventory, item) attribute_item_solo(inventory, item)
if ms_player == tracked_player: # a check done by the tracked player if ms_player == tracked_player: # a check done by the tracked player
checks_done[location_to_area[location]] += 1 checks_done[location_to_area[location]] += 1
checks_done["Total"] += 1 checks_done["Total"] += 1
if games[tracked_player] == "A Link to the Past": if games[tracked_player] == "A Link to the Past":
@ -403,28 +406,28 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
# Determine which icon to use # Determine which icon to use
display_data = {} display_data = {}
for item_name, item_id in progressive_items.items(): for item_name, item_id in progressive_items.items():
level = min(inventory[item_id], len(progressive_names[item_name])-1) level = min(inventory[item_id], len(progressive_names[item_name]) - 1)
display_name = progressive_names[item_name][level] display_name = progressive_names[item_name][level]
acquired = True acquired = True
if not display_name: if not display_name:
acquired = False acquired = False
display_name = progressive_names[item_name][level+1] display_name = progressive_names[item_name][level + 1]
base_name = item_name.split(maxsplit=1)[1].lower() base_name = item_name.split(maxsplit=1)[1].lower()
display_data[base_name+"_acquired"] = acquired display_data[base_name + "_acquired"] = acquired
display_data[base_name+"_url"] = icons[display_name] display_data[base_name + "_url"] = icons[display_name]
# The single player tracker doesn't care about overworld, underworld, and total checks. Maybe it should? # The single player tracker doesn't care about overworld, underworld, and total checks. Maybe it should?
sp_areas = ordered_areas[2:15] sp_areas = ordered_areas[2:15]
return render_template("lttpTracker.html", inventory=inventory, return render_template("lttpTracker.html", inventory=inventory,
player_name=player_name, room=room, icons=icons, checks_done=checks_done, player_name=player_name, room=room, icons=icons, checks_done=checks_done,
checks_in_area=seed_checks_in_area[tracked_player], acquired_items={lookup_any_item_id_to_name[id] for id in inventory}, checks_in_area=seed_checks_in_area[tracked_player],
acquired_items={lookup_any_item_id_to_name[id] for id in inventory},
small_key_ids=small_key_ids, big_key_ids=big_key_ids, sp_areas=sp_areas, small_key_ids=small_key_ids, big_key_ids=big_key_ids, sp_areas=sp_areas,
key_locations=player_small_key_locations[tracked_player], key_locations=player_small_key_locations[tracked_player],
big_key_locations=player_big_key_locations[tracked_player], big_key_locations=player_big_key_locations[tracked_player],
**display_data) **display_data)
elif games[tracked_player] == "Minecraft": elif games[tracked_player] == "Minecraft":
minecraft_icons = { minecraft_icons = {
"Wooden Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d2/Wooden_Pickaxe_JE3_BE3.png", "Wooden Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d2/Wooden_Pickaxe_JE3_BE3.png",
"Stone Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/c4/Stone_Pickaxe_JE2_BE2.png", "Stone Pickaxe": "https://static.wikia.nocookie.net/minecraft_gamepedia/images/c/c4/Stone_Pickaxe_JE2_BE2.png",
@ -455,14 +458,14 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
} }
minecraft_location_ids = { minecraft_location_ids = {
"Story": [42073, 42080, 42081, 42023, 42082, 42027, 42039, 42085, 42002, 42009, 42010, "Story": [42073, 42080, 42081, 42023, 42082, 42027, 42039, 42085, 42002, 42009, 42010,
42070, 42041, 42049, 42090, 42004, 42031, 42025, 42029, 42051, 42077, 42089], 42070, 42041, 42049, 42090, 42004, 42031, 42025, 42029, 42051, 42077, 42089],
"Nether": [42017, 42044, 42069, 42058, 42034, 42060, 42066, 42076, 42064, 42071, 42021, "Nether": [42017, 42044, 42069, 42058, 42034, 42060, 42066, 42076, 42064, 42071, 42021,
42062, 42008, 42061, 42033, 42011, 42006, 42019, 42000, 42040, 42001, 42015, 42014], 42062, 42008, 42061, 42033, 42011, 42006, 42019, 42000, 42040, 42001, 42015, 42014],
"The End": [42052, 42005, 42012, 42032, 42030, 42042, 42018, 42038, 42046], "The End": [42052, 42005, 42012, 42032, 42030, 42042, 42018, 42038, 42046],
"Adventure": [42047, 42086, 42087, 42050, 42059, 42055, 42072, 42003, 42035, 42016, 42020, "Adventure": [42047, 42086, 42087, 42050, 42059, 42055, 42072, 42003, 42035, 42016, 42020,
42048, 42054, 42068, 42043, 42074, 42075, 42024, 42026, 42037, 42045, 42056, 42088], 42048, 42054, 42068, 42043, 42074, 42075, 42024, 42026, 42037, 42045, 42056, 42088],
"Husbandry": [42065, 42067, 42078, 42022, 42007, 42079, 42013, 42028, "Husbandry": [42065, 42067, 42078, 42022, 42007, 42079, 42013, 42028,
42036, 42057, 42063, 42053, 42083, 42084, 42091] 42036, 42057, 42063, 42053, 42083, 42084, 42091]
} }
@ -482,10 +485,10 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
"Progressive Resource Crafting": ["Iron Ingot", "Iron Ingot", "Block of Iron"] "Progressive Resource Crafting": ["Iron Ingot", "Iron Ingot", "Block of Iron"]
} }
for item_name, item_id in progressive_items.items(): for item_name, item_id in progressive_items.items():
level = min(inventory[item_id], len(progressive_names[item_name])-1) level = min(inventory[item_id], len(progressive_names[item_name]) - 1)
display_name = progressive_names[item_name][level] display_name = progressive_names[item_name][level]
base_name = item_name.split(maxsplit=1)[1].lower().replace(' ', '_') base_name = item_name.split(maxsplit=1)[1].lower().replace(' ', '_')
display_data[base_name+"_url"] = minecraft_icons[display_name] display_data[base_name + "_url"] = minecraft_icons[display_name]
# Multi-items # Multi-items
multi_items = { multi_items = {
@ -496,7 +499,7 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
base_name = item_name.split()[-1].lower() base_name = item_name.split()[-1].lower()
count = inventory[item_id] count = inventory[item_id]
if count >= 0: if count >= 0:
display_data[base_name+"_count"] = count display_data[base_name + "_count"] = count
# Victory condition # Victory condition
game_state = multisave.get("client_game_state", {}).get((tracked_team, tracked_player), 0) game_state = multisave.get("client_game_state", {}).get((tracked_team, tracked_player), 0)
@ -505,16 +508,18 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
# Turn location IDs into advancement tab counts # Turn location IDs into advancement tab counts
checked_locations = multisave.get("location_checks", {}).get((tracked_team, tracked_player), set()) checked_locations = multisave.get("location_checks", {}).get((tracked_team, tracked_player), set())
lookup_name = lambda id: lookup_any_location_id_to_name[id] lookup_name = lambda id: lookup_any_location_id_to_name[id]
location_info = {tab_name: {lookup_name(id): (id in checked_locations) for id in tab_locations} location_info = {tab_name: {lookup_name(id): (id in checked_locations) for id in tab_locations}
for tab_name, tab_locations in minecraft_location_ids.items()} for tab_name, tab_locations in minecraft_location_ids.items()}
checks_done = {tab_name: len([id for id in tab_locations if id in checked_locations]) checks_done = {tab_name: len([id for id in tab_locations if id in checked_locations])
for tab_name, tab_locations in minecraft_location_ids.items()} for tab_name, tab_locations in minecraft_location_ids.items()}
checks_done['Total'] = len(checked_locations) checks_done['Total'] = len(checked_locations)
checks_in_area = {tab_name: len(tab_locations) for tab_name, tab_locations in minecraft_location_ids.items()} checks_in_area = {tab_name: len(tab_locations) for tab_name, tab_locations in minecraft_location_ids.items()}
checks_in_area['Total'] = sum(checks_in_area.values()) checks_in_area['Total'] = sum(checks_in_area.values())
return render_template("minecraftTracker.html", return render_template("minecraftTracker.html",
inventory=inventory, icons=minecraft_icons, acquired_items={lookup_any_item_id_to_name[id] for id in inventory if id in lookup_any_item_id_to_name}, inventory=inventory, icons=minecraft_icons,
acquired_items={lookup_any_item_id_to_name[id] for id in inventory if
id in lookup_any_item_id_to_name},
player=tracked_player, team=tracked_team, room=room, player_name=player_name, player=tracked_player, team=tracked_team, room=room, player_name=player_name,
checks_done=checks_done, checks_in_area=checks_in_area, location_info=location_info, checks_done=checks_done, checks_in_area=checks_in_area, location_info=location_info,
**display_data) **display_data)
@ -522,14 +527,19 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
else: else:
checked_locations = multisave.get("location_checks", {}).get((tracked_team, tracked_player), set()) checked_locations = multisave.get("location_checks", {}).get((tracked_team, tracked_player), set())
player_received_items = {} player_received_items = {}
for order_index, networkItem in enumerate(multisave.get('received_items', {}).get((tracked_team, tracked_player), [])): for order_index, networkItem in enumerate(
player_received_items[networkItem.item] = order_index + 1 multisave.get('received_items', {}).get((tracked_team, tracked_player), []),
start=1
):
player_received_items[networkItem.item] = order_index
return render_template("genericTracker.html", return render_template("genericTracker.html",
inventory=inventory, inventory=inventory,
player=tracked_player, team=tracked_team, room=room, player_name=player_name, player=tracked_player, team=tracked_team, room=room, player_name=player_name,
checked_locations=checked_locations, not_checked_locations=set(locations[tracked_player])-checked_locations, checked_locations=checked_locations,
not_checked_locations=set(locations[tracked_player]) - checked_locations,
received_items=player_received_items) received_items=player_received_items)
@app.route('/tracker/<suuid:tracker>') @app.route('/tracker/<suuid:tracker>')
@cache.memoize(timeout=60) # multisave is currently created at most every minute @cache.memoize(timeout=60) # multisave is currently created at most every minute
def getTracker(tracker: UUID): def getTracker(tracker: UUID):
@ -605,4 +615,4 @@ def getTracker(tracker: UUID):
checks_in_area=seed_checks_in_area, activity_timers=activity_timers, checks_in_area=seed_checks_in_area, activity_timers=activity_timers,
key_locations=group_key_locations, small_key_ids=small_key_ids, big_key_ids=big_key_ids, key_locations=group_key_locations, small_key_ids=small_key_ids, big_key_ids=big_key_ids,
video=video, big_key_locations=group_big_key_locations, video=video, big_key_locations=group_big_key_locations,
hints=hints, long_player_names = long_player_names) hints=hints, long_player_names=long_player_names)