feat: add connected indicator on car
This commit is contained in:
		| @@ -45,3 +45,6 @@ class Camera: | |||||||
|         screen_delta: Vec = Vec(dx, dy) * self.zoom * self.UNIT_RATIO |         screen_delta: Vec = Vec(dx, dy) * self.zoom * self.UNIT_RATIO | ||||||
|         screen_pos: Vec = self.car_screen_pos + screen_delta |         screen_pos: Vec = self.car_screen_pos + screen_delta | ||||||
|         return screen_pos |         return screen_pos | ||||||
|  |  | ||||||
|  |     def size2screen(self, size: float) -> float: | ||||||
|  |         return size * self.zoom * self.UNIT_RATIO | ||||||
|   | |||||||
| @@ -16,6 +16,7 @@ class Car: | |||||||
|     MAX_BACK_SPEED = -3 |     MAX_BACK_SPEED = -3 | ||||||
|     ROTATE_SPEED = 1 |     ROTATE_SPEED = 1 | ||||||
|     COLOR = (230, 150, 80) |     COLOR = (230, 150, 80) | ||||||
|  |     CTRL_COLOR = (80, 230, 150) | ||||||
|     WIDTH = 0.4 |     WIDTH = 0.4 | ||||||
|     LENGTH = 0.6 |     LENGTH = 0.6 | ||||||
|     COLLISION_MARGIN = 0.4 |     COLLISION_MARGIN = 0.4 | ||||||
| @@ -82,6 +83,14 @@ class Car: | |||||||
|         pts = [camera.world2screen(p) for p in pts] |         pts = [camera.world2screen(p) for p in pts] | ||||||
|         pygame.draw.polygon(surf, self.COLOR, 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]: |     def get_corners(self) -> list[Vec]: | ||||||
|         u: Vec = self.direction * self.LENGTH / 2 |         u: Vec = self.direction * self.LENGTH / 2 | ||||||
|         v: Vec = self.direction.perp * self.WIDTH / 2 |         v: Vec = self.direction.perp * self.WIDTH / 2 | ||||||
|   | |||||||
| @@ -35,6 +35,10 @@ class RemoteController: | |||||||
|         self.client_thread: Optional[threading.Thread] = None |         self.client_thread: Optional[threading.Thread] = None | ||||||
|         self.client: Optional[socket.socket] = None |         self.client: Optional[socket.socket] = None | ||||||
|  |  | ||||||
|  |     @property | ||||||
|  |     def is_connected(self) -> bool: | ||||||
|  |         return self.client is not None | ||||||
|  |  | ||||||
|     def wait_for_connections(self): |     def wait_for_connections(self): | ||||||
|         self.server.bind(("", self.port)) |         self.server.bind(("", self.port)) | ||||||
|         self.server.listen(1) |         self.server.listen(1) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user