コード例 #1
0
ファイル: ItemViewer.cs プロジェクト: Nam-DaeHyeon/Toon_AOS
    /// <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());
    }
コード例 #2
0
ファイル: ItemViewer.cs プロジェクト: Nam-DaeHyeon/Toon_AOS
    /// <summary>
    /// 특정 아이템을 자식으로 두는 부모 아이템 타입들을 배열로 반환합니다.
    /// </summary>
    /// <param name="targetType">자식으로 두는 아이템 타입</param>
    private ItemBase[] Get_ParentType(ItemBase targetType)
    {
        //return targetType.Get_ParentNode();

        Item_BST bst = new Item_BST();

        bst.ParentNodeTraversal(targetType);

        return(bst.Get_Array());
    }
コード例 #3
0
ファイル: ItemViewer.cs プロジェクト: Nam-DaeHyeon/Toon_AOS
 /// <summary>
 /// 가까운 자식 노드들을 반환합니다.
 /// </summary>
 /// <returns></returns>
 private void SetNull_NearChildNode(ref Item_BST bst, int nodeIndex)
 {
     //Left Node
     if (nodeIndex * 2 + 1 < bst.Get_Array().Length)
     {
         bst.Get_Array()[nodeIndex * 2 + 1] = null;
     }
     //Right Node
     if (nodeIndex * 2 + 2 < bst.Get_Array().Length)
     {
         bst.Get_Array()[nodeIndex * 2 + 2] = null;
     }
 }
コード例 #4
0
ファイル: ItemViewer.cs プロジェクト: Nam-DaeHyeon/Toon_AOS
    /// <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);
    }