refactor: improve rendering process

This commit is contained in:
2025-10-18 15:10:13 +02:00
parent 6805e69509
commit 2b20582b87
7 changed files with 114 additions and 48 deletions

View File

@@ -2,10 +2,15 @@ from __future__ import annotations
import json
from src.track_object import TrackObject, TrackObjectType
import pygame
from src.camera import Camera
from src.track_object import TrackObject
from src.utils import ROOT
from src.vec import Vec
TrackObject.init()
class Track:
TRACKS_DIRECTORY = ROOT / "assets" / "tracks"
@@ -36,26 +41,8 @@ class Track:
self.objects = []
for obj_data in data:
if obj_data["type"] == "road":
self.objects.append(Road.load(obj_data))
self.objects.append(TrackObject.load(obj_data))
class RoadPoint:
def __init__(self, pos: Vec, normal: Vec, width: float) -> None:
self.pos: Vec = pos
self.normal: Vec = normal.normalized
self.width: float = width
@staticmethod
def load(data: list[float]) -> RoadPoint:
return RoadPoint(Vec(data[0], data[1]), Vec(data[2], data[3]), data[4])
class Road(TrackObject):
def __init__(self, pts: list[RoadPoint]) -> None:
super().__init__(TrackObjectType.Road)
self.pts: list[RoadPoint] = pts
@staticmethod
def load(data: dict) -> Road:
return Road([RoadPoint.load(pt) for pt in data["pts"]])
def render(self, surf: pygame.Surface, camera: Camera):
for object in self.objects:
object.render(surf, camera)