Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Fill out your copyright notice in the Description page of Project Settings.
- #include "PuzzlePlatformsGameInstance.h"
- #include "Engine/Engine.h"
- #include "UObject/ConstructorHelpers.h"
- #include "Blueprint/UserWidget.h"
- #include "OnlineSessionSettings.h"
- #include "OnlineSessionInterface.h"
- #include "PlatformTrigger.h"
- #include "MenuSystem/MainMenu.h"
- #include "MenuSystem/MenuWidget.h"
- UPuzzlePlatformsGameInstance::UPuzzlePlatformsGameInstance(const FObjectInitializer & ObjectInitializer)
- {
- ConstructorHelpers::FClassFinder<UUserWidget> MenuBPClass(TEXT("/Game/MenuSystem/WBP_MainMenu"));
- if (!ensure(MenuBPClass.Class != nullptr)) return;
- MenuClass = MenuBPClass.Class;
- ConstructorHelpers::FClassFinder<UUserWidget> InGameMenuBPClass(TEXT("/Game/MenuSystem/WBP_InGameMenu"));
- if (!ensure(InGameMenuBPClass.Class != nullptr)) return;
- InGameMenuClass = InGameMenuBPClass.Class;
- }
- void UPuzzlePlatformsGameInstance::Init()
- {
- IOnlineSubsystem* Subsystem = IOnlineSubsystem::Get();
- if (Subsystem != nullptr)
- {
- UE_LOG(LogTemp, Warning, TEXT("Found Subsystem %s"), *Subsystem->GetSubsystemName().ToString());
- SessionInterface = Subsystem->GetSessionInterface();
- if (SessionInterface.IsValid()) {
- SessionInterface->OnCreateSessionCompleteDelegates.AddUObject(this, &UPuzzlePlatformsGameInstance::OnCreateSessionComplete);
- }
- }
- else
- {
- UE_LOG(LogTemp, Warning, TEXT("Found no subsystem"));
- }
- }
- void UPuzzlePlatformsGameInstance::LoadMenuWidget()
- {
- if (!ensure(MenuClass != nullptr)) return;
- Menu = CreateWidget<UMainMenu>(this, MenuClass);
- if (!ensure(Menu != nullptr)) return;
- Menu->Setup();
- Menu->SetMenuInterface(this);
- }
- void UPuzzlePlatformsGameInstance::InGameLoadMenu()
- {
- if (!ensure(InGameMenuClass != nullptr)) return;
- UMenuWidget* Menu = CreateWidget<UMenuWidget>(this, InGameMenuClass);
- if (!ensure(Menu != nullptr)) return;
- Menu->Setup();
- Menu->SetMenuInterface(this);
- }
- void UPuzzlePlatformsGameInstance::Host()
- {
- if (SessionInterface.IsValid()) {
- FOnlineSessionSettings SessionSettings;
- SessionInterface->CreateSession(0, TEXT("My Session Game"), SessionSettings);
- }
- }
- void UPuzzlePlatformsGameInstance::OnCreateSessionComplete(FName SessionName, bool Success)
- {
- if(!Success){
- UE_LOG(LogTemp, Warning, TEXT("Could not create session"));
- return;
- }
- if (Menu != nullptr)
- {
- Menu->Teardown();
- }
- UEngine* Engine = GetEngine();
- if (!ensure(Engine != nullptr)) return;
- Engine->AddOnScreenDebugMessage(0, 2, FColor::Green, TEXT("Hosting"));
- UWorld* World = GetWorld();
- if (!ensure(World != nullptr)) return;
- World->ServerTravel("/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap?listen");
- }
- void UPuzzlePlatformsGameInstance::Join(const FString& Address)
- {
- if (Menu != nullptr)
- {
- Menu->Teardown();
- }
- UEngine* Engine = GetEngine();
- if (!ensure(Engine != nullptr)) return;
- Engine->AddOnScreenDebugMessage(0, 5, FColor::Green, FString::Printf(TEXT("Joining %s"), *Address));
- APlayerController* PlayerController = GetFirstLocalPlayerController();
- if (!ensure(PlayerController != nullptr)) return;
- PlayerController->ClientTravel(Address, ETravelType::TRAVEL_Absolute);
- }
- void UPuzzlePlatformsGameInstance::LoadMainMenu()
- {
- APlayerController* PlayerController = GetFirstLocalPlayerController();
- if (!ensure(PlayerController != nullptr)) return;
- PlayerController->ClientTravel("/Game/MenuSystem/MainMenu", ETravelType::TRAVEL_Absolute);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement