From 8f605936820e70f090c84c0f36c4139f21b9454a Mon Sep 17 00:00:00 2001 From: dysonreturns <22199434-dysonreturns@users.noreply.gitlab.com> Date: Fri, 17 Jan 2025 12:32:39 -0800 Subject: [PATCH] make sc2_version accepted by old join and host methods --- sc2/main.py | 5 +++-- sc2/sc2process.py | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sc2/main.py b/sc2/main.py index aa590d92..47546cc8 100644 --- a/sc2/main.py +++ b/sc2/main.py @@ -415,8 +415,9 @@ async def _join_game( portconfig, save_replay_as=None, game_time_limit=None, + sc2_version=None, ): - async with SC2Process(fullscreen=players[1].fullscreen) as server: + async with SC2Process(fullscreen=players[1].fullscreen, sc2_version=sc2_version) as server: await server.ping() client = Client(server._ws) @@ -466,7 +467,7 @@ def run_game(map_settings, players, **kwargs) -> Result | list[Result | None]: Returns a list of two Result enums if the game was "Human vs Bot" or "Bot vs Bot". """ if sum(isinstance(p, (Human, Bot)) for p in players) > 1: - host_only_args = ["save_replay_as", "rgb_render_config", "random_seed", "sc2_version", "disable_fog"] + host_only_args = ["save_replay_as", "rgb_render_config", "random_seed", "disable_fog"] join_kwargs = {k: v for k, v in kwargs.items() if k not in host_only_args} portconfig = Portconfig() diff --git a/sc2/sc2process.py b/sc2/sc2process.py index ad8c0dae..2ff868d2 100644 --- a/sc2/sc2process.py +++ b/sc2/sc2process.py @@ -141,11 +141,23 @@ def find_data_hash(self, target_sc2_version: str) -> str | None: return version["data-hash"] return None + def find_base_dir(self, target_sc2_version: str) -> str | None: + """ Returns the base directory from the matching version string. """ + version: dict + for version in self.versions: + if version["label"] == target_sc2_version: + return "Base"+str(version["base-version"]) + return None + def _launch(self): + if self._sc2_version and not self._base_build: + self._base_build = self.find_base_dir(self._sc2_version) + if self._base_build: executable = str(paths.latest_executeble(Paths.BASE / "Versions", self._base_build)) else: executable = str(Paths.EXECUTABLE) + if self._port is None: self._port = portpicker.pick_unused_port() self._used_portpicker = True