// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "PauseMenuWidget.generated.h" class UButton; /** * Le menu de pause : trois boutons par-dessus la partie figee. * * Comme UMainMenuWidget, il ne decide de rien -- il appelle * AFpsPlayerController. Mettre SetPause ou OpenLevel ici serait doublement * faux : un widget n'existe que sur la machine du joueur local, et la mise en * pause appartient a l'autorite. * * Classe Abstract : on cree un WBP_PauseMenu qui en herite. */ UCLASS(Abstract) class SURVIVAL_PROJET_API UPauseMenuWidget : public UUserWidget { GENERATED_BODY() public: virtual void NativeConstruct() override; virtual void NativeDestruct() override; protected: /** Reprend la partie. Nomme exactement "ResumeButton" dans le WBP. */ UPROPERTY(meta = (BindWidget)) TObjectPtr ResumeButton; /** Retour au menu principal, apres confirmation. */ UPROPERTY(meta = (BindWidget)) TObjectPtr QuitToMenuButton; /** * BindWidgetOptional : un WBP_PauseMenu sans bouton Reglages reste valide. * * Pas de bouton "Quitter le jeu" ici, volontairement : la sortie se fait * depuis le menu principal, ou l'on repasse de toute facon. */ UPROPERTY(meta = (BindWidgetOptional)) TObjectPtr SettingsButton; /** * Ouvre le panneau d'invitation de l'overlay Steam. C'est la SEULE facon de * faire venir un ami : il n'existe ni navigateur de parties, ni bouton * Rejoindre dans le menu principal. * * Grise tout seul quand l'invitation est impossible -- Steam absent, ou * partie lancee alors qu'il l'etait. Un bouton qui ne repond pas au clic * passe pour un bug ; un bouton grise se comprend tout seul. */ UPROPERTY(meta = (BindWidgetOptional)) TObjectPtr InviteButton; private: UFUNCTION() void HandleResumeClicked(); UFUNCTION() void HandleSettingsClicked(); UFUNCTION() void HandleQuitToMenuClicked(); UFUNCTION() void HandleInviteClicked(); };