Document MVP shelter wall piece

This commit is contained in:
2026-05-18 11:05:49 -07:00
parent 6baeca2783
commit 8c6aa7cdeb
3 changed files with 41 additions and 1 deletions
+4 -1
View File
@@ -615,7 +615,10 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
footprint at the snapped placement location for MVP development builds.
- [x] Add placement validation.
- [x] Add basic shelter piece.
- [ ] Add wall piece if needed.
- [x] Add wall piece if needed. For the kit-based MVP style, the wall piece is
the craftable `primitive_wall_panel` inventory construction part consumed by
the primitive shelter recipe; separately placeable modular walls remain
deferred to `0.2.E Permanent Structures`.
- [ ] Add roof piece if needed.
- [ ] Add door/opening if needed.
- [x] Add resource cost validation.
+3
View File
@@ -86,6 +86,9 @@ Early runtime systems should remain small and explicit:
as inventory parts and then combined into a single placeable primitive
shelter actor. Fully modular wall-by-wall construction is deferred to
permanent structures so the first survival loop remains reliable.
- The MVP wall piece is `primitive_wall_panel`, a craftable inventory
construction part consumed by the primitive shelter recipe rather than an
independently placed wall actor.
- `UAgrarianBuildingPlacementComponent` owns the MVP placement preview. It
traces from the player view, snaps to the configured grid, validates distance
and collision, broadcasts Blueprint-readable preview state, and draws a
+34
View File
@@ -0,0 +1,34 @@
#!/usr/bin/env python3
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
ROADMAP = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md"
TECHNICAL_DESIGN = ROOT / "Docs" / "TechnicalDesignDocument.md"
ITEMS = ROOT / "Scripts" / "setup_item_definitions.py"
RECIPES = ROOT / "Scripts" / "setup_recipe_definitions.py"
RECIPE_VERIFY = ROOT / "Scripts" / "verify_recipe_definitions.py"
def compact(path: Path) -> str:
return " ".join(path.read_text(encoding="utf-8").split())
def require(path: Path, text: str) -> None:
data = compact(path)
if text not in data:
raise SystemExit(f"FAIL: {path.relative_to(ROOT)} missing required text: {text}")
def main() -> None:
require(ROADMAP, "[x] Add wall piece if needed.")
require(ROADMAP, "primitive_wall_panel")
require(TECHNICAL_DESIGN, "The MVP wall piece is `primitive_wall_panel`")
require(ITEMS, '"item_id": "primitive_wall_panel"')
require(RECIPES, '"recipe_id": "primitive_wall_panel"')
require(RECIPES, '("primitive_wall_panel", 4)')
require(RECIPE_VERIFY, '"recipe_id": "primitive_wall_panel"')
print("PASS: MVP shelter wall piece is defined as a craftable construction part.")
if __name__ == "__main__":
main()