(Feat) Add Main Menu + Music Manger
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Engine/DataAsset.h"
|
||||
#include "MusicPlaylistDataAsset.generated.h"
|
||||
|
||||
class USoundBase;
|
||||
|
||||
/**
|
||||
* Une liste de morceaux et la facon de les enchainer.
|
||||
*
|
||||
* DataAsset et pas une variable sur un acteur : c'est de la DONNEE, au meme titre
|
||||
* qu'un UItemDataAsset. On en cree autant qu'on veut (menu, exploration, nuit,
|
||||
* combat) sans toucher au code, et la meme playlist peut etre referencee par
|
||||
* plusieurs maps -- ce qui est exactement ce qui permet au menu et au jeu de
|
||||
* partager une musique qui ne se coupe pas entre les deux.
|
||||
*
|
||||
* Aucun etat ici : l'index en cours, l'ordre tire au sort et le volume vivent
|
||||
* dans UMusicSubsystem. Un DataAsset est partage par toutes les references, y
|
||||
* mettre de l'etat le partagerait aussi.
|
||||
*/
|
||||
UCLASS(BlueprintType)
|
||||
class SURVIVAL_PROJET_API UMusicPlaylistDataAsset : public UPrimaryDataAsset
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/** Nom lisible, pour un futur affichage "en cours de lecture". */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist")
|
||||
FText DisplayName;
|
||||
|
||||
/**
|
||||
* Les morceaux, dans l'ordre de lecture quand l'aleatoire est desactive.
|
||||
*
|
||||
* Les cases vides sont ignorees a la lecture : une reference oubliee ne coupe
|
||||
* pas la musique, elle est simplement sautee.
|
||||
*
|
||||
* IMPORTANT : aucun de ces sons ne doit boucler sur lui-meme (ni "Looping" sur
|
||||
* la SoundWave, ni un noeud Looping dans la SoundCue). L'enchainement repose
|
||||
* sur OnAudioFinished, qui n'est jamais diffuse par un son qui boucle.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist")
|
||||
TArray<TObjectPtr<USoundBase>> Tracks;
|
||||
|
||||
/**
|
||||
* Mode par defaut au demarrage de CETTE playlist.
|
||||
*
|
||||
* Le joueur peut ensuite basculer en cours de route via
|
||||
* UMusicSubsystem::SetShuffleEnabled ; cette valeur n'est relue qu'au
|
||||
* prochain demarrage de playlist.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist")
|
||||
bool bShuffle = true;
|
||||
|
||||
/** Faux = la musique s'arrete quand tous les morceaux ont ete joues une fois. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist")
|
||||
bool bLoop = true;
|
||||
|
||||
/**
|
||||
* Silence entre deux morceaux, tire au hasard dans l'intervalle.
|
||||
*
|
||||
* Une musique d'ambiance qui respire quelques secondes se remarque beaucoup
|
||||
* moins qu'un flux continu, et c'est ce qui evite la lassitude sur une longue
|
||||
* session. A zero, l'enchainement est immediat.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist", meta = (ClampMin = "0.0", Units = "s"))
|
||||
float MinGapBetweenTracks = 0.f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist", meta = (ClampMin = "0.0", Units = "s"))
|
||||
float MaxGapBetweenTracks = 0.f;
|
||||
|
||||
/** Correction de niveau propre a cette playlist, par-dessus le volume joueur. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist", meta = (ClampMin = "0.0", ClampMax = "2.0"))
|
||||
float VolumeMultiplier = 1.f;
|
||||
|
||||
/** Fondu entrant au demarrage de la playlist (pas entre deux morceaux). */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist", meta = (ClampMin = "0.0", Units = "s"))
|
||||
float FadeInDuration = 2.f;
|
||||
|
||||
/** Fondu sortant quand une autre playlist prend la main, ou a l'arret. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Playlist", meta = (ClampMin = "0.0", Units = "s"))
|
||||
float FadeOutDuration = 2.f;
|
||||
};
|
||||
Reference in New Issue
Block a user