ADD: yaw to see where player is looked + refactor for rendering

This commit is contained in:
2025-03-18 22:53:59 +01:00
parent b85d30c241
commit e8edbc3762
2 changed files with 29 additions and 9 deletions

View File

@@ -1,3 +1,4 @@
import math
import pygame
from widgets.slider import HorizontalSlider
from pygame_widgets.slider import Slider
@@ -41,6 +42,7 @@ class Renderer:
self.top_left_x, self.bottom_right_x, self.top_left_y, self.bottom_right_y)
self.slider = HorizontalSlider(self.screen, 50, 650, self.screen.get_width()-100, 20, 1, self.match.max_tick)
#self.slider.fill = True
def render_players(self):
"""Draws everything on screen."""
@@ -53,13 +55,12 @@ class Renderer:
# Draw player if they are alive
if player.dead:
continue
# Map player coordinates to screen coordinates
mapped_x, mapped_y = self.map_coord_controller.map_to_screen(player.x, player.y)
pygame.draw.circle(self.screen, team.colour, (mapped_x, mapped_y), 5)
self._render_player(player, team)
self._render_player_yaw(player, team)
#def render_player_path(self):
# Draw player name
text = self.small_font.render(player.name, True, (255, 255, 255))
self.screen.blit(text, (mapped_x + 10, mapped_y))
def render_text(self):
# Draw current tick
@@ -87,9 +88,21 @@ class Renderer:
self.slider.set_value(self.match.tick)
self.slider.draw()
def _render_player(self, player: Player, team: Team):
mapped_x, mapped_y = self.map_coord_controller.map_to_screen(player.x, player.y)
pygame.draw.circle(self.screen, team.colour, (mapped_x, mapped_y), 5)
text = self.small_font.render(player.name, True, (255, 255, 255))
self.screen.blit(text, (mapped_x-10, mapped_y-15))
def _render_player_yaw(self, player: Player, team: Team):
mapped_x, mapped_y = self.map_coord_controller.map_to_screen(player.x, player.y)
player_yaw = math.radians(player.yaw)
end_x = mapped_x + (20 * math.cos(player_yaw))
end_y = mapped_y - (20 * math.sin(player_yaw))
pygame.draw.line(self.screen, team.colour, (mapped_x, mapped_y), (end_x, end_y), 2)
def render(self):
self.screen.fill((30, 30, 30)) # Clear screen
self.render_map()
self.render_text()
self.render_players()
self.render_slider()
self.render_players()