LEAP Documentation 40220
Documentation for the LEAP project
ProjectXGameSession.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4#include "Online.h"
5#include "ProjectXGameState.h"
6#include "CoreMinimal.h"
7#include "GameFramework/GameSession.h"
8#include "SteamBeaconGameSession.h"
9#include "ProjectXGameSession.generated.h"
10
11#define OfficialServerPassword "b2d171800af2027362b7cf89f6ea91d4";
12
13DECLARE_EVENT_TwoParams(AProjectXGameSession, FOnCreatePresenceSessionComplete, FName /*SessionName*/, bool /*bWasSuccessful*/);
14
15USTRUCT()
17{
18 GENERATED_USTRUCT_BODY()
19
20 FProjectXGameSessionParams() : SessionName(NAME_None), bIsLAN(false), bIsPresence(false), BestSessionIdx(0) {}
21
23 FName SessionName = "";
25 bool bIsLAN = false;
27 bool bIsPresence = false;
29 TSharedPtr<const FUniqueNetId> UserId;
31 int32 BestSessionIdx = INDEX_NONE;
32};
33
34UCLASS(Config = Game)
35class PROJECTX_API AProjectXGameSession : public ASteamBeaconGameSession
36{
37 GENERATED_UCLASS_BODY()
38
39public:
40 virtual void InitOptions(const FString& Options) override;
41 virtual void RegisterServer() override;
42 virtual FString ApproveLogin(const FString& Options, const FUniqueNetIdRepl& UniqueId) override;
43 virtual void AddAdmin(APlayerController* AdminPlayer) override;
44 virtual void RemoveAdmin(APlayerController* AdminPlayer) override;
45 virtual bool KickPlayer(APlayerController* KickedPlayer, const FText& KickReason) override;
46 virtual bool BanPlayer(APlayerController* BannedPlayer, const FText& BanReason) override;
47 virtual bool SessionKickPlayer(APlayerController* KickedPlayer, const FText& KickReason);
48 virtual bool IsPlayerBanned(UNetConnection* NetConnection, const FUniqueNetIdRepl& UniqueId) const;
49 virtual bool IsPlayerSessionKicked(UNetConnection* NetConnection, const FUniqueNetIdRepl& UniqueId) const;
50 bool TravelToSession(int32 ControllerId, FName SessionName);
51 virtual void HandleMatchHasStarted() override;
52 virtual void HandleMatchHasEnded() override;
53
54 void FindSessions(TSharedPtr<const FUniqueNetId> UserId, FName InSessionName, int32 PartySize, const TArray<EGameType>& GameTypes, bool bIsLAN, bool bIsPresence, bool bIsMatchmaking, bool bSearchFreshServersOnly);
55
56 bool JoinSession(TSharedPtr<const FUniqueNetId> UserId, FName SessionName, int32 SessionIndexInSearchResults);
57 bool JoinSession(TSharedPtr<const FUniqueNetId> UserId, FName SessionName, const FOnlineSessionSearchResult& SearchResult);
58 bool HostSession(TSharedPtr<const FUniqueNetId> UserId, FName SessionName, const FString& GameType, const FString& MapName, bool bIsLAN, bool bIsPresence, int32 MaxNumPlayers);
59 bool HostSession(const TSharedPtr<const FUniqueNetId> UserId, const FName SessionName, const FOnlineSessionSettings& SessionSettings);
60
61 void DestroySession();
62
63 void UpdateSession();
64
65 FOnCreatePresenceSessionComplete& OnCreatePresenceSessionComplete() { return CreatePresenceSessionCompleteEvent; }
66 FOnFindSessionsComplete& OnFindSessionsComplete() { return FindSessionsCompleteEvent; }
67 FOnJoinSessionComplete& OnJoinSessionComplete() { return JoinSessionCompleteEvent; }
68 FOnDestroySessionCompleteDelegate& OnDestroySessionComplete() { return OnDestroySessionCompleteDelegate; }
69
70 void UpdateServerInfoMapName(const FString& MapName);
71 void UpdateServerInfoGameModeName(const EGameType& GameMode);
72 void UpdateServerInfoDifficulty(const EDifficultyLevel& DifficultyLevel);
73 void UpdateServerInfoMaxPlayers(int32 PlayerCountMax);
74
75 void StartMatchmaking();
76
77 bool IsServerOfficial() { return FMD5::HashAnsiString(*OfficialServerSessionPassword) == OfficialServerPassword; }
78
79 TSharedPtr<class FOnlineSessionSearch> GetCurrentSearchSettings() const { return SearchSettings; }
80
81 UPROPERTY(GlobalConfig)
82 TArray<FString> BannedPlayerID;
83 UPROPERTY(GlobalConfig)
84 TArray<FString> BannedPlayerIP;
85 UPROPERTY()
86 TArray<FString> SessionKickedPlayerID;
87 UPROPERTY(GlobalConfig)
88 FString ServerPassword = "";
89 UPROPERTY(GlobalConfig)
90 FString OfficialServerSessionPassword = "";
91 UPROPERTY(GlobalConfig)
92 FString ServerName = "DefaultName";
93 UPROPERTY(GlobalConfig)
94 FString ServerRegion = "USEast";
95
96protected:
98 FOnCreateSessionCompleteDelegate OnCreateSessionCompleteDelegate;
100 FOnStartSessionCompleteDelegate OnStartSessionCompleteDelegate;
102 FOnDestroySessionCompleteDelegate OnDestroySessionCompleteDelegate;
104 FOnFindSessionsCompleteDelegate OnFindSessionsCompleteDelegate;
106 FOnJoinSessionCompleteDelegate OnJoinSessionCompleteDelegate;
107
108 virtual void OnCreateSessionComplete(FName SessionName, bool bWasSuccessful);
109 void OnStartOnlineGameComplete(FName SessionName, bool bWasSuccessful);
110 void OnFindSessionsComplete(bool bWasSuccessful);
111 void OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Result);
112 virtual void OnDestroySessionComplete(FName SessionName, bool bWasSuccessful);
113
114 FOnCreatePresenceSessionComplete CreatePresenceSessionCompleteEvent;
115 FOnFindSessionsComplete FindSessionsCompleteEvent;
116 FOnJoinSessionComplete JoinSessionCompleteEvent;
117
119 FDelegateHandle OnStartSessionCompleteDelegateHandle;
120 FDelegateHandle OnCreateSessionCompleteDelegateHandle;
121 FDelegateHandle OnDestroySessionCompleteDelegateHandle;
122 FDelegateHandle OnFindSessionsCompleteDelegateHandle;
123 FDelegateHandle OnJoinSessionCompleteDelegateHandle;
124
126 FProjectXGameSessionParams CurrentSessionParams;
127
129 TSharedPtr<class FProjectXOnlineSessionSettings> HostSettings;
131 TSharedPtr<class FOnlineSessionSearch> SearchSettings;
132};
#define OfficialServerPassword
Definition: ProjectXGameSession.h:11
DECLARE_EVENT_TwoParams(AProjectXGameSession, FOnCreatePresenceSessionComplete, FName, bool)
EDifficultyLevel
Definition: ProjectXGameState.h:54
EGameType
Definition: ProjectXGameState.h:40
Definition: ProjectXGameSession.h:36
FOnCreatePresenceSessionComplete & OnCreatePresenceSessionComplete()
Definition: ProjectXGameSession.h:65
FOnDestroySessionCompleteDelegate & OnDestroySessionComplete()
Definition: ProjectXGameSession.h:68
FOnJoinSessionComplete & OnJoinSessionComplete()
Definition: ProjectXGameSession.h:67
TSharedPtr< class FOnlineSessionSearch > GetCurrentSearchSettings() const
Definition: ProjectXGameSession.h:79
FOnFindSessionsComplete & OnFindSessionsComplete()
Definition: ProjectXGameSession.h:66
bool IsServerOfficial()
Definition: ProjectXGameSession.h:77
Definition: ProjectXOnlineGameSettings.h:32
Definition: ProjectXGameSession.h:17
TSharedPtr< const FUniqueNetId > UserId
Definition: ProjectXGameSession.h:29