refactor: improve rendering process
This commit is contained in:
33
src/track.py
33
src/track.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user