コード例 #1
0
ファイル: InventoryShop.cs プロジェクト: claudyy/Inventory
 public void SellAll(IInventoryOwner owner, Inventory inv)
 {
     for (int j = 0; j < inv.size; j++)
     {
         Sell(inv, j, owner);
     }
 }
コード例 #2
0
ファイル: InventoryShop.cs プロジェクト: claudyy/Inventory
        public void Buy(int index, IInventoryOwner owner)
        {
            if (index >= itemShops.Count)
            {
                return;
            }
            var buyItem = itemShops[index];

            if (CanBuy(owner, buyItem))
            {
                return;
            }
            if (OwnerHasSpace(owner, buyItem.Item) == false)
            {
                return;
            }
            var inventories = owner.GetInventories();
            var count       = buyItem.Item.count;

            for (int i = 0; i < inventories.Count; i++)
            {
                var space = inventories[i].CountOfSpaceForItem(buyItem.Item);
                var add   = Mathf.Min(count, space);
                inventories[i].AddItem(buyItem.Item, add);
                count -= add;
            }
            owner.RemoveCurrency(buyItem.Cost);
        }
コード例 #3
0
ファイル: UI_Shop.cs プロジェクト: claudyy/Inventory
 public void SetShop(InventoryShop shop, IInventoryOwner customer)
 {
     this.shop     = shop;
     this.customer = customer;
     FillGrid(shop.Size);
     UpdateView();
 }
コード例 #4
0
 static void RemoveShield(IInventoryOwner character)
 {
     foreach (var item in character.Inventory.GetItems(x => x.Position == CharacterInventoryPositionEnum.ACCESSORY_POSITION_SHIELD))
     {
         character.Inventory.MoveItem(item, CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED);
     }
 }
コード例 #5
0
ファイル: InventoryShop.cs プロジェクト: claudyy/Inventory
        public void SellAll(IInventoryOwner owner)
        {
            var inventories = owner.GetInventories();

            for (int i = 0; i < inventories.Count; i++)
            {
                SellAll(owner, inventories[i]);
            }
        }
コード例 #6
0
ファイル: Crafting.cs プロジェクト: claudyy/Inventory
        public bool CanCraft(IInventoryOwner owner, int index)
        {
            int selectRecipe = SelectRecipe(owner, index);

            if (selectRecipe == -1)
            {
                return(false);
            }
            return(true);
        }
コード例 #7
0
ファイル: Crafting.cs プロジェクト: claudyy/Inventory
        public bool CanCraft(IInventoryOwner owner, int index, int recipeIndex)
        {
            var itemCraft   = list[index];
            var inventories = owner.GetInventories();
            var recipes     = itemCraft.GetRecipes();

            var  selectedRecipe = recipes[recipeIndex];
            bool result         = OwnerHasEnoughItemsForRecipe(inventories, selectedRecipe);

            return(result);
        }
コード例 #8
0
ファイル: Crafting.cs プロジェクト: claudyy/Inventory
        public void Craft(IInventoryOwner owner, int index)
        {
            if (index >= list.Count)
            {
                return;
            }
            var select = SelectRecipe(owner, index);

            if (select == -1)
            {
                return;
            }
            Craft(owner, index, select);
        }
コード例 #9
0
ファイル: InventoryShop.cs プロジェクト: claudyy/Inventory
        bool OwnerHasSpace(IInventoryOwner owner, Item item)
        {
            var inventories = owner.GetInventories();
            var freeSpace   = 0;

            for (int i = 0; i < inventories.Count; i++)
            {
                if (inventories[i].HaveSpaceForItem(item))
                {
                    freeSpace += inventories[i].CountOfSpaceForItem(item);
                }
            }
            return(freeSpace >= item.count);
        }
コード例 #10
0
ファイル: InventoryShop.cs プロジェクト: claudyy/Inventory
        public void Sell(Inventory inv, int itemIndex, IInventoryOwner owner)
        {
            var item = inv.GetItem(itemIndex);

            if (item == Item.Empty)
            {
                return;
            }
            var count = inv.GetItem(itemIndex).count;

            inv.RemoveItemAt(itemIndex);
            var gain = GetSellValueForItem(item) * count;

            owner.AddCurrency(gain);
        }
