AddItem
AddItem
함수 개요
인벤토리에 아이템을 추가합니다. 빈 슬롯을 찾아 배치하며, 스택 가능한 아이템의 경우 기존 스택에 합산합니다.
시그니처
cpp
EAddItemResult CInventorySystem::AddItem(const SItemData& itemData, int nCount = 1);
파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
itemData |
const SItemData& |
추가할 아이템 데이터 |
nCount |
int |
추가할 수량 (기본값: 1) |
반환값
cpp
enum class EAddItemResult
{
Success, // 추가 성공
InventoryFull, // 인벤토리 가득 참
InvalidItem, // 유효하지 않은 아이템
StackOverflow, // 최대 스택 초과
};
구현 예시
cpp
EAddItemResult CInventorySystem::AddItem(const SItemData& itemData, int nCount)
{
if (!itemData.IsValid())
return EAddItemResult::InvalidItem;
// 스택 가능 여부 확인
if (itemData.bStackable)
{
CItem* pExisting = FindStackableSlot(itemData.nItemID);
if (pExisting)
{
int nNewCount = pExisting->GetCount() + nCount;
if (nNewCount > itemData.nMaxStack)
return EAddItemResult::StackOverflow;
pExisting->SetCount(nNewCount);
OnItemUpdated(pExisting);
return EAddItemResult::Success;
}
}
// 빈 슬롯 탐색
int nSlot = FindEmptySlot();
if (nSlot < 0)
return EAddItemResult::InventoryFull;
m_aSlots[nSlot] = CItem(itemData, nCount);
OnItemAdded(&m_aSlots[nSlot], nSlot);
return EAddItemResult::Success;
}