From 0bff05797008cd01848ff06baf1e11b3f9515826 Mon Sep 17 00:00:00 2001 From: oojjboo <3118929-oojjboo@users.noreply.gitlab.com> Date: Tue, 12 Sep 2023 10:01:16 +0200 Subject: [PATCH] Replace relative paths with absolute ones to fix missing agent images when launching the game from an external directory. Replace string concatenation with f-strings for consistency. --- agents.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/agents.py b/agents.py index 8ff11d706..571d7ab6e 100644 --- a/agents.py +++ b/agents.py @@ -57,11 +57,12 @@ def __init__(self, agent_name, code_name, display_name, train: bool, backend: "A self.backend = backend # Load custom avatar or standard robot avatar of assigned color + game_dir = os.path.dirname(__file__) try: if isinstance(avatar_sprite_desc, bytes): self.avatar = pygame.image.load(BytesIO(avatar_sprite_desc)) else: - self.avatar = pygame.image.load(f'agent_code/{code_name}/avatar.png') + self.avatar = pygame.image.load(f'{game_dir}/agent_code/{code_name}/avatar.png') assert self.avatar.get_size() == (30, 30) except Exception as e: self.avatar = pygame.image.load(s.ASSET_DIR / f'robot_{avatar_sprite_desc}.png') @@ -70,7 +71,7 @@ def __init__(self, agent_name, code_name, display_name, train: bool, backend: "A if isinstance(avatar_sprite_desc, bytes): self.bomb_sprite = pygame.image.load(BytesIO(bomb_sprite_desc)) else: - self.bomb_sprite = pygame.image.load(f'agent_code/{code_name}/bomb.png') + self.bomb_sprite = pygame.image.load(f'{game_dir}/agent_code/{code_name}/bomb.png') assert self.bomb_sprite.get_size() == (30, 30) except Exception as e: self.bomb_sprite = pygame.image.load(s.ASSET_DIR / f'bomb_{bomb_sprite_desc}.png') @@ -201,9 +202,9 @@ def __init__(self, train, agent_name, code_name, result_queue): self.code_name = code_name self.result_queue = result_queue - self.callbacks = importlib.import_module('agent_code.' + self.code_name + '.callbacks') + self.callbacks = importlib.import_module(f'agent_code.{self.code_name}.callbacks') if train: - self.train = importlib.import_module('agent_code.' + self.code_name + '.train') + self.train = importlib.import_module(f'agent_code.{self.code_name}.train') for module_name in ["callbacks"] + (["train"] if train else []): module = getattr(self, module_name) for event_name, event_args in AGENT_API[module_name].items(): @@ -218,12 +219,11 @@ def __init__(self, train, agent_name, code_name, result_queue): self.fake_self = SimpleNamespace() self.fake_self.train = train - self.wlogger = logging.getLogger(self.agent_name + '_wrapper') self.wlogger.setLevel(s.LOG_AGENT_WRAPPER) self.fake_self.logger = logging.getLogger(self.agent_name + '_code') self.fake_self.logger.setLevel(s.LOG_AGENT_CODE) - log_dir = f'agent_code/{self.code_name}/logs/' + log_dir = f'{os.path.dirname(__file__)}/agent_code/{self.code_name}/logs/' if not os.path.exists(log_dir): os.makedirs(log_dir) handler = logging.FileHandler(f'{log_dir}{self.agent_name}.log', mode="w") handler.setLevel(logging.DEBUG)