REFACTOR: abstract text rendering away from main renderer
This commit is contained in:
@@ -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():
|
||||
@@ -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()
|
||||
21
render/text_renderer.py
Normal file
21
render/text_renderer.py
Normal file
@@ -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)
|
||||
Reference in New Issue
Block a user