73 lines
1.3 KiB
C++
73 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "Core/Item/Item.h"
|
|
|
|
template <typename T>
|
|
class InventorySystem
|
|
{
|
|
public:
|
|
InventorySystem() :
|
|
Data(nullptr),
|
|
Capacity(10),
|
|
Size(0)
|
|
{
|
|
Data = new T[Capacity];
|
|
}
|
|
|
|
~InventorySystem()
|
|
{
|
|
delete[] Data;
|
|
Data = nullptr;
|
|
}
|
|
|
|
void Resize()
|
|
{
|
|
T* TempData = new T[Capacity * 2];
|
|
for (int i = 0; i < Size;) TempData[i] = std::move(Data[i]);
|
|
|
|
delete[] Data;
|
|
Data = TempData;
|
|
Capacity *= 2;
|
|
}
|
|
void AddItem(const T& New)
|
|
{
|
|
std::cout << "아이템 추가 시도..." << "(현재 " << Size << "/" << Capacity << ")\n";
|
|
system("pause");
|
|
|
|
if (Size >= Capacity)
|
|
{
|
|
Resize();
|
|
std::cout << "-> 인벤토리 자동 확장!\n";
|
|
}
|
|
Data[Size++] = New;
|
|
|
|
std::cout << "-> 아이템 추가 완료" << "(현재 " << Size << "/" << Capacity << ")\n";
|
|
system("pause");
|
|
|
|
PrintAllItems();
|
|
}
|
|
void RemoveLastItem()
|
|
{
|
|
if (Size <= 0)
|
|
Size = 0;
|
|
else
|
|
Data[Size--] = nullptr;
|
|
}
|
|
void PrintAllItems()
|
|
{
|
|
std::sort(Data, Data + Size, T::ComparePriceDesc);
|
|
|
|
for (int i = 0; i < Size; ++i)
|
|
{
|
|
std::cout << i + 1 << ". " << Data[i].GetItemName() << " (" << Data[i].GetItemPrice() << "G) " << "\n";
|
|
}
|
|
system("pause");
|
|
}
|
|
int GetSize() { return Size; }
|
|
int GetCapacity() { return Capacity; }
|
|
|
|
private:
|
|
T* Data;
|
|
int Capacity;
|
|
int Size;
|
|
}; |