(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
@@ -0,0 +1,63 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Info.h"
#include "MusicSubsystem.h"
#include "MusicDirector.generated.h"
class UMusicPlaylistDataAsset;
/**
* Declare la musique du jeu. UN SEUL exemplaire suffit, dans la premiere map
* chargee -- typiquement la scene de menu.
*
* Il ne joue rien lui-meme et ne survit pas a sa map : il transmet sa consigne a
* UMusicSubsystem, qui, lui, vit sur le GameInstance et traverse tous les
* changements de niveau. C'est pour ca que les maps suivantes n'ont besoin de
* rien : la musique continue toute seule, et la regle de transition a deja ete
* posee ici.
*
* En poser un second dans une autre map reste possible : il change alors de
* playlist a l'arrivee sur celle-la.
*
* Derive d'AInfo : aucun visuel, aucun tick, et AInfo se declare non
* spatialement charge, donc il est present des le demarrage meme en World
* Partition -- un acteur ordinaire hors de la zone de streaming ne ferait jamais
* son BeginPlay.
*/
UCLASS(ClassGroup = "Audio", meta = (DisplayName = "Music Director"))
class SURVIVAL_PROJET_API AMusicDirector : public AInfo
{
GENERATED_BODY()
public:
AMusicDirector();
protected:
virtual void BeginPlay() override;
/**
* La playlist a lancer en arrivant sur cette map.
*
* Si c'est deja elle qui tourne, elle n'est pas relancee. La laisser vide veut
* dire "je ne change pas la musique en cours", et n'a d'interet que sur un
* second Director pose uniquement pour changer la regle de transition.
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Musique")
TObjectPtr<UMusicPlaylistDataAsset> Playlist;
/**
* Ce que devient le morceau en cours a CHAQUE changement de scene suivant.
*
* Continue : il poursuit sa route par-dessus le chargement.
* New : il s'eteint et le lecteur en demarre un autre -- tirage aleatoire
* ou morceau suivant, selon le mode de la playlist.
*
* La consigne est envoyee au lecteur, qui la garde : les autres maps n'ont
* rien a declarer.
*/
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Musique")
EMusicLevelChangeMode LevelChangeMode = EMusicLevelChangeMode::Continue;
};