#pragma once

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

// Package: TutorialSystem

#include "Basic.hpp"

#include "CoreUObject_structs.hpp"
#include "CoreUObject_classes.hpp"
#include "DeveloperSettings_classes.hpp"
#include "CommonUI_classes.hpp"
#include "TutorialSystem_structs.hpp"
#include "Engine_classes.hpp"


namespace SDK
{

// Class TutorialSystem.TutorialContainer
// 0x0000 (0x0000 - 0x0000)
class ITutorialContainer final
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TutorialContainer")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TutorialContainer")
	}
	static class ITutorialContainer* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITutorialContainer>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITutorialContainer;

// Class TutorialSystem.TutorialContainerBaseWidget
// 0x0018 (0x0438 - 0x0420)
class UTutorialContainerBaseWidget final : public UCommonActivatableWidget
{
public:
	uint8                                         Pad_420[0x8];                                      // 0x0420(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	class UBorder*                                TutorialWindow_border;                             // 0x0428(0x0008)(BlueprintVisible, ExportObject, BlueprintReadOnly, ZeroConstructor, InstancedReference, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	class UBorder*                                TutorialPrompt_border;                             // 0x0430(0x0008)(BlueprintVisible, ExportObject, BlueprintReadOnly, ZeroConstructor, InstancedReference, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)

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

// Class TutorialSystem.TutorialExternalDataProvider
// 0x0000 (0x0000 - 0x0000)
class ITutorialExternalDataProvider final
{
public:
	static class UClass* StaticClass()
	{
		STATIC_CLASS_IMPL("TutorialExternalDataProvider")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"TutorialExternalDataProvider")
	}
	static class ITutorialExternalDataProvider* GetDefaultObj()
	{
		return GetDefaultObjImpl<ITutorialExternalDataProvider>();
	}

	class UObject* AsUObject()
	{
		return reinterpret_cast<UObject*>(this);
	}
	const class UObject* AsUObject() const
	{
		return reinterpret_cast<const UObject*>(this);
	}
};
DUMPER7_ASSERTS_ITutorialExternalDataProvider;

// Class TutorialSystem.TutorialSystemActorBase
// 0x0010 (0x02E0 - 0x02D0)
class ATutorialSystemActorBase : public ATriggerBox
{
public:
	bool                                          bIsEnabled;                                        // 0x02D0(0x0001)(BlueprintVisible, ZeroConstructor, SaveGame, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2D1[0x3];                                      // 0x02D1(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	struct FTutorialDataItem                      AssignedTutorial;                                  // 0x02D4(0x0008)(Edit, BlueprintVisible, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_2DC[0x4];                                      // 0x02DC(0x0004)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void ReceiveOnTutorialEnter();
	void ReceiveOnTutorialLeave();

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

// Class TutorialSystem.TutorialSystemManager
// 0x00A8 (0x00D8 - 0x0030)
class UTutorialSystemManager final : public UGameInstanceSubsystem
{
public:
	class UTutorialWidget*                        TutorialWidget;                                    // 0x0030(0x0008)(ExportObject, ZeroConstructor, Transient, InstancedReference, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	class UTutorialWidget*                        TutorialSmallPromptWidget;                         // 0x0038(0x0008)(ExportObject, ZeroConstructor, Transient, InstancedReference, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	class UUserWidget*                            TutorialDefaultContainer;                          // 0x0040(0x0008)(ExportObject, ZeroConstructor, Transient, InstancedReference, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_48[0x8];                                       // 0x0048(0x0008)(Fixing Size After Last Property [ Dumper-7 ])
	struct FTutorialDataItem                      ActiveTutorial;                                    // 0x0050(0x0008)(BlueprintVisible, BlueprintReadOnly, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	struct FTutorialDataItem                      PriorityTutorial;                                  // 0x0058(0x0008)(BlueprintVisible, BlueprintReadOnly, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	class UDataTable*                             TutorialDataTable;                                 // 0x0060(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_68[0x10];                                      // 0x0068(0x0010)(Fixing Size After Last Property [ Dumper-7 ])
	TMap<struct FTutorialDataItem, ETutorialState> TutorialProgress;                                 // 0x0078(0x0050)(BlueprintVisible, BlueprintReadOnly, NativeAccessSpecifierPublic)
	TArray<struct FTutorialDataItem>              TutorialsViewed;                                   // 0x00C8(0x0010)(BlueprintVisible, ZeroConstructor, NativeAccessSpecifierPublic)

public:
	void ActivateTutorial(const struct FTutorialDataItem& Tutorial);
	void CompleteTutorial(const struct FTutorialDataItem& Tutorial);
	void HideTutorialWidget();
	void OverrideTutorialWidgetZOrder(int32 InNewZOrder);
	void RemoveAllTutorials();
	void RemoveTutorial(const struct FTutorialDataItem& Tutorial);
	void ShowTutorialWidget(const struct FTutorialData& TutorialData);
	void TerminateActiveTutorial();

