// 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. Nomme exactement "PlayButton" dans le WBP. * * Un seul bouton, et toute partie est en ligne : il n'y a ni "Heberger" ni * "Rejoindre". On arrive chez un ami par invitation Steam et par rien * d'autre, ce qui evite au joueur de choisir un mode avant de savoir si * quelqu'un le rejoindra. */ UPROPERTY(meta = (BindWidget)) TObjectPtr PlayButton; UPROPERTY(meta = (BindWidget)) TObjectPtr QuitButton; /** BindWidgetOptional : un WBP_MainMenu sans bouton Reglages reste valide. */ UPROPERTY(meta = (BindWidgetOptional)) TObjectPtr SettingsButton; private: UFUNCTION() void HandlePlayClicked(); UFUNCTION() void HandleQuitClicked(); UFUNCTION() void HandleSettingsClicked(); };