from pathlib import Path


ROOT = Path(__file__).resolve().parents[1]
FILES = {
    "AgrarianMvpFrontendWidget.h": ROOT / "Source" / "AgrarianGame" / "AgrarianMvpFrontendWidget.h",
    "AgrarianMvpFrontendWidget.cpp": ROOT / "Source" / "AgrarianGame" / "AgrarianMvpFrontendWidget.cpp",
    "AgrarianGamePlayerController.h": ROOT / "Source" / "AgrarianGame" / "AgrarianGamePlayerController.h",
    "AgrarianGamePlayerController.cpp": ROOT / "Source" / "AgrarianGame" / "AgrarianGamePlayerController.cpp",
    "AGRARIAN_DEVELOPMENT_ROADMAP.md": ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md",
}

EXPECTED = {
    "AgrarianMvpFrontendWidget.h": [
        "EAgrarianMvpCharacterArchetype",
        "YoungAdultMale",
        "YoungAdultFemale",
        "SelectedCharacterArchetype",
        "SetSelectedCharacterArchetype",
        "NativeOnKeyDown",
    ],
    "AgrarianMvpFrontendWidget.cpp": [
        "EKeys::Left",
        "EKeys::Right",
        "EKeys::A",
        "EKeys::D",
        "Selected",
        "Click a card or use Left/Right",
        "GetSelectedCharacterLabel",
        "HandleMaleCharacterClicked",
        "HandleFemaleCharacterClicked",
        "AgrarianSelectCharacter male",
        "AgrarianSelectCharacter female",
    ],
    "AgrarianGamePlayerController.h": [
        "AgrarianSelectCharacter",
    ],
    "AgrarianGamePlayerController.cpp": [
        "AgrarianSelectCharacter",
        "ApplyMvpCharacterProxyToPawn",
        "SetSelectedCharacterArchetype(EAgrarianMvpCharacterArchetype::YoungAdultMale)",
        "SetSelectedCharacterArchetype(EAgrarianMvpCharacterArchetype::YoungAdultFemale)",
    ],
    "AGRARIAN_DEVELOPMENT_ROADMAP.md": [
        "[x] Let players choose a realistic young adult male or female character with average proportions for the MVP.",
        "`AgrarianSelectCharacter male|female`",
    ],
}


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("MVP character archetype choice verification failed: " + "; ".join(missing))

    print("Agrarian MVP character archetype choice verification complete.")


if __name__ == "__main__":
    main()
