#pragma once

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

// Package: DialoguePlugin

#include "Basic.hpp"

#include "CoreUObject_classes.hpp"
#include "DialoguePlugin_structs.hpp"
#include "Engine_classes.hpp"
#include "UMG_classes.hpp"


namespace SDK
{

// Class DialoguePlugin.DialogueEvents
// 0x0000 (0x0028 - 0x0028)
class UDialogueEvents final : public UObject
{
public:
	class AActor* GetOverrideActor();
	void RecieveEventTriggered(class APlayerController* ConsideringPlayer, class AActor* NPCActor, class UObject* DialogueEvent);

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DialogueEvents">();
	}
	static class UDialogueEvents* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDialogueEvents>();
	}
};
static_assert(alignof(UDialogueEvents) == 0x000008, "Wrong alignment on UDialogueEvents");
static_assert(sizeof(UDialogueEvents) == 0x000028, "Wrong size on UDialogueEvents");

// Class DialoguePlugin.DialogueUserWidget
// 0x0000 (0x0260 - 0x0260)
class UDialogueUserWidget : public UUserWidget
{
public:
	TArray<class FString> FindVarStrings(const class FText& InText);
	bool IsConditionsMetForNode(const struct FDialogueNode& Node, class AActor* SpeakerActor);
	int32 PlayAkEvent(class UAkAudioEvent* Event, class UAkAudioEvent* StopEvent, int32 EventPriority);
	class FText ReplaceVarStrings(const class FText& InText);
	void RunEventsForNode(const struct FDialogueNode& Node, class UObject* DialogueEvent, class AActor* SpeakerActor);
	bool RunStringReplacer(const class FString& originalString, class FString* resultString);
	void UpdateSubtitleText(const class FText& PrimaryText, const class FText& SecondaryText);

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DialogueUserWidget">();
	}
	static class UDialogueUserWidget* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDialogueUserWidget>();
	}
};
static_assert(alignof(UDialogueUserWidget) == 0x000008, "Wrong alignment on UDialogueUserWidget");
static_assert(sizeof(UDialogueUserWidget) == 0x000260, "Wrong size on UDialogueUserWidget");

// Class DialoguePlugin.DialogueConditions
// 0x0000 (0x0028 - 0x0028)
class UDialogueConditions : public UObject
{
public:
	bool IsConditionMet(class APlayerController* ConsideringPlayer, class AActor* NPCActor);
	bool IsConditionMet_Internal(class APlayerController* ConsideringPlayer, class AActor* NPCActor);

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"DialogueConditions">();
	}
	static class UDialogueConditions* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDialogueConditions>();
	}
};
static_assert(alignof(UDialogueConditions) == 0x000008, "Wrong alignment on UDialogueConditions");
static_assert(sizeof(UDialogueConditions) == 0x000028, "Wrong size on UDialogueConditions");

// Class DialoguePlugin.OrCondition
// 0x0010 (0x0038 - 0x0028)
class UOrCondition final : public UDialogueConditions
{
public:
	TArray<class UDialogueConditions*>            OrConditions;                                      // 0x0028(0x0010)(Edit, ExportObject, ZeroConstructor, DisableEditOnInstance, ContainsInstancedReference, NativeAccessSpecifierPublic)

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"OrCondition">();
	}
	static class UOrCondition* GetDefaultObj()
	{
		return GetDefaultObjImpl<UOrCondition>();
	}
};
static_assert(alignof(UOrCondition) == 0x000008, "Wrong alignment on UOrCondition");
static_assert(sizeof(UOrCondition) == 0x000038, "Wrong size on UOrCondition");
static_assert(offsetof(UOrCondition, OrConditions) == 0x000028, "Member 'UOrCondition::OrConditions' has a wrong offset!");

// Class DialoguePlugin.AndCondition
// 0x0010 (0x0038 - 0x0028)
class UAndCondition final : public UDialogueConditions
{
public:
	TArray<class UDialogueConditions*>            AndConditions;                                     // 0x0028(0x0010)(Edit, ExportObject, ZeroConstructor, DisableEditOnInstance, ContainsInstancedReference, NativeAccessSpecifierPublic)

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"AndCondition">();
	}
	static class UAndCondition* GetDefaultObj()
	{
		return GetDefaultObjImpl<UAndCondition>();
	}
};
static_assert(alignof(UAndCondition) == 0x000008, "Wrong alignment on UAndCondition");
static_assert(sizeof(UAndCondition) == 0x000038, "Wrong size on UAndCondition");
static_assert(offsetof(UAndCondition, AndConditions) == 0x000028, "Member 'UAndCondition::AndConditions' has a wrong offset!");

// Class DialoguePlugin.Dialogue
// 0x0058 (0x0088 - 0x0030)
class UDialogue final : public UDataAsset
{
public:
	bool                                          DisplayIdleSplines;                                // 0x0030(0x0001)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_31[0x7];                                       // 0x0031(0x0007)(Fixing Size After Last Property [ Dumper-7 ])
	class FText                                   Name_0;                                            // 0x0038(0x0018)(Edit, BlueprintVisible, BlueprintReadOnly, NativeAccessSpecifierPublic)
	TArray<struct FDialogueNode>                  Data;                                              // 0x0050(0x0010)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, ContainsInstancedReference, NativeAccessSpecifierPublic)
	int32                                         NextNodeId;                                        // 0x0060(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	EPhxInterruptingBehavior                      WhenInterrupting;                                  // 0x0064(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	bool                                          bCombatVox;                                        // 0x0065(0x0001)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash, NativeAccessSpecifierPublic)
	uint8                                         Pad_66[0x22];                                      // 0x0066(0x0022)(Fixing Struct Size After Last Property [ Dumper-7 ])

public:
	static void CallFunctionByName(class UObject* Object, const class FString& FunctionName);

	void AssignPersistentOuter(class UWorld* InWorld);
	void CleanOuter();
	struct FDialogueNode GetFirstNode();
	TArray<struct FDialogueNode> GetNextNodes(const struct FDialogueNode& Node);

public:
	static class UClass* StaticClass()
	{
		return StaticClassImpl<"Dialogue">();
	}
	static class UDialogue* GetDefaultObj()
	{
		return GetDefaultObjImpl<UDialogue>();
	}
};
static_assert(alignof(UDialogue) == 0x000008, "Wrong alignment on UDialogue");
static_assert(sizeof(UDialogue) == 0x000088, "Wrong size on UDialogue");
static_assert(offsetof(UDialogue, DisplayIdleSplines) == 0x000030, "Member 'UDialogue::DisplayIdleSplines' has a wrong offset!");
static_assert(offsetof(UDialogue, Name_0) == 0x000038, "Member 'UDialogue::Name_0' has a wrong offset!");
static_assert(offsetof(UDialogue, Data) == 0x000050, "Member 'UDialogue::Data' has a wrong offset!");
static_assert(offsetof(UDialogue, NextNodeId) == 0x000060, "Member 'UDialogue::NextNodeId' has a wrong offset!");
static_assert(offsetof(UDialogue, WhenInterrupting) == 0x000064, "Member 'UDialogue::WhenInterrupting' has a wrong offset!");
static_assert(offsetof(UDialogue, bCombatVox) == 0x000065, "Member 'UDialogue::bCombatVox' has a wrong offset!");

}

