#pragma once

/*
* SDK generated by Dumper-7
*
* https://github.com/Encryqed/Dumper-7
*/

// Package: CommonUser

#include "Basic.hpp"

#include "CommonUser_structs.hpp"
#include "Engine_classes.hpp"
#include "GameplayTags_structs.hpp"
#include "CoreUObject_structs.hpp"
#include "CoreUObject_classes.hpp"


namespace SDK
{

// Class CommonUser.AsyncAction_CommonUserInitialize
// 0x0040 (0x0070 - 0x0030)
class UAsyncAction_CommonUserInitialize final : public UCancellableAsyncAction
{
public:
	TMulticastInlineDelegate<void(const class UCommonUserInfo* UserInfo, bool bSuccess, class FText Error, ECommonUserPrivilege RequestedPrivilege, ECommonUserOnlineContext OnlineContext)> OnInitializationComplete; // 0x0030(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_40[0x30];                                      // 0x0040(0x0030)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UAsyncAction_CommonUserInitialize* InitializeForLocalPlay(class UCommonUserSubsystem* Target, int32 LocalPlayerIndex, const struct FInputDeviceId& PrimaryInputDevice, bool bCanUseGuestLogin);
	static class UAsyncAction_CommonUserInitialize* LoginForOnlinePlay(class UCommonUserSubsystem* Target, int32 LocalPlayerIndex);

	void HandleInitializationComplete(const class UCommonUserInfo* UserInfo, bool bSuccess, const class FText& Error, ECommonUserPrivilege RequestedPrivilege, ECommonUserOnlineContext OnlineContext);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("AsyncAction_CommonUserInitialize")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"AsyncAction_CommonUserInitialize")
	}
	static class UAsyncAction_CommonUserInitialize* GetDefaultObj()
	{
		return GetDefaultObjImpl<UAsyncAction_CommonUserInitialize>();
	}
};
DUMPER7_ASSERTS_UAsyncAction_CommonUserInitialize;

// Class CommonUser.CommonSession_HostSessionRequest
// 0x0080 (0x00A8 - 0x0028)
class UCommonSession_HostSessionRequest final : public UObject
{
public:
	ECommonSessionOnlineMode                      OnlineMode;                                        // 0x0028(0x0001)(BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseLobbies;                                       // 0x0029(0x0001)(BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2A[0x6];                                       // 0x002A(0x0006)(Fixing Size After Last Property [ Dumper-7 ])
	class FString                                 ModeNameForAdvertisement;                          // 0x0030(0x0010)(BlueprintVisible, ZeroConstructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FPrimaryAssetId                        MapID;                                             // 0x0040(0x0010)(BlueprintVisible, ZeroConstructor, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	TMap<class FString, class FString>            ExtraArgs;                                         // 0x0050(0x0050)(BlueprintVisible, NativeAccessSpecifierPublic)
	int32                                         MaxPlayerCount;                                    // 0x00A0(0x0004)(BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_A4[0x4];                                       // 0x00A4(0x0004)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("CommonSession_HostSessionRequest")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"CommonSession_HostSessionRequest")
	}
	static class UCommonSession_HostSessionRequest* GetDefaultObj()
	{
		return GetDefaultObjImpl<UCommonSession_HostSessionRequest>();
	}
};
DUMPER7_ASSERTS_UCommonSession_HostSessionRequest;

// Class CommonUser.CommonSession_SearchResult
// 0x0120 (0x0148 - 0x0028)
class UCommonSession_SearchResult final : public UObject
{
public:
	uint8                                         Pad_28[0x120];                                     // 0x0028(0x0120)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	class FString GetDescription() const;
	void GetIntSetting(class FName Key, int32* Value, bool* bFoundValue) const;
	int32 GetMaxPublicConnections() const;
	int32 GetNumOpenPrivateConnections() const;
	int32 GetNumOpenPublicConnections() const;
	int32 GetPingInMs() const;
	void GetStringSetting(class FName Key, class FString* Value, bool* bFoundValue) const;

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("CommonSession_SearchResult")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"CommonSession_SearchResult")
	}
	static class UCommonSession_SearchResult* GetDefaultObj()
	{
		return GetDefaultObjImpl<UCommonSession_SearchResult>();
	}
};
DUMPER7_ASSERTS_UCommonSession_SearchResult;

// Class CommonUser.CommonSession_SearchSessionRequest
// 0x0040 (0x0068 - 0x0028)
class UCommonSession_SearchSessionRequest final : public UObject
{
public:
	ECommonSessionOnlineMode                      OnlineMode;                                        // 0x0028(0x0001)(BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bUseLobbies;                                       // 0x0029(0x0001)(BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2A[0x6];                                       // 0x002A(0x0006)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<class UCommonSession_SearchResult*>    Results;                                           // 0x0030(0x0010)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, UObjectWrapper, NativeAccessSpecifierPublic)
	uint8                                         Pad_40[0x18];                                      // 0x0040(0x0018)(Fixing Size After Last Property [ Dumper-7 ])
	TMulticastInlineDelegate<void(bool bSucceeded, class FText ErrorMessage)> K2_OnSearchFinished;   // 0x0058(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPrivate)

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("CommonSession_SearchSessionRequest")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"CommonSession_SearchSessionRequest")
	}
	static class UCommonSession_SearchSessionRequest* GetDefaultObj()
	{
		return GetDefaultObjImpl<UCommonSession_SearchSessionRequest>();
	}
};
DUMPER7_ASSERTS_UCommonSession_SearchSessionRequest;

// Class CommonUser.CommonSessionSubsystem
// 0x00F8 (0x0128 - 0x0030)
class UCommonSessionSubsystem final : public UGameInstanceSubsystem
{
public:
	uint8                                         Pad_30[0x18];                                      // 0x0030(0x0018)(Fixing Size After Last Property [ Dumper-7 ])
	TMulticastInlineDelegate<void(const struct FPlatformUserId& LocalPlatformUserId, class UCommonSession_SearchResult* RequestedSession, const struct FOnlineResultInformation& RequestedSessionResult)> K2_OnUserRequestedSessionEvent; // 0x0048(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_58[0x18];                                      // 0x0058(0x0018)(Fixing Size After Last Property [ Dumper-7 ])
	TMulticastInlineDelegate<void(const struct FOnlineResultInformation& Result)> K2_OnJoinSessionCompleteEvent; // 0x0070(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_80[0x18];                                      // 0x0080(0x0018)(Fixing Size After Last Property [ Dumper-7 ])
	TMulticastInlineDelegate<void(const struct FOnlineResultInformation& Result)> K2_OnCreateSessionCompleteEvent; // 0x0098(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_A8[0x80];                                      // 0x00A8(0x0080)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void CleanUpSessions();
	class UCommonSession_HostSessionRequest* CreateOnlineHostSessionRequest();
	class UCommonSession_SearchSessionRequest* CreateOnlineSearchSessionRequest();
	void FindSessions(class APlayerController* SearchingPlayer, class UCommonSession_SearchSessionRequest* Request);
	void HostSession(class APlayerController* HostingPlayer, class UCommonSession_HostSessionRequest* Request);
	void JoinSession(class APlayerController* JoiningPlayer, class UCommonSession_SearchResult* Request);
	void QuickPlaySession(class APlayerController* JoiningOrHostingPlayer, class UCommonSession_HostSessionRequest* Request);

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("CommonSessionSubsystem")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"CommonSessionSubsystem")
	}
	static class UCommonSessionSubsystem* GetDefaultObj()
	{
		return GetDefaultObjImpl<UCommonSessionSubsystem>();
	}
};
DUMPER7_ASSERTS_UCommonSessionSubsystem;

// Class CommonUser.CommonUserInfo
// 0x0060 (0x0088 - 0x0028)
class UCommonUserInfo final : public UObject
{
public:
	struct FInputDeviceId                         PrimaryInputDevice;                                // 0x0028(0x0004)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	struct FPlatformUserId                        PlatformUser;                                      // 0x002C(0x0004)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	int32                                         LocalPlayerIndex;                                  // 0x0030(0x0004)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bCanBeGuest;                                       // 0x0034(0x0001)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bIsGuest;                                          // 0x0035(0x0001)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	ECommonUserInitializationState                InitializationState;                               // 0x0036(0x0001)(BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_37[0x51];                                      // 0x0037(0x0051)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	ECommonUserPrivilegeResult GetCachedPrivilegeResult(ECommonUserPrivilege Privilege, ECommonUserOnlineContext Context) const;
	class FString GetDebugString() const;
	struct FUniqueNetIdRepl GetNetId(ECommonUserOnlineContext Context) const;
	class FString GetNickname() const;
	ECommonUserAvailability GetPrivilegeAvailability(ECommonUserPrivilege Privilege) const;
	bool IsDoingLogin() const;
	bool IsLoggedIn() const;

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("CommonUserInfo")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"CommonUserInfo")
	}
	static class UCommonUserInfo* GetDefaultObj()
	{
		return GetDefaultObjImpl<UCommonUserInfo>();
	}
};
DUMPER7_ASSERTS_UCommonUserInfo;

