Harden MVP menu input and quit flow
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
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",
|
||||
}
|
||||
|
||||
EXPECTED = {
|
||||
"AgrarianMvpFrontendWidget.h": [
|
||||
"ConfirmActiveScreen",
|
||||
"BackFromActiveScreen",
|
||||
"SaveAndQuit",
|
||||
],
|
||||
"AgrarianMvpFrontendWidget.cpp": [
|
||||
"NativeOnMouseButtonDown",
|
||||
"IsPointInside(LocalMousePosition, MaleCardPosition, CardSize)",
|
||||
"IsPointInside(LocalMousePosition, FemaleCardPosition, CardSize)",
|
||||
"Save & Quit",
|
||||
"ConsoleCommand(TEXT(\"AgrarianSaveWorld\"))",
|
||||
"ConsoleCommand(TEXT(\"quit\"))",
|
||||
"PlayerController->SetIgnoreMoveInput(false)",
|
||||
"PlayerController->SetIgnoreLookInput(false)",
|
||||
],
|
||||
"AgrarianGamePlayerController.h": [
|
||||
"ShowMvpPauseMenu",
|
||||
"HandleMvpEscapeInput",
|
||||
],
|
||||
"AgrarianGamePlayerController.cpp": [
|
||||
"SetIgnoreMoveInput(true)",
|
||||
"SetIgnoreLookInput(true)",
|
||||
"InputComponent->BindKey(EKeys::Enter",
|
||||
"InputComponent->BindKey(EKeys::SpaceBar",
|
||||
"InputComponent->BindKey(EKeys::Escape",
|
||||
"MvpFrontendWidget->IsInViewport()",
|
||||
"ShowMvpPauseMenu();",
|
||||
],
|
||||
}
|
||||
|
||||
FORBIDDEN = {
|
||||
"AgrarianGamePlayerController.cpp": [
|
||||
"BindKey(EKeys::LeftMouseButton",
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def main():
|
||||
failures = []
|
||||
for label, path in FILES.items():
|
||||
text = path.read_text(encoding="utf-8")
|
||||
for snippet in EXPECTED[label]:
|
||||
if snippet not in text:
|
||||
failures.append(f"{label} missing {snippet!r}")
|
||||
|
||||
for snippet in FORBIDDEN.get(label, []):
|
||||
if snippet in text:
|
||||
failures.append(f"{label} should not contain {snippet!r}")
|
||||
|
||||
if failures:
|
||||
raise RuntimeError("MVP menu input and quit flow verification failed: " + "; ".join(failures))
|
||||
|
||||
print("Agrarian MVP menu input and quit flow verification complete.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user