(Feat) Add Main Menu + Music Manger

This commit is contained in:
2026-07-29 20:18:51 +02:00
parent 956f48816b
commit 9b5ad7c8a4
55 changed files with 3727 additions and 125 deletions
@@ -4,6 +4,7 @@
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "Containers/Ticker.h"
#include "ConfirmDialogWidget.generated.h"
class UButton;
@@ -48,6 +49,20 @@ public:
UFUNCTION(BlueprintCallable, Category = "Dialogue")
void Open(const FText& InMessage);
/**
* Meme chose, mais avec un retour automatique passe le delai.
*
* @param InMessageFormat doit contenir {0}, remplace par les secondes
* restantes. Exemple : "Garder ce mode ?\nRetour
* automatique dans {0} s."
*
* A l'expiration, OnCancelled est diffuse -- comme si le joueur avait
* refuse. C'est le seul filet quand la question porte sur un changement qui
* peut rendre l'ecran illisible.
*/
UFUNCTION(BlueprintCallable, Category = "Dialogue")
void OpenWithCountdown(const FText& InMessageFormat, float Seconds);
/** Referme la boite. Ne previent personne : l'appelant sait ce qu'il fait. */
UFUNCTION(BlueprintCallable, Category = "Dialogue")
void Close();
@@ -82,4 +97,27 @@ private:
UFUNCTION()
void HandleCancelClicked();
/** Un tick par frame tant que le rebours tourne. Renvoie false pour s'arreter. */
bool TickCountdown(float DeltaTime);
void StopCountdown();
void RefreshCountdownText();
/**
* Le rebours passe par le ticker du moteur et non par un timer du monde.
*
* Deux raisons : l'ecran de reglages s'ouvre depuis le menu de PAUSE, ou les
* timers du monde sont geles -- le rebours ne repartirait jamais ; et un
* changement de resolution rate doit se defaire meme si le jeu bloque.
*/
FTSTicker::FDelegateHandle CountdownTickerHandle;
FText CountdownMessageFormat;
float CountdownRemaining = 0.f;
/** Evite de reecrire le texte 60 fois par seconde pour rien. */
int32 LastDisplayedSeconds = -1;
};