This commit is contained in:
royjr
2026-07-15 13:35:07 -04:00
parent 5542996fbf
commit 69e7a74835
+46 -23
View File
@@ -174,6 +174,12 @@ class AugmentedRoadView(CameraView):
}
self._radar_ranges_label = UnifiedLabel("", **radar_text_args)
self._radar_counts_label = UnifiedLabel("none", **radar_text_args)
self._radar_status = ("", "none")
self._radar_layout_key: tuple[str, str, int] | None = None
self._radar_range_width = 0
self._radar_count_width = 36
self._radar_status_width = 52
self._radar_status_height = 42
self._fade_texture = gui_app.texture("icons_mici/onroad/onroad_fade.png")
@@ -191,12 +197,10 @@ class AugmentedRoadView(CameraView):
status = ("", "radar detected\ntap to enable")
else:
status = format_radar_tracks_onroad_columns(live_tracks) if ui_state.sm.valid["liveTracks"] else ("", "none")
self._radar_ranges_label.set_text(status[0])
self._radar_counts_label.set_text(status[1])
self._set_radar_status(status)
elif not ui_state.sm.alive["liveTracks"]:
self._radar_tracks_settings_prompt = False
self._radar_ranges_label.set_text("")
self._radar_counts_label.set_text("none")
self._set_radar_status(("", "none"))
# update offroad label
if ui_state.panda_type == log.PandaState.PandaType.unknown:
@@ -206,6 +210,37 @@ class AugmentedRoadView(CameraView):
else:
self._offroad_label.set_text("start the car to\nuse sunnypilot")
def _set_radar_status(self, status: tuple[str, str]) -> None:
if status == self._radar_status:
return
self._radar_status = status
self._radar_ranges_label.set_text(status[0])
self._radar_counts_label.set_text(status[1])
self._radar_layout_key = None
def _update_radar_status_layout(self) -> None:
radar_horizontal_padding = 8
radar_column_gap = 8
radar_max_inner_width = int(self._content_rect.width - 40)
layout_key = (*self._radar_status, radar_max_inner_width)
if layout_key == self._radar_layout_key:
return
radar_range_max_width = radar_max_inner_width - 36 - radar_column_gap
self._radar_ranges_label.get_content_height(radar_range_max_width)
self._radar_counts_label.get_content_height(radar_max_inner_width)
self._radar_range_width = int(np.ceil(self._radar_ranges_label.text_width))
self._radar_count_width = max(36, int(np.ceil(self._radar_counts_label.text_width)))
radar_status_inner_width = self._radar_range_width + self._radar_count_width + (radar_column_gap if self._radar_range_width else 0)
self._radar_status_width = radar_status_inner_width + radar_horizontal_padding * 2
self._radar_status_height = max(
42,
self._radar_ranges_label.get_content_height(max(self._radar_range_width, 1)) + 10,
self._radar_counts_label.get_content_height(self._radar_count_width) + 10,
)
self._radar_layout_key = layout_key
def _handle_mouse_release(self, mouse_pos: MousePos):
if (self._radar_tracks_settings_callback is not None and
rl.check_collision_point_rec(mouse_pos, self._radar_status_rect)):
@@ -256,37 +291,25 @@ class AugmentedRoadView(CameraView):
radar_horizontal_padding = 8
radar_column_gap = 8
radar_max_inner_width = int(self._content_rect.width - 40)
radar_range_max_width = radar_max_inner_width - 36 - radar_column_gap
self._radar_ranges_label.get_content_height(radar_range_max_width)
self._radar_counts_label.get_content_height(radar_max_inner_width)
radar_range_width = int(np.ceil(self._radar_ranges_label.text_width))
radar_count_width = max(36, int(np.ceil(self._radar_counts_label.text_width)))
radar_status_inner_width = radar_range_width + radar_count_width + (radar_column_gap if radar_range_width else 0)
radar_status_width = radar_status_inner_width + radar_horizontal_padding * 2
radar_status_height = max(
42,
self._radar_ranges_label.get_content_height(max(radar_range_width, 1)) + 10,
self._radar_counts_label.get_content_height(radar_count_width) + 10,
)
self._update_radar_status_layout()
self._radar_status_rect = rl.Rectangle(
self._content_rect.x + self._content_rect.width - radar_status_width - 12,
self._content_rect.x + self._content_rect.width - self._radar_status_width - 12,
self._content_rect.y + 8,
radar_status_width,
radar_status_height,
self._radar_status_width,
self._radar_status_height,
)
radar_status_rect = self._radar_status_rect
rl.draw_rectangle_rounded(radar_status_rect, 0.5, 8, rl.Color(0, 0, 0, 170))
self._radar_ranges_label.render(rl.Rectangle(
radar_status_rect.x + radar_horizontal_padding,
radar_status_rect.y + 5,
radar_range_width,
self._radar_range_width,
radar_status_rect.height - 10,
))
self._radar_counts_label.render(rl.Rectangle(
radar_status_rect.x + radar_horizontal_padding + radar_range_width + (radar_column_gap if radar_range_width else 0),
radar_status_rect.x + radar_horizontal_padding + self._radar_range_width + (radar_column_gap if self._radar_range_width else 0),
radar_status_rect.y + 5,
radar_count_width,
self._radar_count_width,
radar_status_rect.height - 10,
))