From b4ad112ea61c75e417a776bfda4492deae118703 Mon Sep 17 00:00:00 2001 From: romue Date: Wed, 9 Jun 2021 16:02:34 +0200 Subject: [PATCH] adjusted fps in simple_factory.py --- environments/factory/renderer.py | 30 +++++++++++++++----------- environments/factory/simple_factory.py | 4 ++-- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/environments/factory/renderer.py b/environments/factory/renderer.py index 31ce14d..b134687 100644 --- a/environments/factory/renderer.py +++ b/environments/factory/renderer.py @@ -13,6 +13,7 @@ class Entity(NamedTuple): value: float = 1 value_operation: str = 'none' state: str = None + id: int = 0 class Renderer: @@ -21,7 +22,7 @@ class Renderer: AGENT_VIEW_COLOR = (9, 132, 227) ASSETS = Path(__file__).parent / 'assets' - def __init__(self, grid_w=16, grid_h=16, cell_size=40, fps=8, grid_lines=True, view_radius=2): + def __init__(self, grid_w=16, grid_h=16, cell_size=40, fps=7, grid_lines=True, view_radius=2): self.grid_h = grid_h self.grid_w = grid_w self.cell_size = cell_size @@ -37,7 +38,8 @@ class Renderer: self.fill_bg() now = time.time() - font1 = pygame.font.Font(None, 24) + self.font = pygame.font.Font(None, 20) + self.font.set_bold(1.0) print('Loading System font with pygame.font.Font took', time.time() - now) @@ -83,19 +85,23 @@ class Renderer: for entity in entities: bp = self.blit_params(entity) blits.append(bp) - if 'agent' in entity.name and self.view_radius > 0: - visibility_rect = bp['dest'].inflate( - (self.view_radius*2)*self.cell_size, (self.view_radius*2)*self.cell_size - ) - shape_surf = pygame.Surface(visibility_rect.size, pygame.SRCALPHA) - pygame.draw.rect(shape_surf, self.AGENT_VIEW_COLOR, shape_surf.get_rect()) - shape_surf.set_alpha(64) - blits.appendleft(dict(source=shape_surf, dest=visibility_rect)) + if entity.name.lower() == 'agent': + if self.view_radius > 0: + visibility_rect = bp['dest'].inflate( + (self.view_radius*2)*self.cell_size, (self.view_radius*2)*self.cell_size + ) + shape_surf = pygame.Surface(visibility_rect.size, pygame.SRCALPHA) + pygame.draw.rect(shape_surf, self.AGENT_VIEW_COLOR, shape_surf.get_rect()) + shape_surf.set_alpha(64) + blits.appendleft(dict(source=shape_surf, dest=visibility_rect)) if entity.state != 'blank': agent_state_blits = self.blit_params( - Entity(entity.state, (entity.pos[0]+0.11, entity.pos[1]), 0.48, 'scale') + Entity(entity.state, (entity.pos[0]+0.12, entity.pos[1]), 0.48, 'scale') ) - blits.append(agent_state_blits) + textsurface = self.font.render(str(entity.id), False, (0, 0, 0)) + text_blit = dict(source=textsurface, dest=(bp['dest'].center[0]-.07*self.cell_size, + bp['dest'].center[1])) + blits += [agent_state_blits, text_blit] for blit in blits: self.screen.blit(**blit) diff --git a/environments/factory/simple_factory.py b/environments/factory/simple_factory.py index 0434f98..21b45ab 100644 --- a/environments/factory/simple_factory.py +++ b/environments/factory/simple_factory.py @@ -46,7 +46,7 @@ class SimpleFactory(BaseFactory): if not self._renderer: # lazy init height, width = self._state.shape[1:] - self._renderer = Renderer(width, height, view_radius=self.pomdp_radius, fps=9) + self._renderer = Renderer(width, height, view_radius=self.pomdp_radius, fps=5) dirt = [Entity('dirt', [x, y], min(0.15 + self._state[DIRT_INDEX, x, y], 1.5), 'scale') for x, y in np.argwhere(self._state[DIRT_INDEX] > h.IS_FREE_CELL)] @@ -67,7 +67,7 @@ class SimpleFactory(BaseFactory): agents = [] for i, agent in enumerate(self._agent_states): name, state = asset_str(agent) - agents.append(Entity(name, agent.pos, 1, 'none', state)) + agents.append(Entity(name, agent.pos, 1, 'none', state, i+1)) self._renderer.render(dirt+walls+agents) def spawn_dirt(self) -> None: