Esempio n. 1
0
    private void AddItemReculsive(IStackableItem currentStackableItem, int amount)
    {
        int maxAmount = currentStackableItem.GetMaxAmount();

        if (maxAmount <= amount)
        {
            Item newItem = itemFactory.MakeItem(currentStackableItem.GetItemDatum(), amount);
            itemList[firstEmptyItemIndex] = newItem;

            IStackableItem newStackableItem = newItem as IStackableItem;

            currentStackableItem.DoublyLinkNextSameItem(newStackableItem);

            FindNextFirstEmptyItemIndex();

            return;
        }
        else
        {
            Item newItem = itemFactory.MakeItem(currentStackableItem.GetItemDatum(), amount);
            itemList[firstEmptyItemIndex] = newItem;

            IStackableItem newStackableItem = newItem as IStackableItem;

            currentStackableItem.DoublyLinkNextSameItem(newStackableItem);

            FindNextFirstEmptyItemIndex();

            AddItemReculsive(newStackableItem, amount - maxAmount);

            return;
        }
    }
Esempio n. 2
0
    public IStackableItem GetLastSameItem()
    {
        IStackableItem currentStackableItem = this;

        if (null != currentStackableItem.GetNextSameItem())
        {
            currentStackableItem = currentStackableItem.GetNextSameItem();
        }
        return(currentStackableItem);
    }
Esempio n. 3
0
    private void AddItem(IStackableItemDatum stackableItemDatum, int amount)
    {
        IStackableItem stackableItem         = stackableItemDictionary[stackableItemDatum];
        IStackableItem lastSameStackableItem = stackableItem.GetLastSameItem();

        lastSameStackableItem.AddAmount(amount, out amount);
        if (amount > 0)
        {
            AddItemReculsive(lastSameStackableItem, amount);
        }
    }
Esempio n. 4
0
 private void UpdateText()
 {
     if (item.IsStackable())
     {
         IStackableItem stackableItem = item as IStackableItem;
         text.SetText(stackableItem.GetAmount().ToString());
     }
     else
     {
         text.SetText("");
     }
 }
Esempio n. 5
0
 private void CustumerSellStackableItem(Item item)
 {
     UI_InputWindow.Show_Static("몇개를 판매하시겠습니까?", "1234567890",
                                (int amount) =>
     {
         IStackableItem stackableItem = item as IStackableItem;
         if (stackableItem.GetAmount() >= amount)
         {
             shop.PlayerSellStackableItem(item, amount);
             return;
         }
         else
         {
             //pop up buying failure message
             Debug.Log("Stackable Sell Failure");
             return;
         }
     });
 }
Esempio n. 6
0
    public void SellStackableItem(Item item, int amount)
    {
        IStackableItem stackableItem  = item as IStackableItem;
        int            originalAmount = stackableItem.GetAmount();

        if (originalAmount == amount)
        {
            goldAmount += stackableItem.GetTotalPrice();

            //update index
            firstEmptyItemIndex = Math.Min(selectedItemIndex, firstEmptyItemIndex);

            //update link
            if (null != stackableItem.GetPrevSameItem())
            {
                IStackableItem prevStameItem = stackableItem.GetPrevSameItem();
                prevStameItem.SetNextSameItem(stackableItem.GetNextSameItem());
            }
            if (null != stackableItem.GetNextSameItem())
            {
                IStackableItem nextSameItem = stackableItem.GetNextSameItem();
                nextSameItem.SetPrevSameItem(stackableItem.GetPrevSameItem());
            }
            //destory
            itemList[selectedItemIndex] = null;
            OnItemChanged?.Invoke(this, new OnItemChangedArgs {
                index = selectedItemIndex
            });
            selectedItemIndex = -1;
        }
        else
        {
            goldAmount += stackableItem.GetTotalPrice();
            stackableItem.SetAmount(originalAmount - amount);
        }
    }
Esempio n. 7
0
 public void DoublyLinkNextSameItem(IStackableItem nextStackableItem)
 {
     this.nextStackableItem = nextStackableItem;
     nextStackableItem.SetPrevSameItem(this);
 }
Esempio n. 8
0
 public void SetPrevSameItem(IStackableItem prevStackableItem)
 {
     this.prevStackableItem = prevStackableItem;
 }
Esempio n. 9
0
 public void SetNextSameItem(IStackableItem nextStackableItem)
 {
     this.nextStackableItem = nextStackableItem;
 }