def _draw_mods(self, player: Player) -> None: for idx, loc in enumerate(self.mod_rects): r = self.mod_rects[loc] col = settings.HUDDARK if self.selected_mod == idx: col = settings.RED pg.draw.rect(self.screen, col, r, 2) for idx, loc in enumerate(player.inventory.active_mods): mod = player.inventory.active_mods[loc] img = mod.equipped_image img = pg.transform.scale(img, (50, 50)) img = self._draw_cooldown(mod.ability.cooldown_fraction, img) img_rect = img.get_rect() img_rect.center = self.mod_rects[loc].center self.screen.blit(img, img_rect) title_font = images.get_font(images.ZOMBIE_FONT) draw_text(self.screen, str(idx + 1), title_font, 20, settings.WHITE, img_rect.x, img_rect.y, align="center") if mod.stackable: self._draw_mod_ammo(img_rect, mod, title_font)
def _draw_backpack(self, player: Player) -> None: if self._backpack_hidden: return self._draw_backpack_base() for idx, rect in enumerate(self.backpack_rects): color = settings.HUDDARK if self.selected_item == idx: color = settings.RED pg.draw.rect(self.screen, color, rect, 2) for idx, item_mod in enumerate(player.inventory.backpack): if not player.inventory.backpack.slot_occupied(idx): continue rect = self.backpack_rects[idx] img = item_mod.backpack_image img_rect = img.get_rect() img_rect.center = rect.center self.screen.blit(img, img_rect) if item_mod.stackable: self._draw_mod_ammo(img_rect, item_mod, images.get_font(images.ZOMBIE_FONT))
def _pause_game(self) -> None: title_font = images.get_font(images.ZOMBIE_FONT) self.screen.blit(self._dim_screen, (0, 0)) draw_text(self.screen, "Paused", title_font, 105, settings.RED, settings.WIDTH / 2, settings.HEIGHT / 2, align="center") pg.display.flip() self._wait_for_key() self._paused = False
def draw(self) -> None: self.screen.fill(settings.BLACK) title_font = images.get_font(images.IMPACTED_FONT) num_lines = len(self._text_lines) + 1 for idx, text in enumerate(self._text_lines, 0): draw_utils.draw_text(self.screen, text, title_font, 24, settings.WHITE, settings.WIDTH / 2, settings.HEIGHT * (idx + 1) / num_lines, align="center") pg.display.flip()
def _game_over(self) -> None: self.screen.fill(settings.BLACK) title_font = images.get_font(images.ZOMBIE_FONT) draw_text(self.screen, "GAME OVER", title_font, 100, settings.RED, settings.WIDTH / 2, settings.HEIGHT / 2, align="center") draw_text(self.screen, "Press a key to start", title_font, 75, settings.WHITE, settings.WIDTH / 2, settings.HEIGHT * 3 / 4, align="center") pg.display.flip()
def __init__(self) -> None: super().__init__() dim_screen = pg.Surface(self.screen.get_size()).convert_alpha() dim_screen.fill((0, 0, 0, 180)) self.camera: Camera = Camera(800, 600) self._hud = HUD() self._draw_debug = False self._night = False self.draw_teleport_text = False self._fog = pg.Surface((settings.WIDTH, settings.HEIGHT)) self._fog.fill(settings.NIGHT_COLOR) # lighting effect for night mode self._light_mask = images.get_image(images.LIGHT_MASK) self._light_rect = self._light_mask.get_rect() self.title_font = images.get_font(images.ZOMBIE_FONT)
def __init__(self, party: Party) -> None: super().__init__() dim_screen = pg.Surface(self.screen.get_size()).convert_alpha() dim_screen.fill((0, 0, 0, 180)) self.camera: Camera = Camera(800, 600) self._draw_debug = False self.draw_teleport_text = False self._fog = pg.Surface((settings.WIDTH, settings.HEIGHT)) self._fog.fill(settings.NIGHT_COLOR) # lighting effect for night mode self._light_mask = images.get_image(images.LIGHT_MASK) self._light_rect = self._light_mask.get_rect() self.title_font = images.get_font(images.ZOMBIE_FONT) self._party = party self._initiative_tracker = InitiativeTracker(party) self._move_options: List[pg.Surface] = []
def _draw_teleport_text(self) -> None: font = images.get_font(images.ZOMBIE_FONT) draw_utils.draw_text(self.screen, 'Press T to continue', font, 16, settings.GREEN, 16, 8)