not-tonight/public/props
m3ultra 4caa901df2 Four venues, four rooms: the ladder stops being one map with different numbers
The venue ladder has always listed four venues in data/venues.ts, but they
shared ONE floor map and differed only by difficulty knobs — so a promotion you
survived a whole week for looked exactly like the room you had just left.

- venueMap.ts grows a FloorLayout contract (map + props + lights + posts +
  probes + palette) and the newGrid() primitives every room is painted with.
  Voltage stays IN venueMap rather than moving to layouts/, so the new rooms can
  import primitives from it without closing an import cycle.
- Three new rooms in src/scenes/floor/layouts/: The Royal (horseshoe public bar,
  pool room, pokies corner, trough + two cubicles, a beer garden that is plainly
  the nicest room in the pub, and a DJ "corner" that is a folding table because
  this pub never built a booth), Elevate (open-air rooftop — most of the grid is
  sky, the DJ is on an unwalled plinth, you arrive by lift), ROOM (concrete
  warehouse, pillars you path around, central booth, loading-dock smoking area,
  twelve lights in the whole venue).
- Nothing about a room is a module singleton any more. FloorView, sweep and
  FloorDemoScene take the layout; the door picks its street plate by venue id.
- FloorDemoScene's six hardcoded station spots (TAPS_SPOT, DECKS_SPOT, ...) were
  Voltage's tile coordinates. At four venues a hardcoded (47,3) puts the bar
  shift inside The Royal's pool room, so each layout now names its own stations
  and the scene reads them from there.
- tests/floor/layoutInvariants.ts is an executable rulebook: perimeter holds,
  every walkable tile reachable from the entry, anchors on walkable ground,
  posts not sealed (a post on a sealed tile freezes the player for the night —
  that has shipped twice), probes reachable, props on-grid. Proved against
  Voltage BEFORE the new rooms were authored against it.

Dev route #floor:<venueId> boots the floor straight into one room, because
otherwise seeing ROOM means surviving three weeks of the ladder.

Gate: lint clean, build clean, 821 tests passing (was 784).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 19:51:54 +10:00
..
arcade.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
barFridge.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
barShelf.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
boothLamp.png Prop batch 2: monitor, booth lamp, dishwasher, pool table, wet-floor cone, high tables, plants, and a real red-carpet plate for the door 2026-07-21 02:39:11 +10:00
boothTable.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
buttBin.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
carpet.png Prop batch 2: monitor, booth lamp, dishwasher, pool table, wet-floor cone, high tables, plants, and a real red-carpet plate for the door 2026-07-21 02:39:11 +10:00
cloak.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
crate.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
cubicleDoor.png Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater 2026-07-27 13:29:55 +10:00
cueRack.png Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater 2026-07-27 13:29:55 +10:00
dartboard.png Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
deck.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
discoball.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
dishwasher.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
glassRack.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
glassStack.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
handDryer.png Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater 2026-07-27 13:29:55 +10:00
highTable.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
iceWell.png Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater 2026-07-27 13:29:55 +10:00
jukebox.png Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
keg.png Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
manifest.json Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
mixer.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
monitor.png Prop batch 2: monitor, booth lamp, dishwasher, pool table, wet-floor cone, high tables, plants, and a real red-carpet plate for the door 2026-07-21 02:39:11 +10:00
mopBucket.png Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater 2026-07-27 13:29:55 +10:00
pallet.png Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
patioHeater.png Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater 2026-07-27 13:29:55 +10:00
plant.png Prop batch 2: monitor, booth lamp, dishwasher, pool table, wet-floor cone, high tables, plants, and a real red-carpet plate for the door 2026-07-21 02:39:11 +10:00
poolTable.png The [GLB] hop, closed: headless Blender ortho-render turns TRELLIS meshes into props 2026-07-27 13:37:36 +10:00
poster1.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
poster2.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
poster3.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
sinkRow.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
speaker.png One camera for the whole tileset: nine chunky props re-meshed and ortho-rendered 2026-07-27 14:55:19 +10:00
stampPodium.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
street_backdrop.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
taps.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
till.png The club gets dressed: full MODELBEAST art drop (20 sprites + street backdrop), scan-beam light show, colour-cycling dance grid, pool corner + furniture, present-race fix 2026-07-20 17:19:46 +10:00
trough.png Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
truss.png Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater 2026-07-27 13:29:55 +10:00
urinal.png Furnish the empty rooms: the dunnies get fittings, the bar gets fridges, the yard gets a heater 2026-07-27 13:29:55 +10:00
wetFloor.png Prop batch 2: monitor, booth lamp, dishwasher, pool table, wet-floor cone, high tables, plants, and a real red-carpet plate for the door 2026-07-21 02:39:11 +10:00