Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.48 KB | None | 0 0
  1. // Fill out your copyright notice in the Description page of Project Settings.
  2.  
  3. #include "PuzzlePlatformsGameInstance.h"
  4.  
  5. #include "Engine/Engine.h"
  6. #include "UObject/ConstructorHelpers.h"
  7. #include "Blueprint/UserWidget.h"
  8. #include "OnlineSessionSettings.h"
  9. #include "OnlineSessionInterface.h"
  10.  
  11. #include "PlatformTrigger.h"
  12. #include "MenuSystem/MainMenu.h"
  13. #include "MenuSystem/MenuWidget.h"
  14.  
  15.  
  16. UPuzzlePlatformsGameInstance::UPuzzlePlatformsGameInstance(const FObjectInitializer & ObjectInitializer)
  17. {
  18.     ConstructorHelpers::FClassFinder<UUserWidget> MenuBPClass(TEXT("/Game/MenuSystem/WBP_MainMenu"));
  19.     if (!ensure(MenuBPClass.Class != nullptr)) return;
  20.  
  21.     MenuClass = MenuBPClass.Class;
  22.  
  23.     ConstructorHelpers::FClassFinder<UUserWidget> InGameMenuBPClass(TEXT("/Game/MenuSystem/WBP_InGameMenu"));
  24.     if (!ensure(InGameMenuBPClass.Class != nullptr)) return;
  25.  
  26.     InGameMenuClass = InGameMenuBPClass.Class;
  27. }
  28.  
  29. void UPuzzlePlatformsGameInstance::Init()
  30. {
  31.     IOnlineSubsystem* Subsystem = IOnlineSubsystem::Get();
  32.     if (Subsystem != nullptr)
  33.     {
  34.         UE_LOG(LogTemp, Warning, TEXT("Found Subsystem %s"), *Subsystem->GetSubsystemName().ToString());
  35.         SessionInterface = Subsystem->GetSessionInterface();
  36.         if (SessionInterface.IsValid()) {
  37.             SessionInterface->OnCreateSessionCompleteDelegates.AddUObject(this, &UPuzzlePlatformsGameInstance::OnCreateSessionComplete);
  38.         }
  39.     }
  40.     else
  41.     {
  42.         UE_LOG(LogTemp, Warning, TEXT("Found no subsystem"));
  43.     }
  44. }
  45.  
  46. void UPuzzlePlatformsGameInstance::LoadMenuWidget()
  47. {
  48.     if (!ensure(MenuClass != nullptr)) return;
  49.  
  50.     Menu = CreateWidget<UMainMenu>(this, MenuClass);
  51.     if (!ensure(Menu != nullptr)) return;
  52.  
  53.     Menu->Setup();
  54.  
  55.     Menu->SetMenuInterface(this);
  56. }
  57.  
  58. void UPuzzlePlatformsGameInstance::InGameLoadMenu()
  59. {
  60.     if (!ensure(InGameMenuClass != nullptr)) return;
  61.  
  62.     UMenuWidget* Menu = CreateWidget<UMenuWidget>(this, InGameMenuClass);
  63.     if (!ensure(Menu != nullptr)) return;
  64.  
  65.     Menu->Setup();
  66.  
  67.     Menu->SetMenuInterface(this);
  68. }
  69.  
  70.  
  71. void UPuzzlePlatformsGameInstance::Host()
  72. {
  73.     if (SessionInterface.IsValid()) {
  74.         FOnlineSessionSettings SessionSettings;
  75.         SessionInterface->CreateSession(0, TEXT("My Session Game"), SessionSettings);
  76.     }
  77. }
  78.  
  79. void UPuzzlePlatformsGameInstance::OnCreateSessionComplete(FName SessionName, bool Success)
  80. {
  81.     if(!Success){
  82.         UE_LOG(LogTemp, Warning, TEXT("Could not create session"));
  83.         return;
  84.     }
  85.     if (Menu != nullptr)
  86.     {
  87.         Menu->Teardown();
  88.     }
  89.  
  90.     UEngine* Engine = GetEngine();
  91.     if (!ensure(Engine != nullptr)) return;
  92.  
  93.     Engine->AddOnScreenDebugMessage(0, 2, FColor::Green, TEXT("Hosting"));
  94.  
  95.     UWorld* World = GetWorld();
  96.     if (!ensure(World != nullptr)) return;
  97.  
  98.     World->ServerTravel("/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap?listen");
  99. }
  100.  
  101. void UPuzzlePlatformsGameInstance::Join(const FString& Address)
  102. {
  103.     if (Menu != nullptr)
  104.     {
  105.         Menu->Teardown();
  106.     }
  107.  
  108.     UEngine* Engine = GetEngine();
  109.     if (!ensure(Engine != nullptr)) return;
  110.  
  111.     Engine->AddOnScreenDebugMessage(0, 5, FColor::Green, FString::Printf(TEXT("Joining %s"), *Address));
  112.  
  113.     APlayerController* PlayerController = GetFirstLocalPlayerController();
  114.     if (!ensure(PlayerController != nullptr)) return;
  115.  
  116.     PlayerController->ClientTravel(Address, ETravelType::TRAVEL_Absolute);
  117. }
  118.  
  119. void UPuzzlePlatformsGameInstance::LoadMainMenu()
  120. {
  121.     APlayerController* PlayerController = GetFirstLocalPlayerController();
  122.     if (!ensure(PlayerController != nullptr)) return;
  123.  
  124.     PlayerController->ClientTravel("/Game/MenuSystem/MainMenu", ETravelType::TRAVEL_Absolute);
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement