// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "GameplayTagContainer.h" #include "Engine/GameInstance.h" #include "CommonGameInstance.generated.h" class ULocalPlayer; class USocialManager; UCLASS(Abstract, Config = Game) class COMMONGAME_API UCommonGameInstance : public UGameInstance { GENERATED_BODY() public: UCommonGameInstance(const FObjectInitializer& ObjectInitializer); /** Handles errors/warnings from CommonUser, can be overridden per game */ UFUNCTION() virtual void HandleSystemMessage(FGameplayTag MessageType, FText Title, FText Message); UFUNCTION() virtual void HandlePrivilegeChanged(const UCommonUserInfo* UserInfo, ECommonUserPrivilege Privilege, ECommonUserAvailability OldAvailability, ECommonUserAvailability NewAvailability); /** Call to reset user and session state, usually because a player has been disconnected */ virtual void ResetUserAndSessionState(); virtual int32 AddLocalPlayer(ULocalPlayer* NewPlayer, int32 ControllerId) override; virtual bool RemoveLocalPlayer(ULocalPlayer* ExistingPlayer) override; virtual void Init() override; virtual void ReturnToMainMenu() override; private: /** This is the primary player*/ TWeakObjectPtr PrimaryPlayer; };