Add actual tracking of player small keys/big keys

This commit is contained in:
CaitSith2 2021-03-06 13:59:04 -08:00
parent ed77f93b6f
commit a86238d741
2 changed files with 22 additions and 8 deletions

View File

@ -9,7 +9,7 @@
border-top-left-radius: 4px; border-top-left-radius: 4px;
border-top-right-radius: 4px; border-top-right-radius: 4px;
padding: 3px 3px 10px; padding: 3px 3px 10px;
width: 260px; width: 284px;
background-color: #42b149; background-color: #42b149;
} }
@ -37,7 +37,7 @@
} }
#location-table{ #location-table{
width: 260px; width: 284px;
border-left: 2px solid #000000; border-left: 2px solid #000000;
border-right: 2px solid #000000; border-right: 2px solid #000000;
border-bottom: 2px solid #000000; border-bottom: 2px solid #000000;
@ -61,7 +61,7 @@
} }
#location-table td.counter{ #location-table td.counter{
padding-right: 10px; padding-right: 8px;
text-align: right; text-align: right;
} }

View File

@ -242,14 +242,18 @@ for item in tracking_names:
small_key_ids = {} small_key_ids = {}
big_key_ids = {} big_key_ids = {}
ids_small_key = {}
ids_big_key = {}
for item_name, data in Items.item_table.items(): for item_name, data in Items.item_table.items():
if "Key" in item_name: if "Key" in item_name:
area = item_name.split("(")[1][:-1] area = item_name.split("(")[1][:-1]
if "Small" in item_name: if "Small" in item_name:
small_key_ids[area] = data[2] small_key_ids[area] = data[2]
ids_small_key[data[2]] = area
else: else:
big_key_ids[area] = data[2] big_key_ids[area] = data[2]
ids_big_key[data[2]] = area
from MultiServer import get_item_name_from_id from MultiServer import get_item_name_from_id
@ -320,7 +324,16 @@ def get_static_room_data(room: Room):
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"][f'{playernumber}']) player_location_to_area = {playernumber: get_location_table(multidata["checks_in_area"][f'{playernumber}'])
for playernumber in range(1, len(names[0]) + 1)} for playernumber in range(1, len(names[0]) + 1)}
result = locations, names, use_door_tracker, player_checks_in_area, player_location_to_area
player_big_key_locations = {playernumber: set() for playernumber in range(1, len(names[0]) + 1)}
player_small_key_locations = {playernumber: set() for playernumber in range(1, len(names[0]) + 1)}
for _, (item_id, item_player) in multidata["locations"]:
if item_id in ids_big_key:
player_big_key_locations[item_player].add(ids_big_key[item_id])
if item_id in ids_small_key:
player_small_key_locations[item_player].add(ids_small_key[item_id])
result = locations, names, use_door_tracker, player_checks_in_area, player_location_to_area, player_big_key_locations, player_small_key_locations
_multidata_cache[room.seed.id] = result _multidata_cache[room.seed.id] = result
return result return result
@ -337,7 +350,7 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
abort(404) abort(404)
# Collect seed information and pare it down to a single player # Collect seed information and pare it down to a single player
locations, names, use_door_tracker, seed_checks_in_area, player_location_to_area = get_static_room_data(room) locations, names, use_door_tracker, seed_checks_in_area, player_location_to_area, player_big_key_locations, player_small_key_locations = get_static_room_data(room)
player_name = names[tracked_team][tracked_player - 1] player_name = names[tracked_team][tracked_player - 1]
seed_checks_in_area = seed_checks_in_area[tracked_player] seed_checks_in_area = seed_checks_in_area[tracked_player]
location_to_area = player_location_to_area[tracked_player] location_to_area = player_location_to_area[tracked_player]
@ -462,8 +475,9 @@ def getPlayerTracker(tracker: UUID, tracked_team: int, tracked_player: int):
sword_url=sword_url, sword_acquired=sword_acquired, gloves_url=gloves_url, sword_url=sword_url, sword_acquired=sword_acquired, gloves_url=gloves_url,
gloves_acquired=gloves_acquired, bow_url=bow_url, bow_acquired=bow_acquired, gloves_acquired=gloves_acquired, bow_url=bow_url, bow_acquired=bow_acquired,
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=key_locations, big_key_locations=big_key_locations, mail_url=mail_url, key_locations=player_small_key_locations[tracked_player],
shield_url=shield_url, shield_acquired=shield_acquired) big_key_locations=player_big_key_locations[tracked_player],
mail_url=mail_url, shield_url=shield_url, shield_acquired=shield_acquired)
@app.route('/tracker/<suuid:tracker>') @app.route('/tracker/<suuid:tracker>')
@ -472,7 +486,7 @@ def getTracker(tracker: UUID):
room = Room.get(tracker=tracker) room = Room.get(tracker=tracker)
if not room: if not room:
abort(404) abort(404)
locations, names, use_door_tracker, seed_checks_in_area, player_location_to_area = get_static_room_data(room) locations, names, use_door_tracker, seed_checks_in_area, player_location_to_area, player_big_key_locations, player_small_key_locations = get_static_room_data(room)
inventory = {teamnumber: {playernumber: collections.Counter() for playernumber in range(1, len(team) + 1)} inventory = {teamnumber: {playernumber: collections.Counter() for playernumber in range(1, len(team) + 1)}
for teamnumber, team in enumerate(names)} for teamnumber, team in enumerate(names)}