#pragma once

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

// Package: BPC_InventoryController

#include "Basic.hpp"

#include "Engine_structs.hpp"
#include "Engine_classes.hpp"
#include "CoreUObject_structs.hpp"
#include "ST_ItemCoreDatas_structs.hpp"


SDK_NAMESPACE_START

// BlueprintGeneratedClass BPC_InventoryController.BPC_InventoryController_C
// 0x0078 (0x0130 - 0x00B8)
class UBPC_InventoryController_C final : public UActorComponent
{
public:
	struct FPointerToUberGraphFrame               UberGraphFrame;                                    // 0x00B8(0x0008)(ZeroConstructor, Transient, DuplicateTransient)
	class ABP_FirstPersonCharacter_Main_C*        OwnerCharacter;                                    // 0x00C0(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnTemplate, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash)
	int32                                         CurrentSlotIndex;                                  // 0x00C8(0x0004)(Edit, BlueprintVisible, Net, ZeroConstructor, IsPlainOldData, RepNotify, NoDestructor, HasGetValueTypeHash)
	int32                                         MaxSlot;                                           // 0x00CC(0x0004)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, IsPlainOldData, NoDestructor, HasGetValueTypeHash)
	class UDataTable*                             DataTable;                                         // 0x00D0(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash)
	int32                                         CurrentLocalSlot;                                  // 0x00D8(0x0004)(Edit, BlueprintVisible, ZeroConstructor, IsPlainOldData, NoDestructor, HasGetValueTypeHash)
	uint8                                         Pad_DC[0x4];                                       // 0x00DC(0x0004)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<struct FST_ItemCoreDatas>              ItemCoreDatas;                                     // 0x00E0(0x0010)(Edit, BlueprintVisible, Net, DisableEditOnInstance, RepNotify)
	struct FGuid                                  CurrentID;                                         // 0x00F0(0x0010)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, IsPlainOldData, NoDestructor, HasGetValueTypeHash)
	class UBillboardComponent*                    DropPoint;                                         // 0x0100(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, InstancedReference, NoDestructor, HasGetValueTypeHash)
	int32                                         OffHandIndex;                                      // 0x0108(0x0004)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, IsPlainOldData, NoDestructor, HasGetValueTypeHash)
	uint8                                         Pad_10C[0x4];                                      // 0x010C(0x0004)(Fixing Size After Last Property [ Dumper-7 ])
	TArray<struct FST_ItemCoreDatas>              DefaultCoreDatas;                                  // 0x0110(0x0010)(Edit, BlueprintVisible, DisableEditOnInstance)
	TArray<int32>                                 StackState;                                        // 0x0120(0x0010)(Edit, BlueprintVisible, Net, DisableEditOnInstance, RepNotify)

public:
	void CleanCheckAllSlot();
	void AddCoreOption(int32 Index_0, const class FName& Key);
	void OnRep_StackState();
	void GetCanStackSlot(const struct FST_ItemCoreDatas& ST_ItemCoreDatas, int32* SlotIndex);
	bool SlotCanStack(int32 SlotIndex, const struct FST_ItemCoreDatas& ST_ItemCoreDatas);
	void ClearAllItems();
	void ClearSlot(int32 SlotIndex);
	void RespawnItem(class UClass* ItemClass, const struct FST_ItemCoreDatas& ItemCoreDatas_0, const struct FVector& OverrideDropLocation, const struct FRotator& Rotaiton);
	bool SlotIsEmpty(int32 SlotIndex);
	void GetEmptySlot(int32* SlotIndex);
	void DropItem(int32 SlotIndex, const struct FVector& OverrideDropLocation, bool ForceNoDrop, bool MultiAllDrop, bool* IsDrop);
	void UpdateCurrentCoreData(const struct FST_ItemCoreDatas& Value);
	void OnRep_ItemCoreDatas();
	void CopyVariable(class UBPC_InventoryController_C* Source);
	void GetKeyNames(TArray<class FName>* KeyNames);
	void AddInventory(int32 SlotIndex, const struct FST_ItemCoreDatas& CoreDatas, bool* Rezult);
	void OnRep_CurrentSlotIndex();
	void SetSlotValue(int32 MoveValue);
	void SlotChange(int32 MoveValue, int32* CurrentIndex);
	void SlotUpdate();
	void GetCurrentSlotItem(class FName* ItemName, struct FST_ItemCoreDatas* CoreDatas);
	void GetItemData(class FName ItemName, bool* Rezult, struct FCPP_GameItemData* ItemData);
	void ReceiveBeginPlay();
	void HaveItemSync();
	void UpdateCurrentCoreData_Server_(const struct FST_ItemCoreDatas& Value);
	void HaveItemSync_StackCount_();
	void DropCall_Local_(bool ForceNoDrop);
	void DropCall_Server_(int32 SlotIndex, bool ForceNoDrop);
	void ExecuteUbergraph_BPC_InventoryController(int32 EntryPoint);

public:
	static class UClass* StaticClass()
	{
		BP_STATIC_CLASS_IMPL("BPC_InventoryController_C")
	}
	static const class FName& StaticName()
	{
		STATIC_NAME_IMPL(L"BPC_InventoryController_C")
	}
	static class UBPC_InventoryController_C* GetDefaultObj()
	{
		return GetDefaultObjImpl<UBPC_InventoryController_C>();
	}
};
DUMPER7_ASSERTS_UBPC_InventoryController_C;

SDK_NAMESPACE_END
