From 5ce863d165dc9185de5f34d4f54c0dee253f8428 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 15 Jul 2023 20:22:28 +0100 Subject: [PATCH] Show distance information in linkgraph tooltip when ctrl pressed --- src/lang/extra/english.txt | 1 + src/linkgraph/linkgraph_gui.cpp | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lang/extra/english.txt b/src/lang/extra/english.txt index 5f7fd1a2f3..4b78a9593d 100644 --- a/src/lang/extra/english.txt +++ b/src/lang/extra/english.txt @@ -767,6 +767,7 @@ STR_TRANSPARENT_TUNNELS_TOOLTIP :{BLACK}Toggle t STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL :{}Average travel time: {STRING1} STR_LINKGRAPH_STATS_TOOLTIP_CAPACITY :{}Capacity: {CARGO_LONG} +STR_LINKGRAPH_STATS_TOOLTIP_DISTANCE :Manhattan Distance: {COMMA} tile{P 0 "" s}{}Bird Fly Distance: {COMMA} tile{P 1 "" s} STR_RAIL_TOOLBAR_TOOLTIP_BUILD_POLYRAIL :{BLACK}Build railway track using the Polyline mode. Ctrl toggles build/remove for railway construction. Shift toggles building/showing cost estimate diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp index cc0e33a077..dbf8a8ef35 100644 --- a/src/linkgraph/linkgraph_gui.cpp +++ b/src/linkgraph/linkgraph_gui.cpp @@ -518,7 +518,7 @@ bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond) pt.y - 2 <= std::max(pta.y, ptb.y) && check_distance()) { - static char buf[1024]; + static char buf[1024 + 512]; char *buf_end = buf; buf[0] = 0; @@ -568,6 +568,18 @@ bool LinkGraphOverlay::ShowTooltip(Point pt, TooltipCloseCondition close_cond) add_travel_time(link.time ? (back_time ? ((link.time + back_time) / 2) : link.time) : back_time); } + if (_ctrl_pressed) { + /* Add distance information */ + buf_end = strecat(buf_end, "\n\n", lastof(buf)); + TileIndex t0 = Station::Get(i->from_id)->xy; + TileIndex t1 = Station::Get(i->to_id)->xy; + uint dx = Delta(TileX(t0), TileX(t1)); + uint dy = Delta(TileY(t0), TileY(t1)); + SetDParam(0, DistanceManhattan(t0, t1)); + SetDParam(1, IntSqrt64(((uint64)dx * (uint64)dx) + ((uint64)dy * (uint64)dy))); // Avoid overflow in DistanceSquare + buf_end = GetString(buf_end, STR_LINKGRAPH_STATS_TOOLTIP_DISTANCE, lastof(buf)); + } + SetDParam(0, link.cargo); SetDParam(1, link.Usage()); SetDParam(2, i->from_id);