[F8-07] Cargo routes: расстояние с учётом torus-wrap #50
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Подзадача полировки UI (этап F8), родительский #43.
Цель: Учитывать torus-wrap при расчёте расстояний в picker маршрутов (сейчас считается «в лоб» через всю карту).
Пункты из #43:
Заметка. Проверить, есть ли общий хелпер расстояния с учётом тора (на карте), и переиспользовать его.
Порядок обработки: F8-07 из 12. Создано в рамках #43; зонтичный issue остаётся открытым до закрытия всех подзадач.
Привет, @owner! Посмотрела код — расчёт зоны достижимости в picker'е уже учитывает torus-wrap:
ui/frontend/src/lib/inspectors/planet/cargo-routes.svelte:106-126собирает достижимые черезtorusShortestDelta+Math.hypot, ровно как движок:calc.ShortDistance(pkg/calc/map.go:7), проверкаrange <= FlightDistance() = driveTech * 40вcontroller/route.go:31.visibility.tsдля фильтра unreachable-планет делает ту же математику через convenience-обёрткуtorusShortestDistance.map/pick-mode.ts) затемнение идёт строго поreachableIds, который инспектор подаёт уже torus-aware.То есть планета через шов не должна оказываться в недостижимых. Что в picker'е реально считается "в лоб" — это линия от источника к курсору (
pick-mode.ts:110-118): прямая через канвас, без wrap'а. Когда наводишь курсор на отрисовку планеты в центральном тайле (а не на wrap-копию рядом), линия идёт длинной дорогой через всю карту. Возможно, именно она и создавала ощущение, что torus не учитывается?Хочу свериться, прежде чем менять код. Что ты увидел:
По заметке про общий хелпер: формально inline-математика уже использует тот же
torusShortestDeltaизmath.ts, что иtorusShortestDistanceпод капотом. Перевод на convenience-обёртку чисто косметика, готова сделать заодно, но это не источник предполагаемого бага.Working log (issue-agent) — click to expand
State: blocked
Updated: 2026-05-26T12:11:12Z
Branch / PR: —
Confirmed:
ui/frontend/src/lib/inspectors/planet/cargo-routes.svelte:106-126already wraps the torus (torusShortestDelta+Math.hypot).pkg/calc/map.go.ShortDistance+controller/route.go:31(range <=Race.FlightDistance() = driveTech * 40).visibility.ts.computeHiddenPlanetNumbersuses the convenience helpertorusShortestDistance(map/math.ts:44) — same math.map/pick-mode.tsdims primitives byreachableIds; the set passed in is already torus-aware (built by the inspector).pick-mode.ts:110-118and the hover outlinepick-mode.ts:120-135are drawn at absolute world coords — straight across the canvas, no wrap. Likely source of the owner's "straight-line" perception when the hovered planet is across the seam.Open question:
Need the owner's exact observation: (1) a wrap-reachable planet appeared dimmed (real reach bug — not seen in code), (2) the cursor line/hover outline drew the long way across the canvas and looked "straight-line" (visual only), or (3) something else.
Decisions: none yet — waiting on owner before touching code.
Next: read owner's reply. If (1), get a repro and fix
reachableSet. If (2), redesign the picker visuals (cursor line + hover outline) to follow the wrap-shortest delta. If pure cosmetic, still refactor inline math totorusShortestDistanceper the owner's note and add a torus-wrap regression test forreachableSet.Попытаюсь описать. Смотри, у меня попалась такая карта размером (201, 201), где на нулевом ходу две домашние планеты расположены как бы в правом нижнем углу карты: округленно, координаты (184,137) + (191,145). А третья планета имеет координаты в левом нижнем углу карты (1, 146)
И вот ситуация: когда я активирую picker планеты для маршрута первых двух планет, то ВЛЕВО от планеты всё считается хорошо, а ВПРАВО (то есть когда веду курсор через wrap) вообще ничего не происходит, будто бы нет достижимых планет.
А когда активирую picker для третьей планеты, picker вообще ломается: его начало уходит куда-то далеко влево viewport, и из всех доступных планет даёт выбрать только какую-то домашнюю. Я сделал скриншот по этой ситуации, может, удастся увидеть. Выбранная планета - самая крайняя справа и её координаты тоже видны на скрине:
При этом, уточню, что сломан только picker. Когда всё-таки удаётся выбрать планету для маршрута, стрелочка рисуется адекватно (btw, стрелка слишком толстая, давай заодно уменьшим до 2-3 пикселей её ширину).