93 lines
3.4 KiB
Python
93 lines
3.4 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify first MVP male/female playable character proxy setup."""
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
CONTROLLER_H = ROOT / "Source" / "AgrarianGame" / "AgrarianGamePlayerController.h"
|
|
CONTROLLER_CPP = ROOT / "Source" / "AgrarianGame" / "AgrarianGamePlayerController.cpp"
|
|
FRONTEND_CPP = ROOT / "Source" / "AgrarianGame" / "AgrarianMvpFrontendWidget.cpp"
|
|
CONFIG = ROOT / "Config" / "DefaultGame.ini"
|
|
DOC = ROOT / "Docs" / "Characters" / "MvpCharacterProxies.md"
|
|
SETUP = ROOT / "Scripts" / "setup_mvp_character_proxies.py"
|
|
ROADMAP = ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md"
|
|
MALE_MATERIAL = ROOT / "Content" / "Agrarian" / "Characters" / "Materials" / "M_AGR_CharacterProxy_Workwear_Male.uasset"
|
|
FEMALE_MATERIAL = ROOT / "Content" / "Agrarian" / "Characters" / "Materials" / "M_AGR_CharacterProxy_Workwear_Female.uasset"
|
|
|
|
|
|
def require(condition: bool, message: str) -> None:
|
|
if not condition:
|
|
raise SystemExit(f"FAILED: {message}")
|
|
|
|
|
|
def main() -> None:
|
|
controller_h = CONTROLLER_H.read_text(encoding="utf-8")
|
|
controller = CONTROLLER_CPP.read_text(encoding="utf-8")
|
|
frontend = FRONTEND_CPP.read_text(encoding="utf-8")
|
|
config = CONFIG.read_text(encoding="utf-8")
|
|
doc = DOC.read_text(encoding="utf-8")
|
|
setup = SETUP.read_text(encoding="utf-8")
|
|
roadmap = ROADMAP.read_text(encoding="utf-8")
|
|
|
|
for token in (
|
|
"ApplyMvpCharacterProxyToPawn",
|
|
"SelectedMvpCharacterProxyId",
|
|
):
|
|
require(token in controller_h, f"controller header missing {token}")
|
|
|
|
for token in (
|
|
"SKM_Manny_Simple",
|
|
"SKM_Quinn_Simple",
|
|
"M_AGR_CharacterProxy_Workwear_Male",
|
|
"M_AGR_CharacterProxy_Workwear_Female",
|
|
"SetSkeletalMesh",
|
|
"SetMaterial",
|
|
"SelectedMvpCharacterProxyId = TEXT(\"male\")",
|
|
"SelectedMvpCharacterProxyId = TEXT(\"female\")",
|
|
"ApplyMvpCharacterProxyToPawn();",
|
|
):
|
|
require(token in controller, f"controller implementation missing {token}")
|
|
|
|
for token in (
|
|
"AgrarianSelectCharacter female",
|
|
"AgrarianSelectCharacter male",
|
|
"practical workwear proxy",
|
|
):
|
|
require(token in frontend, f"frontend character proxy flow missing {token}")
|
|
|
|
for token in (
|
|
"M_AGR_CharacterProxy_Workwear_Male",
|
|
"M_AGR_CharacterProxy_Workwear_Female",
|
|
"MaterialFactoryNew",
|
|
"MP_BASE_COLOR",
|
|
"MP_ROUGHNESS",
|
|
):
|
|
require(token in setup, f"setup script missing {token}")
|
|
|
|
require(
|
|
'+DirectoriesToAlwaysCook=(Path="/Game/Agrarian/Characters")' in config,
|
|
"character proxy folder is not always cooked",
|
|
)
|
|
|
|
for token in (
|
|
"SKM_Manny_Simple",
|
|
"SKM_Quinn_Simple",
|
|
"not final production humans",
|
|
"Final character work should replace these proxies",
|
|
):
|
|
require(token in doc, f"character proxy doc missing {token}")
|
|
|
|
require(
|
|
"- [x] Add first realistic playable character proxies for the selected young adult male and female archetypes" in roadmap,
|
|
"0.1.O character proxy roadmap item is not checked off",
|
|
)
|
|
require(MALE_MATERIAL.exists(), "male character proxy material asset is missing")
|
|
require(FEMALE_MATERIAL.exists(), "female character proxy material asset is missing")
|
|
|
|
print("OK: MVP male/female playable character proxy flow is wired and documented.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|