/// <summary> /// 특정 아이템의 하위 아이템 타입들을 이진트리 배열로 반환합니다. /// </summary> /// <param name="parentType">부모로 두는 아이템 타입</param> private ItemBase[] GetTree_ChildTypes(ItemBase parentType) { Item_BST bst = new Item_BST(); bst.ChildNodeTraversal(parentType); return(bst.Get_Array()); }
/// <summary> /// 해당 아이템의 최종 구매 비용을 반환합니다. 하위 아이템의 보유 여부를 확인하고 구매비용을 차감합니다. /// </summary> private int Get_ItemCost(string itemName) { ItemBase item = ItemManager.ItemDB[itemName]; int endCost = item.cost; //위 아이템의 보유 여부를 확인하고 구매비용을 차감합니다. if (item.Get_ChildNode(0) != null) { Item_BST bst = new Item_BST(); bst.ChildNodeTraversal(item); ItemBase[] arr = bst.Get_Array(); for (int i = 1; i < arr.Length; i++) { if (arr[i] == null) { //자식 노드들 NULL 값으로 변환 SetNull_NearChildNode(ref bst, i); continue; } if (_owner.inventory.Contains(arr[i].Get_ItemName())) { endCost -= arr[i].cost; //자식 노드들 NULL 값으로 변환 SetNull_NearChildNode(ref bst, i); _carriedUndergradeItemList.Add(_owner.GetIndex_Inventory(arr[i].Get_ItemName())); } } } return(endCost); }