public Sprite m_ItemSprite; // 아이템 텍스처 public EquipItem(E_EQUIPITEMS p_item, E_ITEMTYPE p_itemType, Sprite p_itemSprite) { m_Item = p_item; m_ItemType = p_itemType; m_ItemSprite = p_itemSprite; }
// 테이블 정보 갱신 public void TableInfoRenewal() { object[] tempArr = new object[transform.childCount]; // 1차원 배열로 가져와서 2차원 배열로 옮길것 // 배열 채우는 용도 E_EQUIPITEMS tempEquipEnum = E_EQUIPITEMS.None; E_CONSUMEITEMS tempConsumeEnum = E_CONSUMEITEMS.None; for (int i = 0; i < transform.childCount; i++) { object tempObj = transform.GetChild(i).GetComponent <Slot>().m_ItemInfo; // 제작대 슬롯 별로 접근 // null 이면 저장하고 continue if (tempObj == null) { tempArr[i] = tempObj; // 제작대 n번째 슬롯 아이템 continue; } // 장비 아이템 else if (tempObj.GetType() == typeof(EquipItem)) { tempObj = Core.GetFiledInfoToReflectionValueType (tempObj, tempEquipEnum); // 해당 슬롯의 아이템값 저장 } // 소비 아이템 else { tempObj = Core.GetFiledInfoToReflectionValueType (tempObj, tempConsumeEnum); // 해당 슬롯의 아이템값 저장 } tempArr[i] = tempObj; // 제작대 n번째 슬롯 아이템 } // 1차원 -> 2차원 옮기기 for (int y = 0; y < m_Row; y++) { for (int x = 0; x < m_Col; x++) { m_CreaftingTable[y, x] = tempArr[(y * m_Row) + x]; //Debug.Log(m_CreaftingTable[y, x]); } } FinishedItem.GetInstance.FinishedCheak(); // 완성 체크 }
/* * 리스트에서 매개변수로 전달받은 정보와 같은 아이템 찾아서 반환 해주는 함수 */ public T GetItem <T>(string p_item, E_ITEMTYPE p_type) where T : class { T retItem; // 반환할 아이템 switch (p_type) { case E_ITEMTYPE.Equipment: // 넘어온 아이템 이름 Enum.Parse 해서 Enum 형식으로 할당 E_EQUIPITEMS tempEquipEnum = (E_EQUIPITEMS)Enum.Parse(typeof(E_EQUIPITEMS), p_item); // string -> enum for (int i = 0; i < m_EquipItemList.Count; i++) { if (m_EquipItemList[i].m_Item == tempEquipEnum) // 리스트에서 같은 아이템 찾기 { retItem = m_EquipItemList[i] as T; // 형 변환 return(retItem); } } break; case E_ITEMTYPE.Consumption: // 넘어온 아이템 이름 Enum.Parse 해서 Enum 형식으로 할당 E_CONSUMEITEMS tempConsumeEnum = (E_CONSUMEITEMS)Enum.Parse(typeof(E_CONSUMEITEMS), p_item); // string -> enum for (int i = 0; i < m_ConsumeItemList.Count; i++) { if (m_ConsumeItemList[i].m_Item == tempConsumeEnum) // 리스트에서 같은 아이템 찾기 { retItem = m_ConsumeItemList[i] as T; // 형 변환 return(retItem); } } break; } return(null); }
// 장비, 소비 아이템 제작 레시피 설정 void SetItemRecipe() { m_ItemList.Add(ItemManager.GetInstance.GetItem <ConsumeItem>(("Stick"), E_ITEMTYPE.Consumption)); // 막대기 추가 m_ItemList.Add(ItemManager.GetInstance.GetItem <EquipItem>(("WoodenAxe"), E_ITEMTYPE.Equipment)); // 나무 도끼 추가 m_ItemList.Add(ItemManager.GetInstance.GetItem <EquipItem>(("FishingRod"), E_ITEMTYPE.Equipment)); // 낚싯대 추가 m_ItemList.Add(ItemManager.GetInstance.GetItem <EquipItem>(("CarrotOnAStick"), E_ITEMTYPE.Equipment)); // 당근 낚싯대 추가 // 아이템 이름 가져오는 용도 string tempstr = ""; E_EQUIPITEMS tempEquipEnum = E_EQUIPITEMS.None; E_CONSUMEITEMS tempConsumeEnum = E_CONSUMEITEMS.None; for (int i = 0; i < m_ItemList.Count; i++) { if (m_ItemList[i].GetType() == typeof(EquipItem)) // 장비 { tempstr = Core.GetFiledInfoToReflectionValueType (m_ItemList[i], tempEquipEnum).ToString(); // i번째 아이템 이름 가져오기 } if (m_ItemList[i].GetType() == typeof(ConsumeItem)) // 소비 { tempstr = Core.GetFiledInfoToReflectionValueType (m_ItemList[i], tempConsumeEnum).ToString(); // i번째 아이템 이름 가져오기 } object[,] recipe = new object[m_Row, m_Col]; // 막대기 if (tempstr == "Stick") { recipe[0, 0] = null; recipe[0, 1] = null; recipe[0, 2] = null; recipe[1, 0] = null; recipe[1, 1] = E_CONSUMEITEMS.Wood; recipe[1, 2] = null; recipe[2, 0] = null; recipe[2, 1] = E_CONSUMEITEMS.Wood; recipe[2, 2] = null; m_ItemRecipeList.Add(recipe); continue; } // 나무도끼 if (tempstr == "WoodenAxe") { recipe[0, 0] = E_CONSUMEITEMS.Wood; recipe[0, 1] = E_CONSUMEITEMS.Wood; recipe[0, 2] = null; recipe[1, 0] = E_CONSUMEITEMS.Wood; recipe[1, 1] = E_CONSUMEITEMS.Stick; recipe[1, 2] = null; recipe[2, 0] = null; recipe[2, 1] = E_CONSUMEITEMS.Stick; recipe[2, 2] = null; m_ItemRecipeList.Add(recipe); continue; } // 낚싯대 if (tempstr == "FishingRod") { recipe[0, 0] = null; recipe[0, 1] = null; recipe[0, 2] = E_CONSUMEITEMS.Stick; recipe[1, 0] = null; recipe[1, 1] = E_CONSUMEITEMS.Stick; recipe[1, 2] = E_CONSUMEITEMS.String; recipe[2, 0] = E_CONSUMEITEMS.Stick; recipe[2, 1] = null; recipe[2, 2] = E_CONSUMEITEMS.String; m_ItemRecipeList.Add(recipe); continue; } // 당근 낚싯대 if (tempstr == "CarrotOnAStick") { recipe[0, 0] = null; recipe[0, 1] = null; recipe[0, 2] = null; recipe[1, 0] = null; recipe[1, 1] = E_EQUIPITEMS.FishingRod; recipe[1, 2] = null; recipe[2, 0] = null; recipe[2, 1] = null; recipe[2, 2] = E_CONSUMEITEMS.Carrot; m_ItemRecipeList.Add(recipe); continue; } } }