Commit Graph

10 Commits

Author SHA1 Message Date
florian.berthold 48c401909e fix: pin click should not bubble to canvas (was placing waypoints under notes)
Clicking a Note (or any pin) in Route mode used to:
  1. fire the canvas click handler → drop a waypoint at the note's spot
  2. only THEN run the pin's own click/dblclick handlers

So a single click on a note added a stray waypoint, and a double-click added two and may not have reliably reached the dblclick handler. Edit-via-dblclick therefore felt broken.

Fix: every interactive pin (note, text label, route waypoint, pull marker) now stops 'click' propagation explicitly. Click and dblclick on a pin no longer affect the active tool. Drag detection bumped to a 3px threshold and now only persists history when the pin actually moved.
2026-04-25 23:22:04 +02:00
florian.berthold 724ae08394 pull AtlasLoot rares + interactives into kg pixel space
- new tools/atlasloot_extras.py: matches AL bosses to kg cls>=3 enemies by name, fits per-(dungeon,wing) affine x/y transform, applies to AL pinType=None entries to recover ~14 rare bosses kg's spawn-bound data model omits (Blind Hunter, Stonespine, Deathsworn Captain, Spirestone Butcher, Bannok Grimaxe, Jed Runewatcher, Tsu'zee, …) plus 140+ AtlasLoot interactives (postboxes, summon stones, levers)
- WING_FORCE map disambiguates multi-wing dungeons (BRS, Dire Maul, Scarlet Monastery) where the same AL coord transforms into multiple wings
- frontend renders rare extras as silver-blue skull pins, non-rare extras as muted squares; both have hover-tooltips with their AtlasLoot name
- start, graveyard, dot_yellow, gateway, door_locked icon types from kg now render with distinct shapes (were silently empty before)
- kg_build_data.py merges atlasloot_extras.json into each dungeon's 'extras' field

Note: Ascension always-spawns rare bosses (vs retail's RNG), so they're now reliably visible on the planner.
2026-04-25 23:18:50 +02:00
florian.berthold 9600ce35c2 drop Sunken Temple — kg has no enemy data for it; the empty entry was just clutter in the picker 2026-04-25 23:08:18 +02:00
florian.berthold f8c5157c80 export/import carries notes + texts; new Import button
- exportJson now includes per-floor notes and texts arrays alongside route/pulls; bumps a version field for forward-compat
- new importJson: file picker, parses JSON, resolves dungeon by id against current build, replaces this dungeon's pins on every floor present in the file
- Import button next to Export in the toolbar
2026-04-25 23:05:48 +02:00
florian.berthold 569dbb3b7c split note tools: (i) hover-only icon vs. always-visible freetext label
- Note tool (existing) now strictly hover-only: drops a yellow (i) pin, text appears in the instant tooltip on hover; no inline label
- new Text tool: drops the user-typed string as an always-visible map label, no icon — for naming pull groups, calling out hazards, etc.
- both tools support drag, right-click delete, double-click edit; share-URL hash carries them in 'n' (notes) and 't' (texts) keys
2026-04-25 23:04:51 +02:00
florian.berthold 71bef7b8ff instant-hover tooltip + always-visible note labels
- replaced SVG <title> tooltips (which use the OS dwell-delay) with an instant custom tooltip rendered in #custom-tooltip
- note pins now also render their text inline next to the icon, so a route can be read at a glance without hovering each pin (truncated at 80 chars in the SVG; full text still in the tooltip)
2026-04-25 23:01:43 +02:00
florian.berthold e6c457a400 rare-elite enemies + freetext notes tool + clear-confirmation
- classification 5 (rare-elite) now renders with silver-blue skull pin and shows up in the boss list with a 'rare' tag (was falling through to default trash style)
- new Note tool: click map → enter text → drops yellow info pin; hover for tooltip, double-click to edit, drag to move, right-click to remove. Notes are included in the share-URL hash and history.
- Clear button now confirms before wiping the current floor's waypoints/pulls/notes
2026-04-25 22:59:01 +02:00
florian.berthold 920408f7d3 shorter share URLs: deflate-compressed hash, integer-rounded coords, flat-array pin storage 2026-04-25 22:52:25 +02:00
florian.berthold 18c7792935 switch to keystone.guru tiles + enemy data
Replaces the upreza-derived 4K dungeon textures + AtlasLoot boss-coord
overlay (which had a consistent positional offset against texture skulls)
with keystone.guru's z=4 tile pyramid stitched to 6144x4096 WebP per floor.

kg's split_floors.js gives per-dungeon enemies, packs (polygons), patrols
(polylines), and map icons calibrated to those tiles, so overlays align
pixel-perfectly. 27/29 classic dungeons now have full enemy/pack data;
ZG + Sunken Temple have maps only.

Pipeline: tools/kg_fetch.py -> tools/kg_stitch.py -> tools/kg_build_data.py.
2026-04-25 22:11:17 +02:00
florian.berthold aa1cd9ee40 initial commit: classic-only M+ planner with upreza-derived maps 2026-04-25 21:39:15 +02:00