From 8542ee81e7f594484b5c7030791262789b6415e0 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Wed, 22 Oct 2025 23:57:41 +0200 Subject: [PATCH] feat: add connected indicator on car --- src/camera.py | 3 +++ src/car.py | 9 +++++++++ src/remote_controller.py | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/src/camera.py b/src/camera.py index d67a4f0..cddf491 100644 --- a/src/camera.py +++ b/src/camera.py @@ -45,3 +45,6 @@ class Camera: screen_delta: Vec = Vec(dx, dy) * self.zoom * self.UNIT_RATIO screen_pos: Vec = self.car_screen_pos + screen_delta return screen_pos + + def size2screen(self, size: float) -> float: + return size * self.zoom * self.UNIT_RATIO diff --git a/src/car.py b/src/car.py index 090cbc7..bd31d6c 100644 --- a/src/car.py +++ b/src/car.py @@ -16,6 +16,7 @@ class Car: MAX_BACK_SPEED = -3 ROTATE_SPEED = 1 COLOR = (230, 150, 80) + CTRL_COLOR = (80, 230, 150) WIDTH = 0.4 LENGTH = 0.6 COLLISION_MARGIN = 0.4 @@ -82,6 +83,14 @@ class Car: pts = [camera.world2screen(p) for p in pts] pygame.draw.polygon(surf, self.COLOR, pts) + if self.controller.is_connected: + pygame.draw.circle( + surf, + self.CTRL_COLOR, + camera.world2screen(self.pos), + camera.size2screen(self.WIDTH / 4), + ) + def get_corners(self) -> list[Vec]: u: Vec = self.direction * self.LENGTH / 2 v: Vec = self.direction.perp * self.WIDTH / 2 diff --git a/src/remote_controller.py b/src/remote_controller.py index 0ac72c9..07c84ad 100644 --- a/src/remote_controller.py +++ b/src/remote_controller.py @@ -35,6 +35,10 @@ class RemoteController: self.client_thread: Optional[threading.Thread] = None self.client: Optional[socket.socket] = None + @property + def is_connected(self) -> bool: + return self.client is not None + def wait_for_connections(self): self.server.bind(("", self.port)) self.server.listen(1)