Document MVP shelter roof piece

This commit is contained in:
2026-05-18 11:09:23 -07:00
parent 8c6aa7cdeb
commit e57a77d086
3 changed files with 41 additions and 1 deletions
+4 -1
View File
@@ -619,7 +619,10 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
the craftable `primitive_wall_panel` inventory construction part consumed by the craftable `primitive_wall_panel` inventory construction part consumed by
the primitive shelter recipe; separately placeable modular walls remain the primitive shelter recipe; separately placeable modular walls remain
deferred to `0.2.E Permanent Structures`. deferred to `0.2.E Permanent Structures`.
- [ ] Add roof piece if needed. - [x] Add roof piece if needed. For the kit-based MVP style, the roof piece is
the craftable `primitive_roof_panel` inventory construction part consumed by
the primitive shelter recipe; separately placeable modular roofs remain
deferred to `0.2.E Permanent Structures`.
- [ ] Add door/opening if needed. - [ ] Add door/opening if needed.
- [x] Add resource cost validation. - [x] Add resource cost validation.
- [x] Add construction interaction. - [x] Add construction interaction.
+3
View File
@@ -89,6 +89,9 @@ Early runtime systems should remain small and explicit:
- The MVP wall piece is `primitive_wall_panel`, a craftable inventory - The MVP wall piece is `primitive_wall_panel`, a craftable inventory
construction part consumed by the primitive shelter recipe rather than an construction part consumed by the primitive shelter recipe rather than an
independently placed wall actor. independently placed wall actor.
- The MVP roof piece is `primitive_roof_panel`, a craftable inventory
construction part consumed by the primitive shelter recipe rather than an
independently placed roof actor.
- `UAgrarianBuildingPlacementComponent` owns the MVP placement preview. It - `UAgrarianBuildingPlacementComponent` owns the MVP placement preview. It
traces from the player view, snaps to the configured grid, validates distance traces from the player view, snaps to the configured grid, validates distance
and collision, broadcasts Blueprint-readable preview state, and draws a 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 roof piece if needed.")
require(ROADMAP, "primitive_roof_panel")
require(TECHNICAL_DESIGN, "The MVP roof piece is `primitive_roof_panel`")
require(ITEMS, '"item_id": "primitive_roof_panel"')
require(RECIPES, '"recipe_id": "primitive_roof_panel"')
require(RECIPES, '("primitive_roof_panel", 2)')
require(RECIPE_VERIFY, '"recipe_id": "primitive_roof_panel"')
print("PASS: MVP shelter roof piece is defined as a craftable construction part.")
if __name__ == "__main__":
main()