1 """ Roach up display. """
4 from pygame.surface import Surface
5 from .actors.surf import SurfActor
6 from .serums import default_serums
9 class HudActor(SurfActor):
10 def __init__(self, stats, **kw):
13 super().__init__(surf=self._surf, **kw)
15 def _build_bar(self, value, *args, **kw):
16 icon = default_serums.assemble_icon(*args, **kw)
17 rect = icon.get_rect()
18 value = math.ceil(value)
19 surf = Surface((rect.w, rect.h * value)).convert_alpha()
20 surf.fill((255, 255, 255, 0))
21 x, y = 0, (surf.get_rect().h - rect.h)
22 for i in range(value):
23 surf.blit(icon, (x, y))
27 def _rebuild_hud_surf(self):
30 self._build_bar(stats.smart, "smart"),
31 self._build_bar(stats.fast, "fast"),
32 self._build_bar(stats.strong, "strong"),
33 self._build_bar(stats.health / 5, "strong", color="health"),
35 rects = [b.get_rect() for b in bars]
36 h, w = max(r.h for r in rects), sum(r.w for r in rects)
37 x = (w - rects[0].w) / 2
38 surf = Surface((w, h)).convert_alpha()
39 surf.fill((255, 255, 255, 0))
40 for i, bar in enumerate(bars):
41 surf.blit(bar, (x, h - rects[i].h))
50 def stats(self, stats):
51 if self._stats == stats:
54 self.surf = self._rebuild_hud_surf()