Commit graph

93 commits

Author SHA1 Message Date
Your Name
7d84f595e4 Replace box variants with a moveable adhesion property
Collapse the spiky/sticky/skewer box-variant assets into a single per-
instance `adhesion` property on any moveable block, chosen in the editor
via a dropdown next to the colour picker and stored in the .sav alongside
the class.

- spiky -> sticky: soft grab on every true edge (goopy shader)
- skewer -> gluey: rigid weld on every true edge (spiked outline)
- old trailing-face sticky is removed; its saves fold into new sticky

Move the spike geometry + drawGlueySprite into shaders.lua, fold drawing
and the adhesion flag into GenericMoveable, and delete the three
Generic{Sticky,Spiky,Skewer} classes and box_variants.lua. Room:createEntity
normalises legacy spiky_/skewer_/sticky_ class prefixes so old saves load,
and serialization emits `adhesion`. World/map previews and the movement
proxy follow the rename.

Backfill rooms/*.sav to the new format via tools/backfill_adhesion.lua
(41 objects across 8 files). Update tests to the two-mode model; the two
tests asserting the removed lateral-shear limitation are dropped and a
legacy-load migration test added. 27/27 pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-21 16:34:01 -04:00
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
6d41894036 just some level things idk whats going on here 2026-08-15 09:05:42 -04:00
Your Name
d829b4972f note blocks and sticky test 2026-08-13 12:45:41 -04:00
Your Name
1bc1cdb11f cool ideas 2026-08-13 09:17:40 -04:00
Your Name
830191e001 puzzle ideas org 2026-08-12 17:20:14 -04:00
Your Name
7c38a4f619 supposedly fix saving 2026-08-12 17:20:11 -04:00
Your Name
ec745f87ab Update authored puzzle levels 2026-08-12 14:52:06 -04:00
Your Name
6f4b2fe696 Add player color Venn HUD 2026-08-12 14:52:06 -04:00
Your Name
9b5b9ce182 Remove wired device overlay markers 2026-08-12 14:52:06 -04:00
Your Name
176216df8e sound and other misc fixes 2026-08-12 12:27:52 -04:00
Your Name
38eaba2fa6 room changes 2026-08-12 09:00:44 -04:00
Your Name
8fae34b803 Unify editor input with room preview transform 2026-08-12 03:01:22 -04:00
Your Name
3c5e6daf06 Add white room browsing mode 2026-08-12 03:01:22 -04:00
Your Name
794b4dc162 Preview adjacent rooms during transitions 2026-08-12 02:50:48 -04:00
Your Name
23fe9d1c58 Test regular door occupancy resolution 2026-08-12 00:37:49 -04:00
Your Name
17140fe39f Add powered neon wire rendering 2026-08-12 00:37:49 -04:00
Your Name
cb1b5006b9 Join co-located player colors 2026-08-12 00:30:13 -04:00
Your Name
e200ddcaad wire puzzle good 2026-08-12 00:22:04 -04:00
Your Name
9731202739 Prevent doors closing through occupants 2026-08-12 00:21:53 -04:00
Your Name
bf09a8844a profiler 2026-08-12 00:12:34 -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
1965e548b4 Add world-level movement and seam rendering 2026-08-11 21:26:19 -04:00
Your Name
a60f46d585 player blocker 2026-08-11 20:29:35 -04:00
Your Name
0618cfc51d jorge level update 2026-08-11 20:10:46 -04:00
Your Name
0d05e83c18 Add Jorge dialogable NPC 2026-08-11 20:10:03 -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
761214fe3e new level experiments 2026-08-11 19:16:22 -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
4cb536d6c8 feat: add tetromino loop level 2026-08-11 15:07:46 -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
fa0bada313 Add color blind accessibility filter 2026-08-11 14:08:36 -04:00
Your Name
b42569eb9c Prevent unavailable color switching crash 2026-08-11 13:43:23 -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
03532d29e4 Vendor libs/hump, sfxrlua, json4lua, narrator as real files
These were committed as empty submodule gitlinks with no .gitmodules,
so the folders were never populated and the game could not load
(require of libs/hump/timer, libs/sfxrlua/sfxr, narrator.narrator).
Checked out each at its pinned commit and vendored the files, matching
the existing bundled-libs convention. Removed the junk libs/libs/ tree.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-11 11:37:09 -04:00
Your Name
e73f63b5d4 add dialogue consequences design notes
next-steps plan for cross-conversation dialogue state: WorldState as the
serialized source of truth, Ink books as disposable views.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 12:01:50 -04:00
Your Name
5413823b26 add dialog 2026-08-08 00:09:50 -04:00
Your Name
c92c0f6ff7 fix state thigns and port to love11 2026-08-07 20:56:55 -04:00
Your Name
ff5abf6bcd trim the main boxes to not overlap the X wall edges, moer distinct 2026-08-07 18:20:01 -04:00
Your Name
2e0013ec17 fix switch scaling i guess? 2026-08-07 18:01:36 -04:00
Your Name
1850737cf6 sav fixes 2026-08-07 17:49:13 -04:00
Your Name
12c37b5fa9 better shake 2026-08-07 10:27:56 -04:00