Sequence startup story before character selection

This commit is contained in:
2026-05-21 22:55:52 +00:00
parent 5cd0c9c6d5
commit e7bd783309
7 changed files with 354 additions and 26 deletions
@@ -3,12 +3,14 @@
#pragma once
#include "CoreMinimal.h"
#include "AgrarianDemoNoticeWidget.h"
#include "GameFramework/PlayerController.h"
#include "AgrarianGamePlayerController.generated.h"
class UInputMappingContext;
class UUserWidget;
class UAgrarianMvpFrontendWidget;
class UAgrarianDemoNoticeWidget;
class AAgrarianShelterActor;
class ACameraActor;
@@ -46,9 +48,19 @@ protected:
TObjectPtr<UAgrarianMvpFrontendWidget> MvpFrontendWidget;
UPROPERTY(EditAnywhere, Category = "Agrarian|MVP UI", meta = (ClampMin = "0.0"))
float MvpFrontendStartupDelaySeconds = 24.25f;
float MvpFrontendStartupDelaySeconds = 0.0f;
UPROPERTY(EditAnywhere, Category = "Agrarian|Startup", meta = (ClampMin = "1.0"))
float StartupSplashSeconds = 4.0f;
UPROPERTY(EditAnywhere, Category = "Agrarian|Startup", meta = (ClampMin = "10.0"))
float StartupStorySeconds = 60.0f;
UPROPERTY(EditAnywhere, Category = "Agrarian|Startup", meta = (ClampMin = "5.0"))
float StartupCreditsSeconds = 20.75f;
FTimerHandle MvpFrontendStartupTimerHandle;
FTimerHandle StartupPresentationTimerHandle;
/** If true, the player will use UMG touch controls even if not playing on mobile platforms */
UPROPERTY(EditAnywhere, Config, Category = "Input|Touch Controls")
@@ -63,6 +75,10 @@ protected:
/** Returns true if the player should use UMG touch controls */
bool ShouldUseTouchControls() const;
void ShowMvpFrontend();
void StartStartupPresentation();
void AdvanceStartupPresentation();
void FinishStartupPresentation();
void ShowStartupPresentationSegment(EAgrarianStartupPresentationSegment Segment, float DurationSeconds);
void ShowMvpPauseMenu();
void HandleMvpConfirmInput();
void HandleMvpBackInput();
@@ -80,7 +96,11 @@ protected:
UPROPERTY()
TObjectPtr<ACameraActor> MvpFrontendCameraActor;
UPROPERTY()
TObjectPtr<UAgrarianDemoNoticeWidget> StartupPresentationWidget;
bool bMvpFrontendPresentationActive = false;
EAgrarianStartupPresentationSegment StartupPresentationSegment = EAgrarianStartupPresentationSegment::Splash;
bool bCachedMvpHudState = false;
bool bCachedShowDebugHUD = true;
bool bCachedShowMvpHudFrame = true;
@@ -155,6 +175,9 @@ public:
UFUNCTION(Exec)
void AgrarianRepairGameplayInput();
UFUNCTION(Exec)
void AgrarianSkipStartupPresentation();
UFUNCTION(Exec)
void AgrarianShowMvpScreen(FName ScreenName);