From da786b9e59019896b0c2c0183eb09b338bc23f8f Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 22 Aug 2026 18:18:30 +0700 Subject: [PATCH] Terrain Distance returns to Graphics, and guards flag your map MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - the Terrain Distance slider is back on Options → Graphics, in its 1.12 seat and range (177–777, live, no Apply) — and it now drives how much world is resident, not just how far you see: the streamer derives its resident and prefetch windows from farclip in the reference's own chunk units, pulling the ring in as you drag left and streaming it back one tile per frame as you drag right; the `WOW_TILE_RADIUS` env var, the debug panel's farclip slider and a dressed-up fog constant all retire into it - ask a city guard for directions and the destination lands on your maps: `SMSG_GOSSIP_POI` becomes a red flag drawn through the same landmark path as towns and inns — an icon in place when near, competing for a rim arrow when off the edge — and the world map's landmark enumeration answers now, so the flag renders there too and names itself on hover - the flag is one slot (new directions replace the last), drops itself within 10 yards of the destination, expires after the reference's own 480 seconds, and clears on any world entry; the rim-arrow rank rides the packet's own field, not a guessed constant Co-Authored-By: Claude Fable 5 --- crates/benilla-app/assets/ui/OptionsFrame.xml | 41 ++- .../benilla-app/assets/ui/WorldMapFrame.xml | 96 ++++++- crates/benilla-app/src/capture/mod.rs | 2 + .../src/capture/probe_guard_poi.rs | 219 ++++++++++++++++ crates/benilla-app/src/debug_panel/mod.rs | 12 - crates/benilla-app/src/dev.rs | 6 + crates/benilla-app/src/lib.rs | 4 + crates/benilla-app/src/minimap/blips/mod.rs | 86 ++++++- crates/benilla-app/src/minimap/mod.rs | 9 +- crates/benilla-app/src/net/apply.rs | 20 +- crates/benilla-app/src/net/apply/npc.rs | 23 ++ crates/benilla-app/src/player/setup.rs | 11 +- crates/benilla-app/src/poi_marker.rs | 235 ++++++++++++++++++ crates/benilla-app/src/ui_script/mod.rs | 4 + .../src/ui_script/options_tests.rs | 115 +++++++-- .../src/ui_script/world_map_tests.rs | 210 ++++++++++++++++ crates/benilla-app/src/ui_world_map.rs | 28 ++- crates/benilla-assets/src/world_assets/mod.rs | 17 +- crates/benilla-formats/src/lib.rs | 4 +- crates/benilla-protocol/src/events.rs | 3 + crates/benilla-protocol/src/events/decode.rs | 1 + .../benilla-protocol/src/messages/gossip.rs | 43 ++++ crates/benilla-protocol/src/messages/mod.rs | 2 +- .../benilla-protocol/src/messages/opcode.rs | 11 +- .../benilla-protocol/src/messages/packet.rs | 14 +- crates/benilla-protocol/src/messages/parse.rs | 1 + .../benilla-protocol/tests/gossip_vendor.rs | 34 +++ crates/benilla-ui/src/script/mod.rs | 5 +- crates/benilla-ui/src/script/worldmap.rs | 86 ++++++- crates/benilla-wdt/src/lib.rs | 38 +++ crates/benilla-world/src/art_scope.rs | 62 ++--- crates/benilla-world/src/assets/mod.rs | 12 +- crates/benilla-world/src/lighting/mod.rs | 1 - crates/benilla-world/src/lighting/resolve.rs | 14 +- crates/benilla-world/src/sun/follow.rs | 2 +- crates/benilla-world/src/terrain_stream.rs | 77 +++--- .../src/terrain_stream/window.rs | 235 ++++++++++++++++++ crates/benilla-world/src/view.rs | 38 +-- crates/benilla-world/src/worldview.rs | 8 +- 39 files changed, 1620 insertions(+), 209 deletions(-) create mode 100644 crates/benilla-app/src/capture/probe_guard_poi.rs create mode 100644 crates/benilla-app/src/poi_marker.rs create mode 100644 crates/benilla-app/src/ui_script/world_map_tests.rs create mode 100644 crates/benilla-world/src/terrain_stream/window.rs diff --git a/crates/benilla-app/assets/ui/OptionsFrame.xml b/crates/benilla-app/assets/ui/OptionsFrame.xml index b749f5ea..de6fb98b 100644 --- a/crates/benilla-app/assets/ui/OptionsFrame.xml +++ b/crates/benilla-app/assets/ui/OptionsFrame.xml @@ -618,7 +618,7 @@ "RowEnableAll", "RowMaster", "RowSound", "RowMusic", "RowAmbience", "RowEnableMusic", "RowEnableAmbience", }, - Graphics = { "RowUiScale", "RowWorldDetail", "RowVerticalSync" }, + Graphics = { "RowUiScale", "RowFarclip", "RowWorldDetail", "RowVerticalSync" }, Nameplates = { "RowPlayerNames", "RowNpcNames", "RowOwnName" }, -- The stock globals that were already defined AND consumed when 1134 opened the store -- (1136; Buff Durations 1139), plus the two equipment-display toggles (1472), in the @@ -2157,18 +2157,22 @@ - + so the checkbox doesn't ship. Terrain Distance: farclip + 177..777 step 60 = (max-min)/10 (FARCLIP "Terrain Distance", + raw-yards readout — era's law when a slider has no formatter); + retired by the director in 0961 and back by their call in + 1513, now that the one number moves the far-clip wall AND how + much terrain is resident, as it does in the reference. + Environment Detail (0992) is the same table's WorldDetail row + (0..2 step 1, label ENVIRONMENT_DETAIL) over the clutter-density + knob, worn as the dropdown row — the shape call is the + template's comment. --> @@ -2191,11 +2195,22 @@ self.deferred = 1 - + + + OptionsRow_OnLoad(self, "farclip", "Terrain Distance", + "OPTION_TOOLTIP_FARCLIP") + OptionsSliderRow_Setup(self, 177, 777, 60, "raw") + + + + + + + OptionsRow_OnLoad(self, "WorldDetail", "Environment Detail", "OPTION_TOOLTIP_ENVIRONMENT_DETAIL") diff --git a/crates/benilla-app/assets/ui/WorldMapFrame.xml b/crates/benilla-app/assets/ui/WorldMapFrame.xml index 2bc16e1a..7dc02514 100644 --- a/crates/benilla-app/assets/ui/WorldMapFrame.xml +++ b/crates/benilla-app/assets/ui/WorldMapFrame.xml @@ -20,8 +20,9 @@ art spun by SetRotation(GetPlayerFacing()) — the reference renders an engine arrow model; 0203 flags the stand-in). - OUT (later slices, per 0203): POI landmarks; - party/raid/battlefield/corpse/ping children (no group wire); the magnifying-glass zoom-out + OUT (later slices, per 0203): the AreaPOI.dbc landmarks (the POI pool IS here — the guard's + directions marker fills it today, and the DBC rows join through the same GetNumMapLandmarks); + party/raid/battlefield/ping children (no group wire); the magnifying-glass zoom-out shortcut (redundant with the button); SetupFullscreenScale (the map renders at its native 1024×768 centered; a scale pass is a taste knob); WorldMapTooltip (only unit blips used it). @@ -35,6 +36,7 @@