Clients: change scouted locations_info to full NetworkItem (#324)

This commit is contained in:
Fabian Dill 2022-03-21 15:26:38 +01:00 committed by GitHub
parent 7df12930ef
commit d4ff653937
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 10 deletions

View File

@ -149,7 +149,7 @@ class CommonContext():
self.items_received = []
self.missing_locations: typing.Set[int] = set()
self.checked_locations: typing.Set[int] = set() # server state
self.locations_info = {}
self.locations_info: typing.Dict[int, NetworkItem] = {}
self.input_queue = asyncio.Queue()
self.input_requests = 0
@ -520,8 +520,7 @@ async def process_server_cmd(ctx: CommonContext, args: dict):
elif cmd == 'LocationInfo':
for item in [NetworkItem(*item) for item in args['locations']]:
if item.location not in ctx.locations_info:
ctx.locations_info[item.location] = (item.item, item.player)
ctx.locations_info[item.location] = item
ctx.watcher_event.set()
elif cmd == "RoomUpdate":

View File

@ -854,7 +854,7 @@ async def track_locations(ctx: Context, roomid, roomdata):
if int(b) and location not in ctx.locations_checked:
new_check(location)
if location in ctx.checked_locations and location not in ctx.locations_checked \
and location in ctx.locations_info and ctx.locations_info[location][1] != ctx.slot:
and location in ctx.locations_info and ctx.locations_info[location].player != ctx.slot:
if not int(b):
shop_data[cnt] += 1
shop_data_changed = True
@ -882,7 +882,7 @@ async def track_locations(ctx: Context, roomid, roomdata):
uw_begin = min(uw_begin, roomid)
uw_end = max(uw_end, roomid + 1)
if location_id in ctx.checked_locations and location_id not in ctx.locations_checked and \
location_id in ctx.locations_info and ctx.locations_info[location_id][1] != ctx.slot:
location_id in ctx.locations_info and ctx.locations_info[location_id].player != ctx.slot:
uw_begin = min(uw_begin, roomid)
uw_end = max(uw_end, roomid + 1)
uw_checked[location_id] = (roomid, mask)
@ -914,7 +914,7 @@ async def track_locations(ctx: Context, roomid, roomdata):
ow_begin = min(ow_begin, screenid)
ow_end = max(ow_end, screenid + 1)
if location_id in ctx.checked_locations and location_id in ctx.locations_info \
and ctx.locations_info[location_id][1] != ctx.slot:
and ctx.locations_info[location_id].player != ctx.slot:
ow_checked[location_id] = screenid
if ow_begin < ow_end:
@ -938,7 +938,7 @@ async def track_locations(ctx: Context, roomid, roomdata):
if npc_value & mask != 0 and location_id not in ctx.locations_checked:
new_check(location_id)
if location_id in ctx.checked_locations and location_id not in ctx.locations_checked \
and location_id in ctx.locations_info and ctx.locations_info[location_id][1] != ctx.slot:
and location_id in ctx.locations_info and ctx.locations_info[location_id].player != ctx.slot:
npc_value |= mask
npc_value_changed = True
if npc_value_changed:
@ -955,7 +955,7 @@ async def track_locations(ctx: Context, roomid, roomdata):
if misc_data[offset - 0x3c6] & mask != 0 and location_id not in ctx.locations_checked:
new_check(location_id)
if location_id in ctx.checked_locations and location_id not in ctx.locations_checked \
and location_id in ctx.locations_info and ctx.locations_info[location_id][1] != ctx.slot:
and location_id in ctx.locations_info and ctx.locations_info[location_id].player != ctx.slot:
misc_data_changed = True
misc_data[offset - 0x3c6] |= mask
if misc_data_changed:
@ -1080,9 +1080,9 @@ async def game_watcher(ctx: Context):
snes_buffered_write(ctx, SCOUTREPLY_LOCATION_ADDR,
bytes([scout_location]))
snes_buffered_write(ctx, SCOUTREPLY_ITEM_ADDR,
bytes([ctx.locations_info[scout_location][0]]))
bytes([ctx.locations_info[scout_location].item]))
snes_buffered_write(ctx, SCOUTREPLY_PLAYER_ADDR,
bytes([min(ROM_PLAYER_LIMIT, ctx.locations_info[scout_location][1])]))
bytes([min(ROM_PLAYER_LIMIT, ctx.locations_info[scout_location].player)]))
await snes_flush_writes(ctx)