M5 — Inventory & equipment #7

Closed
opened 2026-07-16 23:04:48 +02:00 by marco · 1 comment
Owner

Carry and wear items: backpack inventory, paperdoll equipment slots, containers.

Scope

  • Backpack inventory; move items world↔backpack.
  • Equip/unequip into paperdoll slots; equipped items visible to nearby observers.
  • Containers (bags/chests).
  • Every transition validated server-side.

Definition of Done

Base DoD applies on top (tests green, whole solution builds, zero warnings, multi-platform preserved); the criteria below are the issue-specific delta.

  • Pick up → item in backpack; equip a wearable → reflected on the paperdoll and to nearby observers.
  • Server rejects illegal transitions (equip a non-wearable, exceed slots, move an item you don't hold) — unit tested.
  • Inventory/equipment persist across reconnect (given M1).
Carry and wear items: backpack inventory, paperdoll equipment slots, containers. ## Scope - [ ] Backpack inventory; move items world↔backpack. - [ ] Equip/unequip into paperdoll slots; equipped items visible to nearby observers. - [ ] Containers (bags/chests). - [ ] Every transition validated server-side. ## Definition of Done _Base DoD applies on top (tests green, whole solution builds, zero warnings, multi-platform preserved); the criteria below are the issue-specific delta._ - [ ] Pick up → item in backpack; equip a wearable → reflected on the paperdoll and to nearby observers. - [ ] Server rejects illegal transitions (equip a non-wearable, exceed slots, move an item you don't hold) — unit tested. - [ ] Inventory/equipment persist across reconnect (given M1).
Author
Owner

Done and merged to main (commit 81ac472).

Players now have a backpack + equipment: pick up (E or click, within 1 tile) sends items to the backpack; a drag-and-drop inventory/paperdoll window (I) lets you equip/unequip and drop onto a target tile; drop is capped to one tile around the player and validated server-side. All transitions are authoritative (ItemRegistry, extracted from World), and inventory persists across reconnect (dual-provider EF, off the tick loop). New additive protocol: InventoryState, Equip/Unequip, Drop(itemId, x, y), OwnedItem.

Also this milestone: the item domain moved into ItemRegistry with World as a thin single-lock facade (architecture rule recorded in CLAUDE.md + docs/architecture.md), and a macOS AirPlay/port-5000 login bug was fixed (Auth moved to :5080).

Verified in-game (pick up / equip / drag-drop / drop-in-range / persist across relog) plus unit + integration tests; 147 tests green, zero warnings.

Deferred as agreed: containers (bags/chests) and equipment visible to other players (layered paperdoll art, needs UO equip art) — the latter is tracked in #18.

Done and merged to `main` (commit 81ac472). Players now have a **backpack + equipment**: pick up (E or click, within 1 tile) sends items to the backpack; a **drag-and-drop inventory/paperdoll** window (I) lets you equip/unequip and drop onto a target tile; drop is capped to one tile around the player and validated server-side. All transitions are authoritative (`ItemRegistry`, extracted from `World`), and **inventory persists across reconnect** (dual-provider EF, off the tick loop). New additive protocol: `InventoryState`, `Equip`/`Unequip`, `Drop(itemId, x, y)`, `OwnedItem`. Also this milestone: the item domain moved into `ItemRegistry` with `World` as a thin single-lock facade (architecture rule recorded in CLAUDE.md + docs/architecture.md), and a macOS AirPlay/port-5000 login bug was fixed (Auth moved to :5080). Verified in-game (pick up / equip / drag-drop / drop-in-range / persist across relog) plus unit + integration tests; 147 tests green, zero warnings. Deferred as agreed: **containers** (bags/chests) and **equipment visible to other players** (layered paperdoll art, needs UO equip art) — the latter is tracked in #18.
marco closed this issue 2026-07-17 09:26:00 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo#7
No description provided.