(Feat) Add mulitplayer
This commit is contained in:
@@ -21,6 +21,12 @@ class USettingsMenuWidget;
|
||||
enum class EMenuPendingAction : uint8
|
||||
{
|
||||
None,
|
||||
|
||||
/**
|
||||
* Le fondu part AVANT la creation de la session, qui est asynchrone. La map
|
||||
* n'est donc chargee qu'a la reponse du service en ligne -- ou tout de suite
|
||||
* si celui-ci refuse, puisqu'un echec reseau ne doit pas empecher de jouer.
|
||||
*/
|
||||
StartGame
|
||||
};
|
||||
|
||||
@@ -38,9 +44,21 @@ class SURVIVAL_PROJET_API AMainMenuPlayerController : public APlayerController
|
||||
public:
|
||||
AMainMenuPlayerController();
|
||||
|
||||
/** Fondu au noir, puis chargement de la map de jeu. */
|
||||
/**
|
||||
* Fondu au noir, creation de la session, puis ouverture de la map en
|
||||
* serveur d'ecoute.
|
||||
*
|
||||
* Il n'existe qu'UN seul bouton pour lancer une partie : toute partie est
|
||||
* une partie en ligne, meme jouee seul. Distinguer "solo" et "heberger"
|
||||
* obligerait le joueur a decider avant de savoir si un ami se connectera,
|
||||
* et surtout a relancer sa partie pour changer d'avis.
|
||||
*
|
||||
* On ne rejoint jamais depuis ce menu : l'arrivee se fait uniquement par
|
||||
* invitation Steam, geree par USessionSubsystem quelle que soit la map
|
||||
* affichee a cet instant.
|
||||
*/
|
||||
UFUNCTION(BlueprintCallable, Category = "Menu")
|
||||
void StartSoloGame();
|
||||
void StartGame();
|
||||
|
||||
/** Ouvre la demande de confirmation. Ne quitte rien par elle-meme. */
|
||||
UFUNCTION(BlueprintCallable, Category = "Menu")
|
||||
@@ -125,6 +143,25 @@ private:
|
||||
UFUNCTION()
|
||||
void HandleSettingsCloseRequested();
|
||||
|
||||
/**
|
||||
* La session n'a pas pu etre creee -- Steam eteint, hors ligne, service en
|
||||
* panne. On charge la map QUAND MEME.
|
||||
*
|
||||
* C'est un choix delibere : un joueur qui clique Jouer veut jouer. Le rendre
|
||||
* a son menu avec un message d'erreur reseau alors que rien ne l'empeche de
|
||||
* jouer seul serait une punition pour une panne qui n'est pas la sienne. Il
|
||||
* perd seulement la possibilite d'inviter, et le bouton Inviter le dira.
|
||||
*/
|
||||
UFUNCTION()
|
||||
void HandleHostFailed(FText Reason);
|
||||
|
||||
/**
|
||||
* Echec de connexion sur invitation : on remonte le fondu et on rend le menu.
|
||||
* Ici pas de repli possible, la partie visee est celle d'un ami.
|
||||
*/
|
||||
UFUNCTION()
|
||||
void HandleJoinFailed(FText Reason);
|
||||
|
||||
/** Ferme le jeu sans rien demander. */
|
||||
void CloseGame();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user