This repository has been archived on 2026-05-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AgrarianGameArchive/Scripts/verify_mvp_frontend_umg_flow.py
T

75 lines
2.3 KiB
Python

#!/usr/bin/env python3
"""Verify the MVP frontend uses real UMG widgets instead of native paint hit boxes."""
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
HEADER = REPO_ROOT / "Source" / "AgrarianGame" / "AgrarianMvpFrontendWidget.h"
SOURCE = REPO_ROOT / "Source" / "AgrarianGame" / "AgrarianMvpFrontendWidget.cpp"
ROADMAP = REPO_ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md"
def require(condition: bool, message: str) -> None:
if not condition:
raise SystemExit(f"FAILED: {message}")
def main() -> None:
header = HEADER.read_text(encoding="utf-8")
source = SOURCE.read_text(encoding="utf-8")
roadmap = ROADMAP.read_text(encoding="utf-8")
for token in (
"class UButton;",
"class UTextBlock;",
"RebuildFrontendTree",
"HandlePrimaryActionClicked",
"HandleBackClicked",
"HandleSaveAndQuitClicked",
"HandleMaleCharacterClicked",
"HandleFemaleCharacterClicked",
):
require(token in header, f"missing frontend UMG declaration: {token}")
for token in (
"WidgetTree->ConstructWidget",
"UButton::StaticClass()",
"UTextBlock::StaticClass()",
"OnClicked.AddDynamic",
"OnHovered.AddDynamic",
"ButtonStyle.Hovered.TintColor",
"ButtonStyle.Pressed.TintColor",
"SetIsFocusable(true)",
"SetKeyboardFocus()",
"BackFromActiveScreen()",
"SaveAndQuit()",
):
require(token in source, f"missing frontend UMG implementation token: {token}")
for removed_token in (
"FSlateDrawElement",
"NativePaint",
"NativeOnMouseButtonDown",
"GetPanelLayout",
"IsPointInside",
"DrawMainMenu",
"DrawCharacterSelection",
"DrawJoinServer",
"DrawLoading",
"DrawTextAt",
):
require(removed_token not in source, f"native-painted frontend path still present: {removed_token}")
require(removed_token not in header, f"native-painted frontend declaration still present: {removed_token}")
require(
"- [x] Replace the native painted MVP frontend with a proper UMG menu flow" in roadmap,
"0.1.O UMG frontend roadmap item is not checked off",
)
print("OK: MVP frontend uses UMG controls with mouse, focus, hover, back, and save/quit paths.")
if __name__ == "__main__":
main()