Replace MVP frontend with UMG menu flow

This commit is contained in:
2026-05-19 10:14:23 -07:00
parent 2a336fff67
commit af1edb51bc
4 changed files with 364 additions and 486 deletions
+74
View File
@@ -0,0 +1,74 @@
#!/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()