#pragma once

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

// Package: GlobalProperties

#include "Basic.hpp"

#include "GlobalProperties_structs.hpp"
#include "Engine_classes.hpp"
#include "CoreUObject_classes.hpp"
#include "DeveloperSettings_classes.hpp"


namespace SDK
{

// Class GlobalProperties.GlobalPropertiesCollection
// 0x0010 (0x0040 - 0x0030)
class UGlobalPropertiesCollection final : public UDataAsset
{
public:
	TArray<class UGlobalPropertiesSheet*>         Sheets;                                            // 0x0030(0x0010)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Protected, NativeAccessSpecifierProtected)

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

// Class GlobalProperties.GlobalPropertiesData
// 0x0078 (0x00A0 - 0x0028)
class UGlobalPropertiesData final : public UObject
{
public:
	uint8                                         Pad_28[0x78];                                      // 0x0028(0x0078)(Fixing Struct Size After Last Property [ Dumper-7 ])

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

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

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

// Class GlobalProperties.GlobalPropertiesEventsComponent
// 0x0060 (0x0100 - 0x00A0)
class UGlobalPropertiesEventsComponent final : public UActorComponent
{
public:
	TMulticastInlineDelegate<void(class UGlobalPropertiesEventsComponent* Events, const struct FGlobalPropertyHandleBool& Property, bool Value)> OnValueChangedBool; // 0x00A0(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, Protected, NativeAccessSpecifierProtected)
	TMulticastInlineDelegate<void(class UGlobalPropertiesEventsComponent* Events, const struct FGlobalPropertyHandleInt& Property, int32 Value)> OnValueChangedInt; // 0x00B0(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, Protected, NativeAccessSpecifierProtected)
	TMulticastInlineDelegate<void(class UGlobalPropertiesEventsComponent* Events, const struct FGlobalPropertyHandleFloat& Property, float Value)> OnValueChangedFloat; // 0x00C0(0x0010)(ZeroConstructor, InstancedReference, BlueprintAssignable, Protected, NativeAccessSpecifierProtected)
	TArray<struct FGlobalPropertyHandleBool>      ObservedBools;                                     // 0x00D0(0x0010)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Protected, NativeAccessSpecifierProtected)
	TArray<struct FGlobalPropertyHandleInt>       ObservedInts;                                      // 0x00E0(0x0010)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Protected, NativeAccessSpecifierProtected)
	TArray<struct FGlobalPropertyHandleFloat>     ObservedFloats;                                    // 0x00F0(0x0010)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Protected, NativeAccessSpecifierProtected)

public:
	void AddObservedBools(const TArray<struct FGlobalPropertyHandleBool>& NewBools);
	void AddObservedFloats(const TArray<struct FGlobalPropertyHandleFloat>& NewFloats);
	void AddObservedInts(const TArray<struct FGlobalPropertyHandleInt>& NewInts);
	void SetObservedBools(const TArray<struct FGlobalPropertyHandleBool>& NewBools);
	void SetObservedFloats(const TArray<struct FGlobalPropertyHandleFloat>& NewFloats);
	void SetObservedInts(const TArray<struct FGlobalPropertyHandleInt>& NewInts);

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

// Class GlobalProperties.GlobalPropertiesSettings
// 0x0028 (0x0060 - 0x0038)
class UGlobalPropertiesSettings final : public UDeveloperSettings
{
public:
	TSoftObjectPtr<class UGlobalPropertiesCollection> Properties;                                    // 0x0038(0x0028)(Edit, BlueprintVisible, BlueprintReadOnly, Config, Protected, UObjectWrapper, HasGetValueTypeHash, NativeAccessSpecifierProtected)

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

// Class GlobalProperties.GlobalPropertiesSheet
// 0x0048 (0x0078 - 0x0030)
class UGlobalPropertiesSheet final : public UDataAsset
{
public:
	class FString                                 UniqueName;                                        // 0x0030(0x0010)(ZeroConstructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	bool                                          Saveable;                                          // 0x0040(0x0001)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, IsPlainOldData, NoDestructor, Protected, HasGetValueTypeHash, NativeAccessSpecifierProtected)
	uint8                                         Pad_41[0x7];                                       // 0x0041(0x0007)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<struct FGlobalPropertyConfigBool>      Bools;                                             // 0x0048(0x0010)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Protected, NativeAccessSpecifierProtected)
	TArray<struct FGlobalPropertyConfigInt>       Ints;                                              // 0x0058(0x0010)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Protected, NativeAccessSpecifierProtected)
	TArray<struct FGlobalPropertyConfigFloat>     Floats;                                            // 0x0068(0x0010)(Edit, BlueprintVisible, BlueprintReadOnly, ZeroConstructor, Protected, NativeAccessSpecifierProtected)

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

// Class GlobalProperties.GlobalPropertiesStaticLibrary
// 0x0000 (0x0028 - 0x0028)
class UGlobalPropertiesStaticLibrary final : public UBlueprintFunctionLibrary
{
public:
	static float AddToGlobalFloat(class UObject* WorldContextObject, const struct FGlobalPropertyHandleFloat& Handle, const float Value);
	static int32 AddToGlobalInt(class UObject* WorldContextObject, const struct FGlobalPropertyHandleInt& Handle, const int32 Value);
	static float DivideGlobalFloatBy(class UObject* WorldContextObject, const struct FGlobalPropertyHandleFloat& Handle, const float Value);
	static int32 DivideGlobalIntBy(class UObject* WorldContextObject, const struct FGlobalPropertyHandleInt& Handle, const int32 Value);
	static bool GetGlobalBool(class UObject* WorldContextObject, const struct FGlobalPropertyHandleBool& Handle);
	static float GetGlobalFloat(class UObject* WorldContextObject, const struct FGlobalPropertyHandleFloat& Handle);
	static int32 GetGlobalInt(class UObject* WorldContextObject, const struct FGlobalPropertyHandleInt& Handle);
	static float MultiplyGlobalFloatBy(class UObject* WorldContextObject, const struct FGlobalPropertyHandleFloat& Handle, const float Value);
	static int32 MultiplyGlobalIntBy(class UObject* WorldContextObject, const struct FGlobalPropertyHandleInt& Handle, const int32 Value);
	static void ResetGlobalProperties(class UObject* WorldContextObject, const class UGlobalPropertiesSheet* Sheet);
	static void SetGlobalBool(class UObject* WorldContextObject, const struct FGlobalPropertyHandleBool& Handle, const bool NewValue);
	static void SetGlobalFloat(class UObject* WorldContextObject, const struct FGlobalPropertyHandleFloat& Handle, const float NewValue);
	static void SetGlobalInt(class UObject* WorldContextObject, const struct FGlobalPropertyHandleInt& Handle, const int32 NewValue);
	static float SubtractFromGlobalFloat(class UObject* WorldContextObject, const struct FGlobalPropertyHandleFloat& Handle, const float Value);
	static int32 SubtractFromGlobalInt(class UObject* WorldContextObject, const struct FGlobalPropertyHandleInt& Handle, const int32 Value);
	static bool ToggleGlobalBool(class UObject* WorldContextObject, const struct FGlobalPropertyHandleBool& Handle);

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

}

