(Feat) Add mulitplayer
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "SurvivalGameMode.h"
|
||||
|
||||
#include "FpsPlayerController.h"
|
||||
#include "GameFramework/GameSession.h"
|
||||
#include "GameFramework/PlayerState.h"
|
||||
#include "SessionSubsystem.h"
|
||||
#include "SurvivalGameState.h"
|
||||
#include "SurvivalPlayerState.h"
|
||||
|
||||
ASurvivalGameMode::ASurvivalGameMode()
|
||||
{
|
||||
MaxCoopPlayers = USessionSubsystem::DefaultMaxPlayers;
|
||||
|
||||
// Les classes du framework sont cablees ici et non dans le Blueprint : ce
|
||||
// sont des choix d'architecture, pas des reglages a tatonner en PIE.
|
||||
GameStateClass = ASurvivalGameState::StaticClass();
|
||||
PlayerStateClass = ASurvivalPlayerState::StaticClass();
|
||||
PlayerControllerClass = AFpsPlayerController::StaticClass();
|
||||
|
||||
// Une seule map pour l'instant, donc pas de voyage sans coupure a gerer.
|
||||
// A repasser a true le jour ou la partie changera de niveau : sans lui,
|
||||
// chaque changement de map deconnecte puis reconnecte tous les clients.
|
||||
bUseSeamlessTravel = false;
|
||||
}
|
||||
|
||||
void ASurvivalGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
|
||||
{
|
||||
Super::InitGame(MapName, Options, ErrorMessage);
|
||||
|
||||
// AGameSession n'existe qu'apres le Super : c'est lui qui l'engendre.
|
||||
if (GameSession)
|
||||
{
|
||||
GameSession->MaxPlayers = MaxCoopPlayers;
|
||||
}
|
||||
}
|
||||
|
||||
void ASurvivalGameMode::PostLogin(APlayerController* NewPlayer)
|
||||
{
|
||||
Super::PostLogin(NewPlayer);
|
||||
|
||||
// Trace volontairement conservee : c'est la preuve la plus rapide qu'une
|
||||
// connexion a bien abouti, et le premier endroit ou regarder quand un ami
|
||||
// dit "ca tourne mais je ne te vois pas".
|
||||
const APlayerState* State = NewPlayer ? NewPlayer->GetPlayerState<APlayerState>() : nullptr;
|
||||
UE_LOG(LogTemp, Log, TEXT("ASurvivalGameMode : arrivee de [%s], %d joueur(s) sur %d."),
|
||||
State ? *State->GetPlayerName() : TEXT("inconnu"),
|
||||
GetNumPlayers(),
|
||||
MaxCoopPlayers);
|
||||
}
|
||||
|
||||
void ASurvivalGameMode::Logout(AController* Exiting)
|
||||
{
|
||||
const APlayerState* State = Exiting ? Exiting->GetPlayerState<APlayerState>() : nullptr;
|
||||
UE_LOG(LogTemp, Log, TEXT("ASurvivalGameMode : depart de [%s]."),
|
||||
State ? *State->GetPlayerName() : TEXT("inconnu"));
|
||||
|
||||
Super::Logout(Exiting);
|
||||
}
|
||||
Reference in New Issue
Block a user