ADD: yaw to see where player is looked + refactor for rendering
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user