Example #1
0
    /// <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());
    }
Example #2
0
    /// <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);
    }