feat(vagrant): notification system — Inspect modal, pickup-float, toast events, game-log

- manifest: bump to v0.10.0; add deps lib-core.notify, lib-core.notify-display,
  lib-core.world-overlay (all v0.1.0)
- Inspect action migrated from engine.print to notify.post{tags={"inspect"}, data={...}};
  routes to modal detail-panel via notify-display detail-channel
- Pickup callback: world_overlay.spawn fires "+1 <name>" float anchored on player
  (yellow, rise_px=24, ttl=1.2s) + notify.post pickup event-toast/log entry
- Drop action (right-click menu): notify.post{tags={"drop","inventory"}} added
  after existing relocate+close_menu logic
- Setup block: 3 channels (inspect/events/log), 2 panel widgets
  (inspect-detail/game-log), 3 attach_mode calls; L bound to game-log panel
- M.update: notify_display.update + world_overlay.update after panel.update pause-guard
- M.draw: camera_handle constructed after camera.finish(); world_overlay.render between
  camera.finish and panel.render; notify_display.render at end (toasts on top)
- README: version 0.10.0, Requires expanded, Controls section updated, changelog entry added
This commit is contained in:
Axel Meyer
2026-06-14 01:59:28 +02:00
parent f66ffc7f12
commit 6b4c698984
3 changed files with 129 additions and 25 deletions

View File

@@ -8,9 +8,9 @@ callback, foot-body-orientation ("tactical twist"), scale-deformation walk
cycle, and inheritance-decoupled foot sprites. End-to-end inventory pickup/drop
demo: pick up a rock into a backpack container, drop it back into the world.
**Version:** 0.9.1
**Version:** 0.10.0
**Module-ID:** vagrant-skeleton
**Requires:** lib-core.input >=0.4.0, lib-core.camera >=0.3.0, lib-core.render >=0.1.0, lib-core.maps >=0.1.2, lib-core.puppet >=0.4.4, lib-core.interaction >=0.1.0, lib-core.composition >=0.2.0, lib-core.actor >=0.1.0, lib-core.inventory-list >=0.1.0, lib-core.panel >=0.1.0, lib-core.inventory-list-display >=0.1.0, lib-asset.prototype-subterrain >=0.1.0
**Requires:** lib-core.input >=0.4.0, lib-core.camera >=0.3.0, lib-core.render >=0.1.0, lib-core.maps >=0.1.2, lib-core.puppet >=0.4.4, lib-core.interaction >=0.1.0, lib-core.composition >=0.2.0, lib-core.actor >=0.1.0, lib-core.inventory-list >=0.1.0, lib-core.panel >=0.1.0, lib-core.inventory-list-display >=0.1.0, lib-core.notify >=0.1.0, lib-core.notify-display >=0.1.0, lib-core.world-overlay >=0.1.0, lib-asset.prototype-subterrain >=0.1.0
**Tags:** test-chamber, puppet, walking-sim, interaction
## Topology
@@ -27,6 +27,10 @@ demo: pick up a rock into a backpack container, drop it back into the world.
- **Q** — quick-drop (LIFO): places the most-recently-added backpack item at player position (+30px right)
- **Tab** — toggle inventory panel (Backpack contents)
- **Right-Click on item row** (while panel open): context menu with **Drop** / **Inspect** options
- **L** — toggle game-log (chronological list of all events)
- **Right-Click on item row → Inspect** — opens a modal Item Details panel (instead of console-only output)
- **Pickup (E)** — shows "+1 <name>" floating above the player + toast at top-right + log entry
- **Drop (right-click on item → Drop, or Q for LIFO quick-drop)** — toast at top-right + log entry
- **ESC** — return to launcher
## Demo Walkthrough
@@ -111,6 +115,23 @@ Only one rock is spawned per session.
## CHANGELOG
### v0.10.0 — notification system integration
- **Inspect modal**: Inspect action replaced with `notify.post{tags={"inspect"}, ...}` routing
to a modal detail-panel (`notify-display` detail-channel). Item name, description, weight,
volume, and material composition are passed as structured data.
Inspect no longer calls engine.print directly; the notify lib's engine-log mirror routes the event to engine.log for backward-compat with dev tools.
- **Pickup world-float**: after `inventory.add`, a `world_overlay.spawn` fires a "+1 Rock"
floating text anchored to the player (yellow, rises 24px, fades in 1.2s). A `notify.post`
simultaneously emits a pickup event-toast and log entry.
- **Drop toast**: the Drop action (both right-click menu and Q quick-drop) emits a
`notify.post{tags={"drop","inventory"}}` event-toast after the item is relocated.
- **Game-log panel**: a catch-all log channel (`filter={}`) captures every pickup, drop, and
inspect event chronologically. **L** toggles the panel.
- **New deps**: lib-core.notify v0.1.0, lib-core.notify-display v0.1.0,
lib-core.world-overlay v0.1.0.
- **Render order**: camera.finish() → world_overlay.render(camera_handle) →
panel.render() → notify_display.render() (toasts on top of all UI).
### v0.9.1 — item-template player-facing properties
- **Rock template enriched**: `name`, `description`, `weight` (kg),
`volume` (L), and `composition.stone = 1.0` properties added. Other item