// Fill out your copyright notice in the Description page of Project Settings. #include "InventoryComponent.h" #include "Items/BaseItem.h" #include "the_twilight_abyss/PlayerTemp/TempCharacter.h" // Sets default values for this component's properties 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; MaxItemSlots = 10; } // Called when the game starts void UInventoryComponent::BeginPlay() { Super::BeginPlay(); for(auto & BaseItem : DefaultItems) { AddItem(BaseItem); } } bool UInventoryComponent::AddItem(class UBaseItem* BaseItem) { //if the items is over the maxinventoryslots then it wont add the item if (Items.Num() >= MaxItemSlots || !BaseItem) { UE_LOG(LogTemp, Display, TEXT("THERE ARE MORE ITEMS THAN THE INVENTORY SLOTS")); return false; } BaseItem->StoredItems = this; BaseItem->World = GetWorld(); Items.Add(BaseItem); UE_LOG(LogTemp, Display, TEXT("ITEM HAS BEEN ADDED")); //Update UI OnInventoryUpdated.Broadcast(); return true; } bool UInventoryComponent::Remove(class UBaseItem* BaseItem) { if(BaseItem) { UE_LOG(LogTemp, Display, TEXT("ItEM HAS BEEN REMOVED")); BaseItem->StoredItems = nullptr; BaseItem->World = nullptr; Items.RemoveSingle(BaseItem); OnInventoryUpdated.Broadcast(); // Updates UI return true; } return false; } UBaseItem* UInventoryComponent::GetItem(int Index) { return Items[Index]; }