This repository has been archived on 2026-05-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AgrarianGameArchive/Scripts/verify_mvp_readable_survival_object_proxies.py
T

121 lines
3.9 KiB
Python

#!/usr/bin/env python3
"""Verify 0.1.O readable survival-object proxy coverage."""
from __future__ import annotations
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
REQUIRED_SNIPPETS = {
"Source/AgrarianGame/AgrarianCampfire.h": [
"StoneRingProxy",
"LogProxyA",
"LogProxyB",
"LogProxyC",
"EmberProxy",
],
"Source/AgrarianGame/AgrarianCampfire.cpp": [
"SM_AGR_Placeholder_Cylinder",
"M_AGR_GZ_Wood_Resource",
"M_AGR_GZ_Stone_Sandstone",
"ConfigureCampfireProxyComponent",
"LogProxyA->SetRelativeRotation",
],
"Source/AgrarianGame/AgrarianShelterActor.h": [
"FloorProxy",
"BackWallProxy",
"LeftRoofProxy",
"RightRoofProxy",
"FrameProxyA",
"FrameProxyB",
],
"Source/AgrarianGame/AgrarianShelterActor.cpp": [
"SM_AGR_Placeholder_ChamferCube",
"M_AGR_GZ_Fiber_Resource",
"LeftRoofProxy->SetRelativeRotation",
"ConfigureShelterProxyComponent",
],
"Source/AgrarianGame/AgrarianWaterSource.h": [
"WaterSurfaceProxy",
"StoneBankProxy",
"CollectMarkerProxy",
],
"Source/AgrarianGame/AgrarianWaterSource.cpp": [
"SM_AGR_Placeholder_Plane",
"M_AGR_GZ_FreshWater",
"WaterSurfaceProxy->SetCollisionEnabled(ECollisionEnabled::NoCollision)",
"StoneBankProxy->SetCollisionEnabled(ECollisionEnabled::NoCollision)",
],
"Source/AgrarianGame/AgrarianItemPickup.h": [
"BundleProxy",
"StrapProxy",
"ItemMarkerProxy",
],
"Source/AgrarianGame/AgrarianItemPickup.cpp": [
"BundleProxy->SetRelativeRotation",
"StrapProxy->SetCollisionEnabled(ECollisionEnabled::NoCollision)",
"ItemMarkerProxy->SetCollisionEnabled(ECollisionEnabled::NoCollision)",
],
"Source/AgrarianGame/AgrarianResourceNode.h": [
"ResourceClusterProxy",
"HarvestableMarkerProxy",
],
"Source/AgrarianGame/AgrarianResourceNode.cpp": [
"ResourceClusterProxy->SetRelativeRotation",
"HarvestableMarkerProxy->SetCollisionEnabled(ECollisionEnabled::NoCollision)",
"Mesh->SetVisibility(RemainingHarvests > 0, true)",
],
"Source/AgrarianGame/AgrarianWildlifeBase.h": [
"WildlifeBodyProxy",
"WildlifeHeadProxy",
"WildlifeEarProxyA",
"WildlifeEarProxyB",
"WildlifeTailProxy",
],
"Source/AgrarianGame/AgrarianWildlifeBase.cpp": [
"WildlifeBodyProxy->SetupAttachment(RootComponent)",
"WildlifeHeadProxy->SetupAttachment(WildlifeBodyProxy)",
"WildlifeTailProxy->SetRelativeRotation",
"ConfigureWildlifeProxyComponent",
],
"Docs/CharactersAndObjects/MvpReadableSurvivalObjectProxies.md": [
"MVP Readable Survival Object Proxies",
"no collision",
"Final realistic art should replace these proxies",
],
"AGRARIAN_DEVELOPMENT_ROADMAP.md": [
"- [x] Replace box/sphere/cylinder survival objects with readable MVP meshes",
"Added composed native proxy visuals for campfires, primitive shelters, pickups, resource nodes, water sources, and wildlife",
],
}
def main() -> int:
missing: list[str] = []
for relative_path, snippets in REQUIRED_SNIPPETS.items():
path = ROOT / relative_path
if not path.exists():
missing.append(f"{relative_path}: file missing")
continue
text = path.read_text(encoding="utf-8")
for snippet in snippets:
if snippet not in text:
missing.append(f"{relative_path}: missing {snippet!r}")
if missing:
print("Readable survival-object proxy verification failed:")
for item in missing:
print(f"- {item}")
return 1
print("Readable survival-object proxy verification passed.")
return 0
if __name__ == "__main__":
raise SystemExit(main())