From c64135f4c2e29a5f325e2383a7d37b9f68ae6d83 Mon Sep 17 00:00:00 2001 From: ThisBirchWood Date: Wed, 19 Mar 2025 19:27:12 +0100 Subject: [PATCH] REFACTOR: abstract text rendering away from main renderer --- .../{player_render.py => player_renderer.py} | 3 +-- render/renderer.py | 8 ++++--- render/text_renderer.py | 21 +++++++++++++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) rename render/{player_render.py => player_renderer.py} (98%) create mode 100644 render/text_renderer.py diff --git a/render/player_render.py b/render/player_renderer.py similarity index 98% rename from render/player_render.py rename to render/player_renderer.py index 68f8226..8ff86fc 100644 --- a/render/player_render.py +++ b/render/player_renderer.py @@ -2,7 +2,7 @@ import pygame, math from models.match import Match from utils.utils import mapped_value -class PlayerRender: +class PlayerRenderer: def __init__(self, screen, match: Match, map_coord_controller, player_font): self.screen = screen self.match = match @@ -35,7 +35,6 @@ class PlayerRender: x, y = self.map_coord_controller.map_to_screen(player.x, player.y) pygame.draw.rect(self.screen, self.health_bar_background, (x-10, y-10, 20, 5)) pygame.draw.rect(self.screen, self.health_bar_foreground, (x-10, y-10, mapped_value(player.health, 0, 100, 0, 20), 5)) - def render(self): for team in self.match.get_teams(): diff --git a/render/renderer.py b/render/renderer.py index 1ed2798..74e2b2d 100644 --- a/render/renderer.py +++ b/render/renderer.py @@ -2,7 +2,8 @@ import pygame from widgets.slider import HorizontalSlider from models.match import Match from controllers.map_coord_controller import MapCoordController -from render.player_render import PlayerRender +from render.player_renderer import PlayerRenderer +from render.text_renderer import TextRenderer from utils.json_object import JSONObject class Renderer: @@ -40,7 +41,8 @@ class Renderer: self.slider = HorizontalSlider(self.screen, 50, 650, self.screen.get_width()-100, 20, 1, self.match.max_tick) - self.player_render = PlayerRender(self.screen, self.match, self.map_coord_controller, self.small_font) + self.player_render = PlayerRenderer(self.screen, self.match, self.map_coord_controller, self.small_font) + self.text_render = TextRenderer(self.screen, self.match) def render_text(self): # Draw current tick @@ -73,5 +75,5 @@ class Renderer: self.map_coord_controller.update_screen_size(self.screen.get_width(), self.screen.get_height()) self.render_slider() self.render_map() - self.render_text() + self.text_render.render() self.player_render.render() \ No newline at end of file diff --git a/render/text_renderer.py b/render/text_renderer.py new file mode 100644 index 0000000..01041c8 --- /dev/null +++ b/render/text_renderer.py @@ -0,0 +1,21 @@ +import pygame + +class TextRenderer: + def __init__(self, screen, match): + self.screen = screen + self.font = pygame.font.Font(None, 36) + self.match = match + + self.colour = (255, 255, 255) + + def _render_current_tick(self, match_tick, max_tick): + text = self.font.render(f"Tick: {match_tick}/{max_tick}", True, self.colour) + self.screen.blit(text, (10, 10)) + + def _render_team_scores(self, team_1_score, team_2_score): + text = self.font.render(f"Score: {team_1_score} - {team_2_score}", True, self.colour) + self.screen.blit(text, (10, 40)) + + def render(self): + self._render_current_tick(self.match.tick, self.match.max_tick) + self._render_team_scores(self.match.team_1.score, self.match.team_2.score)