	struct FTutorialDataItem GetActiveTutorial() const;
	bool GetTutorialData(const struct FTutorialDataItem& Tutorial, struct FTutorialData* OutTutorialData) const;
	bool HasPriorityTutorial() const;
	bool HasTutorial(const struct FTutorialDataItem& InTutorial) const;
	bool HasTutorials() const;
	bool IsTutorialActive() const;

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

// Class TutorialSystem.TutorialSystemSettings
// 0x0090 (0x00C8 - 0x0038)
class UTutorialSystemSettings final : public UDeveloperSettings
{
public:
	struct FSoftClassPath                         TutorialDefaultContainerWidgetClass;               // 0x0038(0x0020)(Edit, ZeroConstructor, Config, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	struct FSoftClassPath                         TutorialWidgetClass;                               // 0x0058(0x0020)(Edit, ZeroConstructor, Config, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	struct FSoftClassPath                         TutorialSmallPromptWidgetClass;                    // 0x0078(0x0020)(Edit, ZeroConstructor, Config, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	struct FSoftObjectPath                        TutorialsData;                                     // 0x0098(0x0020)(Edit, ZeroConstructor, Config, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	bool                                          bShouldTutorialExpire;                             // 0x00B8(0x0001)(Edit, ZeroConstructor, Config, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_B9[0x3];                                       // 0x00B9(0x0003)(Fixing Size After Last Property [ Dumper-7 ])
	int32                                         TutorialExpirationDelay;                           // 0x00BC(0x0004)(Edit, ZeroConstructor, Config, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	EBTTutorialVideoType                          TutorialVideoType;                                 // 0x00C0(0x0001)(Edit, ZeroConstructor, Config, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_C1[0x7];                                       // 0x00C1(0x0007)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static class UDataTable* GetTutorialsData();

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

// Class TutorialSystem.TutorialSystemStatics
// 0x0000 (0x0028 - 0x0028)
class UTutorialSystemStatics final : public UBlueprintFunctionLibrary
{
public:
	static void ActivateTutorial(class UObject* WorldContextObject, const struct FTutorialDataItem& TutorialName);
	static void CompleteTutorial(class UObject* WorldContextObject, const struct FTutorialDataItem& TutorialName);
	static struct FFormattedTutorialTexts GetFormattedTutorialTexts(class UObject* WorldContextObject, const struct FTutorialData& TutorialData);
	static class UTutorialSystemManager* GetTutorialManager(class UObject* WorldContextObject);
	static ETutorialState GetTutorialState(class UObject* WorldContextObject, const struct FTutorialDataItem& TutorialItem);
	static void HideActiveTutorial(class UObject* WorldContextObject);
	static void OverrideTutorialWidgetZOrder(class UObject* WorldContextObject, int32 InNewZOrder);
	static void RemoveAllTutorials(class UObject* WorldContextObject);
	static void RemoveTutorial(class UObject* WorldContextObject, const struct FTutorialDataItem& TutorialName);

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

// Class TutorialSystem.TutorialWidget
// 0x0020 (0x0318 - 0x02F8)
class UTutorialWidget : public UCommonUserWidget
{
public:
	class UCommonButtonBase*                      ExtendedTutorialButton;                            // 0x02F8(0x0008)(BlueprintVisible, ExportObject, BlueprintReadOnly, ZeroConstructor, InstancedReference, NoDestructor, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	class UWidgetAnimation*                       Hide_anim;                                         // 0x0300(0x0008)(BlueprintVisible, ZeroConstructor, Transient, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_308[0x10];                                     // 0x0308(0x0010)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	void OnExtendedTutorialButtonClicked();
	void OnHideTutorial();
	void OnInputDeviceChanged();
	void OnShowExtendedTutorial(class UUserWidget* Widget);
	void OnShowTutorial(const struct FTutorialData& TutorialData);
	void ShowTutorial(const struct FTutorialData& TutorialData);

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

}

