// 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 PlayButton; UPROPERTY(meta = (BindWidget)) TObjectPtr QuitButton; /** * 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 HostButton; UPROPERTY(meta = (BindWidgetOptional)) TObjectPtr JoinButton; private: UFUNCTION() void HandlePlayClicked(); UFUNCTION() void HandleQuitClicked(); };