Commit graph

28 commits

Author SHA1 Message Date
Your Name
c348b81a93 Add named Marks and cross-room NPC pathfinding
- Mark: a debug non-collidable named destination (pixel-art target icon),
  editor tool + name modal, globally-unique names, programmatic Room:addMark
- NPCs walk to Marks: each RGB copy is a per-room resident (like the player),
  running its own A* on its own colour layer, transferring rooms as it crosses
  seams; rendered and collided by the room it currently stands in
- Player copies are obstacles in NPC pathfinding
- A* is footprint-aware for multi-cell NPCs
- Editor: click an NPC to open a filterable destination picker
- Ink: Dialogue.open binds walk_to; Jorge can be sent to "end"/"begin"
- Fix: a blocked NPC now replans each tick and resumes instead of freezing
- [npc] move diagnostics under DEBUG (start/goal/route or block reason)
- Docs (adding-npcs) + CLAUDE.md LÖVE 11.x/float-colour corrections
- Fix test harness loadSprite stub; movement tests green (28)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-21 15:56:53 -04:00
Your Name
ad405ed590 map idea 2026-08-21 10:57:32 -04:00
Your Name
d829b4972f note blocks and sticky test 2026-08-13 12:45:41 -04:00
Your Name
6f4b2fe696 Add player color Venn HUD 2026-08-12 14:52:06 -04:00
Your Name
8fae34b803 Unify editor input with room preview transform 2026-08-12 03:01:22 -04:00
Your Name
6a5c2fc951 better wirer behavior etc 2026-08-12 00:12:26 -04:00
Your Name
bc4976b324 wired switches and doors 2026-08-11 22:55:58 -04:00
Your Name
ee7d36e72b Synchronize world state across editor and room saves 2026-08-11 21:49:32 -04:00
Your Name
a60f46d585 player blocker 2026-08-11 20:29:35 -04:00
Your Name
e5e80c2754 Save editor player positions by default 2026-08-11 20:09:07 -04:00
Your Name
c3a2692351 Add spiky box variants 2026-08-11 20:08:58 -04:00
Your Name
d426306c94 Clear runtime saves after editor save 2026-08-11 16:37:11 -04:00
Your Name
858775fdc8 Improve world editor palette workflow 2026-08-11 16:24:51 -04:00
Your Name
f549eaf523 Add directional sticky and skewer box variants 2026-08-11 15:07:11 -04:00
Your Name
c3f5aafd77 Add drag painting to level editor 2026-08-11 14:11:57 -04:00
Your Name
e51dc22ca1 fix level editor truncation 2026-08-11 12:45:31 -04:00
Your Name
d96f57efb6 Add multi-cell box shapes with per-cell collision
Generate 1x2/2x1 dominoes, 2x2 (square + 4 L-trominoes) and all
connected 3x2/2x3 polyominoes as R/G/B channel masks, reusing the
distance-based concentric-ring format that reproduces box_r/g/b
exactly. Outer silhouette keeps a 1px margin; connected cells stay
seamless. Each shape ships a {class="moveable"} .meta so getAllAssets
auto-registers it as a GenericMoveable.

Wire the occupied-cell shape (precomputed once by getAllAssets via
getCellsFromSprite) through to entities: createEntity now passes the
cached cells as cellShape, so an L/U/notched block collides on its real
cells and its gaps read as empty space. Fix the per-colour cache that
was reset every channel so only one colour survived.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 12:42:33 -04:00
Your Name
5b7ea9ec20 Rebuild level editor sidebar with a fixed virtual-space layout
Replace the fraction-of-window positioning (which overlapped and didn't
scale) with a small layout system: the sidebar is authored in one fixed
virtual coordinate space and rendered at native panel resolution, so
element sizes stay constant relative to the panel at any window size and
fonts scale with it.

- level_editor/layout.lua: sections, scrolling list (with clip + hit-test
  by point), scrollbar. Clip rects are scaled to real canvas pixels.
- Room view split into non-overlapping divs: search/back header, a
  scrollable asset list (replaces the old row-paging + forward buttons),
  a status strip, and a compact bottom control cluster.
- Mouse wheel scrolls the list; clicks map from window coords into the
  virtual space via the same transform used to render.
- Sidebar canvas is panel-sized and blitted 1:1 (nearest filter, never
  averaged) to stay crisp; editorDraw runs under a scale transform.
- Center text-only fields (level name) in their rect.

Also carried in main.lua (share the file, can't split cleanly here):
narrator require path fixed via love.filesystem.setRequirePath; sfxr
static uses waveform=NOISE again after the field rename; low-pass +
lower volume on the static loop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 12:24:54 -04:00
Your Name
c92c0f6ff7 fix state thigns and port to love11 2026-08-07 20:56:55 -04:00
Your Name
0f79fe99ae editor search 2026-08-07 09:08:34 -04:00
Your Name
b9b0726506 misc 2026-08-07 03:22:28 -04:00
Your Name
febaaaacc7 idk even anymore 2026-08-07 01:39:47 -04:00
Your Name
a8b469876d level editor improvements 2026-08-07 01:01:49 -04:00
Your Name
a9af97925e fixed 2026-08-06 23:54:49 -04:00
0x81c
7c7f76b188 now analyzes sprite on load for occupied cells and serializs eetc hehe 2026-08-06 23:15:48 -04:00
0x81c
d690863b6f so we have a lot of it wor_ing properly, now we have to do the thing where it preloads necessary spritesgit add -A 2026-08-06 23:15:48 -04:00
0x81c
b071e117fa so we fixed up some bugs and restructured the level editor. master fiel. 2026-08-06 23:15:48 -04:00
0x81c
01d272981e id_ 2026-08-06 23:15:48 -04:00