Add item use command

This commit is contained in:
2026-05-17 13:01:00 -07:00
parent 555ad6df25
commit 712a8548c0
7 changed files with 181 additions and 1 deletions
+76
View File
@@ -0,0 +1,76 @@
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
FILES = {
"AgrarianSurvivalComponent.h": ROOT / "Source" / "AgrarianGame" / "AgrarianSurvivalComponent.h",
"AgrarianSurvivalComponent.cpp": ROOT / "Source" / "AgrarianGame" / "AgrarianSurvivalComponent.cpp",
"AgrarianGamePlayerController.h": ROOT / "Source" / "AgrarianGame" / "AgrarianGamePlayerController.h",
"AgrarianGamePlayerController.cpp": ROOT / "Source" / "AgrarianGame" / "AgrarianGamePlayerController.cpp",
"TechnicalDesignDocument.md": ROOT / "Docs" / "TechnicalDesignDocument.md",
"InventoryDataModel.md": ROOT / "Docs" / "InventoryDataModel.md",
"AGRARIAN_DEVELOPMENT_ROADMAP.md": ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md",
}
EXPECTED = {
"AgrarianSurvivalComponent.h": [
"void ReduceInjury(float Amount);",
],
"AgrarianSurvivalComponent.cpp": [
"void UAgrarianSurvivalComponent::ReduceInjury",
"Survival.InjurySeverity -= FMath::Max(0.0f, Amount);",
"BroadcastSurvivalChanged();",
],
"AgrarianGamePlayerController.h": [
"void AgrarianUseItem(FName ItemId, int32 Quantity);",
"void ServerAgrarianUseItem(FName ItemId, int32 Quantity);",
],
"AgrarianGamePlayerController.cpp": [
"ApplyAgrarianItemUseEffect",
"ItemId == TEXT(\"food\")",
"SurvivalComponent->AddFood(15.0f * Quantity);",
"ItemId == TEXT(\"meat\")",
"SurvivalComponent->AddSickness(3.0f * Quantity);",
"ItemId == TEXT(\"bandage\")",
"SurvivalComponent->ReduceInjury(18.0f * Quantity);",
"void AAgrarianGamePlayerController::AgrarianUseItem(FName ItemId, int32 Quantity)",
"Usage: AgrarianUseItem <ItemId> <Quantity>",
"void AAgrarianGamePlayerController::ServerAgrarianUseItem_Implementation",
"InventoryComponent->ExtractItem(ItemId, Quantity, UsedStack)",
"InventoryComponent->AddItem(UsedStack);",
"cannot be used yet; item restored",
],
"TechnicalDesignDocument.md": [
"`AgrarianUseItem ItemId Quantity`",
"`food` restores hunger",
"`meat` restores more hunger",
"adds sickness risk",
"`bandage` reduces injury severity",
"restores the stack if the item is not usable yet",
],
"InventoryDataModel.md": [
"Item use:",
"server validates the item type and applies item-specific effects.",
],
"AGRARIAN_DEVELOPMENT_ROADMAP.md": [
"[x] Add item use.",
],
}
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("Item use verification failed: " + "; ".join(missing))
print("Agrarian item use verification complete.")
if __name__ == "__main__":
main()