Added Inventory Notification Functionality
This commit is contained in:
parent
7a04920197
commit
1254abfd0e
BIN
Content/Blueprints/Status_UI/InventoryNotification.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/Status_UI/InventoryNotification.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Blueprints/Status_UI/ItemTextNotification.uasset
(Stored with Git LFS)
BIN
Content/Blueprints/Status_UI/ItemTextNotification.uasset
(Stored with Git LFS)
Binary file not shown.
@ -11,6 +11,9 @@ UInventoryComponent::UInventoryComponent()
|
||||
// Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features
|
||||
// off to improve performance if you don't need them.
|
||||
PrimaryComponentTick.bCanEverTick = true;
|
||||
|
||||
static ConstructorHelpers::FClassFinder<UUserWidget> InventoryNotificationWidgetClassFinder(TEXT("/Game/Blueprints/Status_UI/InventoryNotification"));
|
||||
InventoryNotificationWidgetClass = InventoryNotificationWidgetClassFinder.Class;
|
||||
|
||||
MaxItemSlots = 10;
|
||||
}
|
||||
@ -21,6 +24,9 @@ void UInventoryComponent::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
InventoryNotificationWidgetInstance = CreateWidget<UUserWidget>(GetWorld(), InventoryNotificationWidgetClass);
|
||||
InventoryNotificationWidgetInstance->AddToViewport();
|
||||
|
||||
//activates the AddItem function for every DefaultItem that inherits BaseItem
|
||||
for (auto& BaseItem : DefaultItems)
|
||||
{
|
||||
@ -44,7 +50,8 @@ bool UInventoryComponent::AddItem(class UBaseItem* BaseItem)
|
||||
//if the item is the same as the item that is being added
|
||||
if (Item->ItemDisplayName.ToString() == BaseItem->ItemDisplayName.ToString())
|
||||
{
|
||||
Item->StackCount++;
|
||||
Item->StackCount += BaseItem->StackCount;
|
||||
OnItemAdd.Broadcast(BaseItem->ItemDisplayName.ToString(), BaseItem->StackCount);
|
||||
UE_LOG(LogTemp, Display, TEXT("ITEM STACKCOUNT: %d"), Item->StackCount);
|
||||
isNewItem = false;
|
||||
break;
|
||||
@ -53,6 +60,7 @@ bool UInventoryComponent::AddItem(class UBaseItem* BaseItem)
|
||||
if (isNewItem == true)
|
||||
{
|
||||
Items.Add(BaseItem);
|
||||
OnItemAdd.Broadcast(BaseItem->ItemDisplayName.ToString(), BaseItem->StackCount);
|
||||
UE_LOG(LogTemp, Display, TEXT("ITEM HAS BEEN ADDED TO INVENTORY"));
|
||||
}
|
||||
//Refreshes the inventory
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
//OUR DELEGATE IS CALLED FONINVENTORYUPDATED
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnInventoryUpdated);
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnItemAdd, const FString&, ItemDisplayName, const int&, StackAmount);
|
||||
|
||||
UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
|
||||
class THE_TWILIGHT_ABYSS_API UInventoryComponent : public UActorComponent
|
||||
@ -24,22 +25,29 @@ protected:
|
||||
virtual void BeginPlay() override;
|
||||
|
||||
public:
|
||||
bool AddItem(class UBaseItem* BaseItem); //adds the item to the player
|
||||
UPROPERTY()
|
||||
TSubclassOf<UUserWidget> InventoryNotificationWidgetClass;
|
||||
UPROPERTY()
|
||||
UUserWidget* InventoryNotificationWidgetInstance;
|
||||
|
||||
bool AddItem(class UBaseItem* BaseItem); //adds the item to the player
|
||||
|
||||
bool Remove(class UBaseItem* BaseItem); //removes the item from the player
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, Instanced)
|
||||
TArray<class UBaseItem*> DefaultItems; //Items you start the game with IF YOU WANT YOU CAN JUST NOT USE THIS
|
||||
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, Category= "Inventory")
|
||||
int32 MaxItemSlots;
|
||||
|
||||
|
||||
UPROPERTY(BlueprintAssignable, Category= "Inventory")
|
||||
FOnInventoryUpdated OnInventoryUpdated; //This is our delegate
|
||||
UPROPERTY(BlueprintAssignable, Category= "Inventory")
|
||||
FOnItemAdd OnItemAdd;
|
||||
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category= "Items")
|
||||
TArray<class UBaseItem*> Items; // The items currently in the inventory
|
||||
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category= "Inventory")
|
||||
class UBaseItem* GetItem(int Index);
|
||||
|
||||
@ -51,7 +59,7 @@ public:
|
||||
|
||||
UFUNCTION()
|
||||
void RemoveItemID(const int& ItemID);
|
||||
|
||||
|
||||
UFUNCTION()
|
||||
UBaseItem* GetItemByID(const int& ItemID);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user