Document MVP shelter roof piece
This commit is contained in:
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
Reference in New Issue
Block a user