from pathlib import Path ROOT = Path(__file__).resolve().parents[1] FILES = { "AgrarianTypes.h": ROOT / "Source" / "AgrarianGame" / "AgrarianTypes.h", "AgrarianInventoryComponent.cpp": ROOT / "Source" / "AgrarianGame" / "AgrarianInventoryComponent.cpp", "AgrarianGameCharacter.h": ROOT / "Source" / "AgrarianGame" / "AgrarianGameCharacter.h", "AgrarianGameCharacter.cpp": ROOT / "Source" / "AgrarianGame" / "AgrarianGameCharacter.cpp", "AgrarianDebugHUD.cpp": ROOT / "Source" / "AgrarianGame" / "AgrarianDebugHUD.cpp", "InventoryDataModel.md": ROOT / "Docs" / "InventoryDataModel.md", "TechnicalDesignDocument.md": ROOT / "Docs" / "TechnicalDesignDocument.md", "AGRARIAN_DEVELOPMENT_ROADMAP.md": ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md", } EXPECTED = { "AgrarianTypes.h": [ "UnitWeight", ], "AgrarianInventoryComponent.cpp": [ "UAgrarianInventoryComponent::GetTotalWeight", "Stack.UnitWeight", "Stack.Quantity", ], "AgrarianGameCharacter.h": [ "ComfortableCarryWeight = 25.0f", "HeavyCarryWeight = 60.0f", "CalculateCarryWeightMovementMultiplier", "GetCurrentCarryWeight", ], "AgrarianGameCharacter.cpp": [ "AAgrarianGameCharacter::GetCurrentCarryWeight", "InventoryComponent->GetTotalWeight()", "CalculateCarryWeightMovementMultiplier()", "AAgrarianGameCharacter::CalculateCarryWeightMovementMultiplier", "StrengthMultiplier", "FVector2D(1.0f, 0.65f)", "return 0.45f", ], "AgrarianDebugHUD.cpp": [ "GetCurrentCarryWeight()", ], "InventoryDataModel.md": [ "## Carry Capacity Placeholder", "weight-first", "movement penalty", "`UnitWeight`", "`GetTotalWeight`", "`GetCurrentCarryWeight`", "`25.0`", "`60.0`", "`StrengthMultiplier`", "`45%` carry multiplier", "parallel inventory burden model", ], "TechnicalDesignDocument.md": [ "Carry capacity is active as an MVP placeholder", "stack `UnitWeight`", "inventory `GetTotalWeight`", "`25.0` comfort and `60.0` heavy", "debug", "HUD", ], "AGRARIAN_DEVELOPMENT_ROADMAP.md": [ "[x] Add weight or carry capacity placeholder.", "stack `UnitWeight`", "inventory `GetTotalWeight`", "strength-scaled movement penalties", ], } def main(): missing = [] for label, path in FILES.items(): text = path.read_text(encoding="utf-8") for snippet in EXPECTED[label]: if snippet not in text: missing.append(f"{label}: {snippet}") if missing: raise RuntimeError("Carry capacity placeholder verification failed: " + "; ".join(missing)) print("Agrarian carry capacity placeholder verification complete.") if __name__ == "__main__": main()