Setup phone UI

This commit is contained in:
koritsa
2026-06-02 00:06:13 +03:00
parent d840f59bda
commit dad848cfbc
20 changed files with 350 additions and 5 deletions
@@ -0,0 +1,50 @@
// © 2025 Naked People Team. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "CommonActivatableWidget.h"
#include "PhoneScreenWidget.generated.h"
class UButton;
class UCommonActivatableWidgetStack;
class UPhoneAppWidget;
class UPhoneHomeScreenWidget;
// The phone shell — one activatable pushed onto the GameLayout WidgetStack. It owns an inner app stack:
// the home screen sits at the base, apps push on top. CommonUI back navigation pops the active app to
// home, then closes the phone at home; the physical Home button (GoHome) is the explicit equivalent.
// Battery / BlockPhoneUse gating and the real apps land with the Phase 8 phone systems (GDD §9).
UCLASS(Abstract)
class NAKEDDESIRE_API UPhoneScreenWidget : public UCommonActivatableWidget
{
GENERATED_BODY()
public:
// Push an app onto the stack, on top of the home screen.
void OpenApp(TSubclassOf<UPhoneAppWidget> AppClass);
protected:
virtual void NativeOnActivated() override;
virtual UWidget* NativeGetDesiredFocusTarget() const override;
private:
UPROPERTY(meta = (BindWidget))
TObjectPtr<UCommonActivatableWidgetStack> AppStack;
// The phone's physical home button — clears the app stack back to the home screen.
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> HomeButton;
UPROPERTY(EditDefaultsOnly, Category = "Phone")
TSubclassOf<UPhoneHomeScreenWidget> HomeScreenClass;
// The live home screen at the base of the stack, tracked so GoHome can skip work when it's already on top.
UPROPERTY(Transient)
TObjectPtr<UPhoneHomeScreenWidget> HomeScreen;
UPhoneHomeScreenWidget* PushHomeScreen();
UFUNCTION()
void GoHome();
};