class App
{
public static Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>();
public App()
{
ItemData data0 = new ItemData(100, "장검", 5f);
ItemData data1 = new ItemData(101, "단검", 3.4f);
ItemData data2 = new ItemData(102, "활", 4f);
ItemData data3 = new ItemData(103, "창", 5.3f);
ItemData data4 = new ItemData(104, "지팡이", 3f);
dicItemDatas.Add(data0.id, data0);
dicItemDatas.Add(data1.id, data1);
dicItemDatas.Add(data2.id, data2);
dicItemDatas.Add(data3.id, data3);
dicItemDatas.Add(data4.id, data4);
Inventory inventory = new Inventory();
inventory.AddItem(new Item(dicItemDatas[100]));
inventory.AddItem(new Item(dicItemDatas[101], 2));
inventory.AddItem(new Item(dicItemDatas[102], 2));
inventory.AddItem(new Item(dicItemDatas[102], 1));
inventory.PrintItems();
Item foundItem = inventory.GetItem(100);
if (foundItem != null)
{
Console.WriteLine("찾은 아이템의 id : {0}", foundItem.data.name);
}
inventory.GetItem(100);
inventory.PrintItems();
}
}
class ItemData
{
public int id;
public string name;
public float damage;
public ItemData(int id, string name, float damage)
{
this.id = id;
this.name = name;
this.damage = damage;
}
}
class Item
{
public ItemData data;
public int amount;
public Item(ItemData data)
{
this.data = data;
this.amount = 1;
}
public Item(ItemData data, int amount)
{
this.data = data;
this.amount = amount;
}
}
class Inventory
{
private List<Item> list = new List<Item>();
public int Count
{
get
{
return list.Count;
}
}
public Inventory()
{
}
public void AddItem(Item item)
{
for(int i=0;i<this.list.Count; i++)
{
if (this.list[i].data.id == item.data.id)
{
list[i].amount += item.amount;
Console.WriteLine("아이템[{0}]이 {1}개 추가 되어 {2}개가 되었습니다.", item.data.name, item.amount, this.list[i].amount);
return;
}
}
this.list.Add(item);
Console.WriteLine("아이템[{0}]이 {1}개 추가 되었습니다.", item.data.name, item.amount);
}
public Item GetItem(int id)
{
Item item = null;
for (int i = 0; i < this.list.Count; i++)
{
if (this.list[i].data.id == id)
{
item = this.list[i];
this.list.Remove(this.list[i]);
Console.WriteLine("{0}을 가방에서 가져왔습니다.", item.data.name);
return item;
}
}
Console.WriteLine("가방에 {0}이 존재하지 않습니다.", App.dicItemDatas[id].name);
return null;
}
public void PrintItems()
{
Console.WriteLine();
foreach (Item item in this.list)
{
Console.WriteLine("{0} {1} x {2}", item.data.id, item.data.name, item.amount);
}
}
}