Files
2026-07-28 14:10:17 +02:00

63 lines
1.7 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "MainMenuWidget.generated.h"
class UButton;
/**
* Le menu principal : quelques boutons par-dessus la vue du monde.
*
* Classe Abstract comme les autres widgets du projet : on cree un
* WBP_MainMenu qui en herite, le C++ porte la logique et le Blueprint la mise
* en page.
*
* Le widget ne decide de rien, il appelle AMainMenuPlayerController. Le jour ou
* un bouton devra faire une action reseau, elle sera deja du bon cote : un
* widget n'existe que sur la machine du joueur local, le serveur ne le voit pas.
*/
UCLASS(Abstract)
class SURVIVAL_PROJET_API UMainMenuWidget : public UUserWidget
{
GENERATED_BODY()
public:
virtual void NativeConstruct() override;
protected:
/** Lance la partie solo. Nomme exactement "PlayButton" dans le WBP. */
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> PlayButton;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UButton> QuitButton;
/** BindWidgetOptional : un WBP_MainMenu sans bouton Reglages reste valide. */
UPROPERTY(meta = (BindWidgetOptional))
TObjectPtr<UButton> SettingsButton;
/**
* Coop a venir. BindWidgetOptional et non BindWidget : tu peux dessiner ton
* WBP_MainMenu sans eux aujourd'hui, le Blueprint compilera quand meme.
* S'ils existent, ils sont grises automatiquement.
*/
UPROPERTY(meta = (BindWidgetOptional))
TObjectPtr<UButton> HostButton;
UPROPERTY(meta = (BindWidgetOptional))
TObjectPtr<UButton> JoinButton;
private:
UFUNCTION()
void HandlePlayClicked();
UFUNCTION()
void HandleQuitClicked();
UFUNCTION()
void HandleSettingsClicked();
};