コード例 #11
0
ファイル: Crafting.cs プロジェクト: claudyy/Inventory
        private static void RemoveItems(IInventoryOwner owner, CraftingRecipe selectedRecipe)
        {
            var inventories = owner.GetInventories();

            for (int i = 0; i < selectedRecipe.items.Count; i++)
            {
                var count = selectedRecipe.counts[i];
                for (int inv = 0; inv < inventories.Count; inv++)
                {
                    var remove = Mathf.Min(count, inventories[inv].CountOfItem(selectedRecipe.items[i]));
                    inventories[inv].RemoveItem(selectedRecipe.items[i], remove);
                    count -= remove;
                }
            }
        }
コード例 #12
0
ファイル: Crafting.cs プロジェクト: claudyy/Inventory
        private int SelectRecipe(IInventoryOwner owner, int index)
        {
            var itemCraft = list[index];
            var recipes   = itemCraft.GetRecipes();

            for (int r = 0; r < recipes.Count; r++)
            {
                if (CanCraft(owner, index, r) == true)
                {
                    return(r);
                }
            }

            return(-1);
        }
コード例 #13
0
ファイル: Crafting.cs プロジェクト: claudyy/Inventory
        private static void AddItems(ItemCrafting itemCraft, IInventoryOwner owner)
        {
            var inventories = owner.GetInventories();
            var result      = itemCraft.GetItems();

            for (int inv = 0; inv < inventories.Count; inv++)
            {
                for (int i = 0; i < result.Count; i++)
                {
                    if (inventories[inv].HaveSpaceForItem(result[i]))
                    {
                        inventories[inv].AddItem(result[i], result[i].count);
                    }
                }
            }
        }
コード例 #14
0
ファイル: Crafting.cs プロジェクト: claudyy/Inventory
        public void Craft(IInventoryOwner owner, int index, int selectRecipe)
        {
            if (index >= list.Count)
            {
                return;
            }
            if (CanCraft(owner, index, selectRecipe) == false)
            {
                return;
            }
            var itemCraft = list[index];
            var recipes   = itemCraft.GetRecipes();

            RemoveItems(owner, recipes[selectRecipe]);
            AddItems(itemCraft, owner);
        }
コード例 #15
0
        private void Switch(ExtendedAction extendedAction)
        {
            List <IInventoryOwner> allies = GetLeftSideAllies();

            if (allies.Count < 2)
            {
                return;
            }

            Int32 newIndex = SwitchCurrentCharacterIndex(extendedAction, allies);

            if (newIndex == -1)
            {
                return;
            }

            IInventoryOwner leftAlly = allies[newIndex];

            ChangeLeftBackpack(leftAlly);

            _hud.TradeBoxText.text = leftAlly.DisplayName;
        }
コード例 #16
0
ファイル: Crafting.cs プロジェクト: tomaszkot/Roguelike
        //public bool InventoryAcceptsItem(Loot loot)
        //{
        //  return true;
        //}

        public virtual bool GetGoldWhenSellingTo(IInventoryOwner other)
        {
            return(false);
        }
コード例 #17
0
ファイル: Inventory.cs プロジェクト: MeisterOfPizza/Galaxies
 public Inventory(IInventoryOwner owner)
 {
     this.Owner = owner;
 }
コード例 #18
0
 internal void UpdateView(IInventoryOwner customer, InventoryShop shop, int i)
 {
     text.text      = shop.GetCost(i).ToString();
     display.sprite = shop.GetUIDisplay(i);
     display.color  = shop.CanBuy(customer, i) ? Color.white : Color.gray;
 }
コード例 #19
0
ファイル: InventoryShop.cs プロジェクト: claudyy/Inventory
 public bool CanBuy(IInventoryOwner owner, int index)
 {
     return(owner.GetCurrentCurency() < itemShops[index].Cost);
 }
コード例 #20
0
ファイル: InventoryShop.cs プロジェクト: claudyy/Inventory
 public bool CanBuy(IInventoryOwner owner, ItemShop buyItem)
 {
     return(owner.GetCurrentCurency() < buyItem.Cost);
 }
コード例 #21
0
 private void ChangeLeftBackpack(IInventoryOwner character)
 {
     _hud.LeftInventory = character.Inventory;
     _hud.LeftBackpack.SetMaxWeigth(character.MaxCarryWeight);
     _hud.ShowBackpackWithCost(_hud.LeftBackpack, character.Inventory);
 }