本文整理汇总了C++中IOnlineSessionPtr::CreateSession方法的典型用法代码示例。如果您正苦于以下问题:C++ IOnlineSessionPtr::CreateSession方法的具体用法?C++ IOnlineSessionPtr::CreateSession怎么用?C++ IOnlineSessionPtr::CreateSession使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOnlineSessionPtr
的用法示例。
在下文中一共展示了IOnlineSessionPtr::CreateSession方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HostSession
/**
* Function to host a game!
*
* @Param UserID User that started the request
* @Param SessionName Name of the Session
* @Param bIsLAN Is this is LAN Game?
* @Param bIsPresence "Is the Session to create a presence Session"
* @Param MaxNumPlayers Number of Maximum allowed players on this "Session" (Server)
*/
bool URadeGameInstance::HostSession(TSharedPtr<const FUniqueNetId> UserId, FName SessionName, FString MapName, bool bIsLAN, bool bIsPresence, int32 MaxNumPlayers)
{
// Get the Online Subsystem to work with
IOnlineSubsystem* const OnlineSub = IOnlineSubsystem::Get();
if (OnlineSub)
{
// Get the Session Interface, so we can call the "CreateSession" function on it
IOnlineSessionPtr Sessions = OnlineSub->GetSessionInterface();
if (Sessions.IsValid() && UserId.IsValid())
{
/*
Fill in all the Session Settings that we want to use.
There are more with SessionSettings.Set(...);
For example the Map or the GameMode/Type.
*/
SessionSettings = MakeShareable(new FOnlineSessionSettings());
SessionSettings->bIsLANMatch = bIsLAN;
SessionSettings->bUsesPresence = bIsPresence;
SessionSettings->NumPublicConnections = MaxNumPlayers;
SessionSettings->NumPrivateConnections = 0;
SessionSettings->bAllowInvites = true;
SessionSettings->bAllowJoinInProgress = true;
SessionSettings->bShouldAdvertise = true;
SessionSettings->bAllowJoinViaPresence = true;
SessionSettings->bAllowJoinViaPresenceFriendsOnly = false;
SessionSettings->Set(SETTING_MAPNAME, MapName, EOnlineDataAdvertisementType::ViaOnlineService);
// Set the delegate to the Handle of the SessionInterface
OnCreateSessionCompleteDelegateHandle = Sessions->AddOnCreateSessionCompleteDelegate_Handle(OnCreateSessionCompleteDelegate);
//printr(SessionName.ToString());
// Our delegate should get called when this is complete (doesn't need to be successful!)
return Sessions->CreateSession(*UserId, SessionName, *SessionSettings);
}
}
else
{
//GEngine->AddOnScreenDebugMessage(-1, 10.f, FColor::Red, TEXT("No OnlineSubsytem found!"));
}
return false;
}
示例2: HostSession
bool AMahjongGameSession_Japanese::HostSession(TSharedPtr<const FUniqueNetId> UserId, FName SessionName, const FString& GameType, const FString& MapName, bool bIsLAN, bool bIsPresence, int32 MaxNumPlayers)
{
IOnlineSubsystem* const OnlineSubsystem = IOnlineSubsystem::Get();
if (OnlineSubsystem)
{
CurrentSessionParams.SessionName = SessionName;
CurrentSessionParams.bIsLAN = bIsLAN;
CurrentSessionParams.bIsPresence = bIsPresence;
CurrentSessionParams.UserId = UserId;
MaxPlayers = MaxNumPlayers;
IOnlineSessionPtr Sessions = OnlineSubsystem->GetSessionInterface();
if (Sessions.IsValid() && CurrentSessionParams.UserId.IsValid())
{
HostSettings = MakeShareable(new FMahjongOnlineSessionSettings(bIsLAN, bIsPresence, MaxPlayers));
HostSettings->Set(SETTING_GAMEMODE, GameType, EOnlineDataAdvertisementType::ViaOnlineService);
HostSettings->Set(SETTING_MAPNAME, MapName, EOnlineDataAdvertisementType::ViaOnlineService);
HostSettings->Set(SETTING_MATCHING_HOPPER, FString("JapaneseMahjong"), EOnlineDataAdvertisementType::DontAdvertise);
HostSettings->Set(SETTING_MATCHING_TIMEOUT, 120.0f, EOnlineDataAdvertisementType::ViaOnlineService);
HostSettings->Set(SETTING_SESSION_TEMPLATE_NAME, FString("GameSession"), EOnlineDataAdvertisementType::DontAdvertise);
HostSettings->Set(SEARCH_KEYWORDS, MahjongWords::CustomMatchKeyword, EOnlineDataAdvertisementType::ViaOnlineService);
OnCreateSessionCompleteDelegateHandle = Sessions->AddOnCreateSessionCompleteDelegate_Handle(OnCreateSessionCompleteDelegate);
return Sessions->CreateSession(*CurrentSessionParams.UserId, CurrentSessionParams.SessionName, *HostSettings);
}
}
#if !UE_BUILD_SHIPPING
else
{
// Hack workflow in development
OnCreatePresenceSessionComplete().Broadcast(GameSessionName, true);
return true;
}
#endif
return false;
}
示例3: StartNewGame
bool UUModGameInstance::StartNewGame(bool single, bool local, int32 max, FString map, FString hostName)
{
ULocalPlayer* const Player = GetFirstGamePlayer();
Player->PlayerController->ClientTravel("LoadScreen", ETravelType::TRAVEL_Absolute);
TSharedPtr<const FUniqueNetId> UserId = Player->GetPreferredUniqueNetId();
IOnlineSubsystem* const OnlineSub = IOnlineSubsystem::Get();
IOnlineSessionPtr Sessions = NULL;
if (OnlineSub == NULL) {
return false;
}
Sessions = OnlineSub->GetSessionInterface();
if (!Sessions.IsValid() || !UserId.IsValid()) {
return false;
}
if (!CurSessionName.IsEmpty()){
DestroyCurSession(Sessions);
return false;
}
TSharedPtr<class FOnlineSessionSettings> SessionSettings = MakeShareable(new FOnlineSessionSettings());
if (single) {
SessionSettings->bIsLANMatch = true;
IsLAN = true;
} else {
SessionSettings->bIsLANMatch = local;
IsLAN = local;
}
SessionSettings->bUsesPresence = true;
if (single) {
SessionSettings->NumPublicConnections = 1;
} else {
SessionSettings->NumPublicConnections = max;
}
SessionSettings->NumPrivateConnections = 0;
SessionSettings->bAllowInvites = true;
SessionSettings->bAllowJoinInProgress = true;
SessionSettings->bShouldAdvertise = true;
SessionSettings->bAllowJoinViaPresence = true;
SessionSettings->bAllowJoinViaPresenceFriendsOnly = false;
SessionSettings->Set(SETTING_MAPNAME, map, EOnlineDataAdvertisementType::ViaOnlineService);
SessionSettings->Set(SETTING_GAMEMODE, AUModGameMode::StaticClass()->GetPathName(), EOnlineDataAdvertisementType::ViaOnlineService);
if (single) {
hostName = TEXT("UMod_SinglePlayer");
}
OnCreateSessionCompleteDelegateHandle = Sessions->AddOnCreateSessionCompleteDelegate_Handle(OnCreateSessionCompleteDelegate);
CurSessionMapName = map;
FName name = FName(*hostName);
CurSessionName = hostName;
return Sessions->CreateSession(*UserId, name, *SessionSettings);
}