1
0
Fork 0

Fix 4c8f1b0f81: Hidden-by-facility station signs were not ignored when handling clicks. (#14326)

pull/14329/head
Peter Nelson 2025-06-03 21:53:53 +01:00 committed by GitHub
parent 9e8fc8da48
commit 5bf31a431e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 8 additions and 2 deletions

View File

@ -1435,7 +1435,7 @@ static void ViewportAddKdtreeSigns(DrawPixelInfo *dpi)
/* If no facilities are present the station is a ghost station. */ /* If no facilities are present the station is a ghost station. */
StationFacilities facilities = st->facilities; StationFacilities facilities = st->facilities;
if (facilities == StationFacilities{}) facilities = STATION_FACILITY_GHOST; if (facilities.None()) facilities = STATION_FACILITY_GHOST;
if (!facilities.Any(_facility_display_opt)) break; if (!facilities.Any(_facility_display_opt)) break;
@ -2280,12 +2280,18 @@ static bool CheckClickOnViewportSign(const Viewport &vp, int x, int y)
/* See ViewportAddKdtreeSigns() for details on the search logic */ /* See ViewportAddKdtreeSigns() for details on the search logic */
_viewport_sign_kdtree.FindContained(search_rect.left, search_rect.top, search_rect.right, search_rect.bottom, [&](const ViewportSignKdtreeItem & item) { _viewport_sign_kdtree.FindContained(search_rect.left, search_rect.top, search_rect.right, search_rect.bottom, [&](const ViewportSignKdtreeItem & item) {
switch (item.type) { switch (item.type) {
case ViewportSignKdtreeItem::VKI_STATION: case ViewportSignKdtreeItem::VKI_STATION: {
if (!show_stations) break; if (!show_stations) break;
st = BaseStation::Get(std::get<StationID>(item.id)); st = BaseStation::Get(std::get<StationID>(item.id));
if (!show_competitors && _local_company != st->owner && st->owner != OWNER_NONE) break; if (!show_competitors && _local_company != st->owner && st->owner != OWNER_NONE) break;
StationFacilities facilities = st->facilities;
if (facilities.None()) facilities = STATION_FACILITY_GHOST;
if (!facilities.Any(_facility_display_opt)) break;
if (CheckClickOnViewportSign(vp, x, y, &st->sign)) last_st = st; if (CheckClickOnViewportSign(vp, x, y, &st->sign)) last_st = st;
break; break;
}
case ViewportSignKdtreeItem::VKI_WAYPOINT: case ViewportSignKdtreeItem::VKI_WAYPOINT:
if (!show_waypoints) break; if (!show_waypoints) break;