CommonClient: remove Datapackage Version handling (#4487)

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
This commit is contained in:
qwint
2025-05-02 18:31:40 -05:00
committed by GitHub
parent 68c350b4c0
commit f4690e296d

View File

@@ -341,7 +341,6 @@ class CommonContext:
self.item_names = self.NameLookupDict(self, "item") self.item_names = self.NameLookupDict(self, "item")
self.location_names = self.NameLookupDict(self, "location") self.location_names = self.NameLookupDict(self, "location")
self.versions = {}
self.checksums = {} self.checksums = {}
self.jsontotextparser = JSONtoTextParser(self) self.jsontotextparser = JSONtoTextParser(self)
@@ -556,7 +555,6 @@ class CommonContext:
# DataPackage # DataPackage
async def prepare_data_package(self, relevant_games: typing.Set[str], async def prepare_data_package(self, relevant_games: typing.Set[str],
remote_date_package_versions: typing.Dict[str, int],
remote_data_package_checksums: typing.Dict[str, str]): remote_data_package_checksums: typing.Dict[str, str]):
"""Validate that all data is present for the current multiworld. """Validate that all data is present for the current multiworld.
Download, assimilate and cache missing data from the server.""" Download, assimilate and cache missing data from the server."""
@@ -565,33 +563,26 @@ class CommonContext:
needed_updates: typing.Set[str] = set() needed_updates: typing.Set[str] = set()
for game in relevant_games: for game in relevant_games:
if game not in remote_date_package_versions and game not in remote_data_package_checksums: if game not in remote_data_package_checksums:
continue continue
remote_version: int = remote_date_package_versions.get(game, 0)
remote_checksum: typing.Optional[str] = remote_data_package_checksums.get(game) remote_checksum: typing.Optional[str] = remote_data_package_checksums.get(game)
if remote_version == 0 and not remote_checksum: # custom data package and no checksum for this game if not remote_checksum: # custom data package and no checksum for this game
needed_updates.add(game) needed_updates.add(game)
continue continue
cached_version: int = self.versions.get(game, 0)
cached_checksum: typing.Optional[str] = self.checksums.get(game) cached_checksum: typing.Optional[str] = self.checksums.get(game)
# no action required if cached version is new enough # no action required if cached version is new enough
if (not remote_checksum and (remote_version > cached_version or remote_version == 0)) \ if remote_checksum != cached_checksum:
or remote_checksum != cached_checksum:
local_version: int = network_data_package["games"].get(game, {}).get("version", 0)
local_checksum: typing.Optional[str] = network_data_package["games"].get(game, {}).get("checksum") local_checksum: typing.Optional[str] = network_data_package["games"].get(game, {}).get("checksum")
if ((remote_checksum or remote_version <= local_version and remote_version != 0) if remote_checksum == local_checksum:
and remote_checksum == local_checksum):
self.update_game(network_data_package["games"][game], game) self.update_game(network_data_package["games"][game], game)
else: else:
cached_game = Utils.load_data_package_for_checksum(game, remote_checksum) cached_game = Utils.load_data_package_for_checksum(game, remote_checksum)
cache_version: int = cached_game.get("version", 0)
cache_checksum: typing.Optional[str] = cached_game.get("checksum") cache_checksum: typing.Optional[str] = cached_game.get("checksum")
# download remote version if cache is not new enough # download remote version if cache is not new enough
if (not remote_checksum and (remote_version > cache_version or remote_version == 0)) \ if remote_checksum != cache_checksum:
or remote_checksum != cache_checksum:
needed_updates.add(game) needed_updates.add(game)
else: else:
self.update_game(cached_game, game) self.update_game(cached_game, game)
@@ -601,7 +592,6 @@ class CommonContext:
def update_game(self, game_package: dict, game: str): def update_game(self, game_package: dict, game: str):
self.item_names.update_game(game, game_package["item_name_to_id"]) self.item_names.update_game(game, game_package["item_name_to_id"])
self.location_names.update_game(game, game_package["location_name_to_id"]) self.location_names.update_game(game, game_package["location_name_to_id"])
self.versions[game] = game_package.get("version", 0)
self.checksums[game] = game_package.get("checksum") self.checksums[game] = game_package.get("checksum")
def update_data_package(self, data_package: dict): def update_data_package(self, data_package: dict):
@@ -872,9 +862,8 @@ async def process_server_cmd(ctx: CommonContext, args: dict):
logger.info(' %s (Player %d)' % (network_player.alias, network_player.slot)) logger.info(' %s (Player %d)' % (network_player.alias, network_player.slot))
# update data package # update data package
data_package_versions = args.get("datapackage_versions", {})
data_package_checksums = args.get("datapackage_checksums", {}) data_package_checksums = args.get("datapackage_checksums", {})
await ctx.prepare_data_package(set(args["games"]), data_package_versions, data_package_checksums) await ctx.prepare_data_package(set(args["games"]), data_package_checksums)
await ctx.server_auth(args['password']) await ctx.server_auth(args['password'])