Decide MVP shelter opening scope

This commit is contained in:
2026-05-18 11:13:04 -07:00
parent e57a77d086
commit 01d439c415
3 changed files with 35 additions and 1 deletions
+3 -1
View File
@@ -623,7 +623,9 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
the craftable `primitive_roof_panel` inventory construction part consumed by the craftable `primitive_roof_panel` inventory construction part consumed by
the primitive shelter recipe; separately placeable modular roofs remain the primitive shelter recipe; separately placeable modular roofs remain
deferred to `0.2.E Permanent Structures`. deferred to `0.2.E Permanent Structures`.
- [ ] Add door/opening if needed. - [x] Add door/opening if needed. MVP primitive shelters use an open entrance
with no interactive door; door actors, locks, permissions, and modular
openings remain deferred to `0.2.E Permanent Structures`.
- [x] Add resource cost validation. - [x] Add resource cost validation.
- [x] Add construction interaction. - [x] Add construction interaction.
- [x] Add shelter protection volume. - [x] Add shelter protection volume.
+3
View File
@@ -92,6 +92,9 @@ Early runtime systems should remain small and explicit:
- The MVP roof piece is `primitive_roof_panel`, a craftable inventory - The MVP roof piece is `primitive_roof_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 roof actor. independently placed roof actor.
- MVP primitive shelters use an open entrance and do not include an
interactive door. Door actors, locks, ownership permissions, and modular
openings are deferred to permanent structures.
- `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
@@ -0,0 +1,29 @@
#!/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"
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 door/opening if needed.")
require(ROADMAP, "MVP primitive shelters use an open entrance")
require(ROADMAP, "door actors, locks, permissions, and modular openings remain deferred")
require(TECHNICAL_DESIGN, "MVP primitive shelters use an open entrance")
require(TECHNICAL_DESIGN, "Door actors, locks, ownership permissions, and modular openings are deferred")
print("PASS: MVP shelter door/opening decision is documented.")
if __name__ == "__main__":
main()