// Class CommonUser.CommonUserSubsystem
// 0x0128 (0x0158 - 0x0030)
class UCommonUserSubsystem final : public UGameInstanceSubsystem
{
public:
	TMulticastInlineDelegate<void(const class UCommonUserInfo* UserInfo, bool bSuccess, class FText Error, ECommonUserPrivilege RequestedPrivilege, ECommonUserOnlineContext OnlineContext)> OnUserInitializeComplete; // 0x0030(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	TMulticastInlineDelegate<void(const struct FGameplayTag& MessageType, class FText TitleText, class FText BodyText)> OnHandleSystemMessage; // 0x0040(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	TMulticastInlineDelegate<void(const class UCommonUserInfo* UserInfo, ECommonUserPrivilege Privilege, ECommonUserAvailability OldAvailability, ECommonUserAvailability NewAvailability)> OnUserPrivilegeChanged; // 0x0050(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, NativeAccessSpecifierPublic)
	uint8                                         Pad_60[0x70];                                      // 0x0060(0x0070)(Fixing Size After Last Property [ Dumper-7 ])
	TMap<int32, class UCommonUserInfo*>           LocalUserInfos;                                    // 0x00D0(0x0050)(Protected, UObjectWrapper, NativeAccessSpecifierProtected)
	uint8                                         Pad_120[0x38];                                     // 0x0120(0x0038)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	bool CancelUserInitialization(int32 LocalPlayerIndex);
	void ListenForLoginKeyInput(const TArray<struct FKey>& AnyUserKeys, const TArray<struct FKey>& NewUserKeys, const struct FCommonUserInitializeParams& Params_0);
	void ResetUserState();
	void SendSystemMessage(const struct FGameplayTag& MessageType, const class FText& TitleText, const class FText& BodyText);
	void SetMaxLocalPlayers(int32 InMaxLocalPLayers);
	bool TryToInitializeForLocalPlay(int32 LocalPlayerIndex, const struct FInputDeviceId& PrimaryInputDevice, bool bCanUseGuestLogin);
	bool TryToInitializeUser(const struct FCommonUserInitializeParams& Params_0);
	bool TryToLoginForOnlinePlay(int32 LocalPlayerIndex);
	bool TryToLogOutUser(int32 LocalPlayerIndex, bool bDestroyPlayer);

	ECommonUserInitializationState GetLocalPlayerInitializationState(int32 LocalPlayerIndex) const;
	int32 GetMaxLocalPlayers() const;
	int32 GetNumLocalPlayers() const;
	const class UCommonUserInfo* GetUserInfoForControllerId(int32 ControllerId) const;
	const class UCommonUserInfo* GetUserInfoForInputDevice(const struct FInputDeviceId& InputDevice) const;
	const class UCommonUserInfo* GetUserInfoForLocalPlayerIndex(int32 LocalPlayerIndex) const;
	const class UCommonUserInfo* GetUserInfoForPlatformUser(const struct FPlatformUserId& PlatformUser) const;
	const class UCommonUserInfo* GetUserInfoForPlatformUserIndex(int32 PlatformUserIndex) const;
	const class UCommonUserInfo* GetUserInfoForUniqueNetId(const struct FUniqueNetIdRepl& NetId) const;
	bool HasTraitTag(const struct FGameplayTag& TraitTag) const;
	bool ShouldWaitForStartInput() const;

public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("CommonUserSubsystem")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"CommonUserSubsystem")
	}
	static class UCommonUserSubsystem* GetDefaultObj()
	{
		return GetDefaultObjImpl<UCommonUserSubsystem>();
	}
};
DUMPER7_ASSERTS_UCommonUserSubsystem;

}

