UPDATE: New rendering method, using real CS2 data, less guessing, more accuracy.

REMOVE: Image coord controller
This commit is contained in:
2025-03-16 17:09:59 +01:00
parent 549872b037
commit c55abfe02e
5 changed files with 40 additions and 93 deletions

View File

@@ -4,7 +4,7 @@ from models.player import Player
from models.team import Team
from models.renderer import Renderer
WIDTH, HEIGHT = 700, 700
WIDTH, HEIGHT = 700,700
FPS = 60
class Game:

View File

@@ -25,8 +25,8 @@ class Match:
return
for player in self.get_players():
player.x = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["Y"].values[0]
player.y = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["X"].values[0]
player.x = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["X"].values[0]
player.y = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["Y"].values[0]
player.z = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["Z"].values[0]
player.pitch = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["pitch"].values[0]
player.yaw = self.current_tick[self.current_tick["player_steamid"] == player.steam_id]["yaw"].values[0]

View File

@@ -5,7 +5,6 @@ from models.match import Match
from models.player import Player
from models.team import Team
from controllers.map_coord_controller import MapCoordController
from controllers.image_coord_controller import ImageCoordController
from utils.json_object import JSONObject
class Renderer:
@@ -20,23 +19,22 @@ class Renderer:
except FileNotFoundError:
raise NotImplementedError(f"Map {match.map_name} not implemented.")
self.image_path = self.json_object.get("image_path")
self.image_path = self.json_object.get("image_path")
self.image_width = self.json_object.get("image_width")
self.image_height = self.json_object.get("image_height")
self.ingame_zero_x = self.json_object.get("middle_x")
self.ingame_zero_y = self.json_object.get("middle_y")
self.rotation_degrees = self.json_object.get("rotation")
self.scaler = self.json_object.get("scale")
self.top_left_x = self.json_object.get("pos_x")
self.top_left_y = self.json_object.get("pos_y")
self.scale = self.json_object.get("scale")
self.rotation = self.json_object.get("rotate")
self.image_path = self.json_object.get("material")
self.map_image = pygame.image.load(self.image_path)
self.image_width = self.map_image.get_width()
self.image_height = self.map_image.get_height()
self.bottom_right_x = self.top_left_x + (self.image_width * self.scale)
self.bottom_right_y = self.top_left_y - (self.image_height * self.scale)
self.map_coord_controller = MapCoordController(self.screen.get_width(), self.screen.get_height(),
-3000, 3000, -3000, 3000)
self.image_coord_controller = ImageCoordController(self.image_width, self.image_height,
self.screen.get_width(), self.screen.get_height(),
self.ingame_zero_x, self.ingame_zero_y)
self.image_coord_controller.scale(self.scaler)
self.image_coord_controller.rotate(self.rotation_degrees)
self.top_left_x, self.bottom_right_x, self.top_left_y, self.bottom_right_y)
def render_players(self):
"""Draws everything on screen."""
for player in self.match.get_players():
@@ -61,15 +59,11 @@ class Renderer:
self.screen.blit(text, (10, 40))
def render_map(self):
# Draw map from image
map_image = pygame.image.load(self.image_path)
# Scale and rotate map image
map_image = pygame.transform.scale(map_image, (self.image_width*self.scaler, self.image_height*self.scaler))
map_image = pygame.transform.rotate(map_image, self.rotation_degrees)
self.map_image = pygame.transform.scale(self.map_image, (self.screen.get_width(), self.screen.get_height()))
# Draw map image
self.screen.blit(map_image, self.image_coord_controller.top_left_screen())
self.screen.blit(self.map_image, (0, 0))
'''
def render_slider(self):