コード例 #1
0
ファイル: LivingEntity.cs プロジェクト: hermitagup/SOSCSRPG
        public void RemoveItemFromInventory(GameItem item)
        {
            Inventory.Remove(item);

            GroupedInventoryItem groupedInventoryItemToRemove = item.IsUnique ?
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item == item) :                      // if true
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item.ItemTypeID == item.ItemTypeID); // if false

            // Conditional operator :? (ternary operator) => condition ? consequent : alternative
            // similar to if/else. It evaluates a Bool expression and returns the result of one of the two expressions (one is for = true, one is for =false)
            // source: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator
            if (groupedInventoryItemToRemove != null)
            {
                if (groupedInventoryItemToRemove.Quantity == 1)
                {
                    GroupedInventory.Remove(groupedInventoryItemToRemove);
                }
                else
                {
                    groupedInventoryItemToRemove.Quantity--;
                }
            }

            OnPropertyChanged(nameof(Weapons));
        }
コード例 #2
0
        public void RemoveItemFromInventory(GameItem item)
        {
            Inventory.Remove(item);

            //gets first item from groupedinventory where the item matches what we've passed in
            //if unique, gets the exact item
            //if not unique, just the ID so that quests can still remove multiple
            GroupedInventoryItem groupedInventoryItemToRemove = item.IsUnique ?
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item == item) :
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item.ItemTypeID == item.ItemTypeID);

            //check we actually got something, should not be null but safety check
            if (groupedInventoryItemToRemove != null)
            {
                //if item's quantity is 1, just remove it
                if (groupedInventoryItemToRemove.Quantity == 1)
                {
                    GroupedInventory.Remove(groupedInventoryItemToRemove);
                }
                //if quantity is not 1, just lower quantity by 1
                else
                {
                    groupedInventoryItemToRemove.Quantity--;
                }
            }

            OnPropertyChanged(nameof(Weapons));
            OnPropertyChanged(nameof(Consumables));
            OnPropertyChanged(nameof(HasConsumable));
        }
コード例 #3
0
        public void RemoveItemFromInventory(GameItem item)
        {
            Inventory.Remove(item);

            //Checking to see if the item is unique or not
            GroupedInventoryItem groupedInventoryItemToRemove = item.IsUnique ?
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item == item) :
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item.ItemTypeID == item.ItemTypeID);

            if (groupedInventoryItemToRemove != null)
            {
                // Check to see if the item to remove from player's inventory isn't null
                if (groupedInventoryItemToRemove.Quantity == 1)
                {
                    // If the item in question has a quantity of one, remove it from the screen
                    GroupedInventory.Remove(groupedInventoryItemToRemove);
                }
                else
                {
                    // Otherwise just decrease the quantity by one
                    groupedInventoryItemToRemove.Quantity--;
                }
            }

            OnPropertyChanged(nameof(Weapons));
        }
コード例 #4
0
ファイル: LivingEntity.cs プロジェクト: ChuyueL/wpf-rpg
        public void RemoveItemFromInventory(GameItem item)
        {
            Inventory.Remove(item);

            //get the first item from groupinventory where item id matches item id of item we want to remove
            //If item we want to remove is unique, we have to find that exact matching item
            //If not, there's no distinction between the individuzl items.
            //This is a ternary operator - if first part evaluates to true, the first statement is executed.
            GroupedInventoryItem groupedInventoryItemToRemove = item.IsUnique ?
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item == item) :
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item.ItemTypeID == item.ItemTypeID);

            if (groupedInventoryItemToRemove != null) //should never be null but good to check
            {
                //does object have quantity of 1?
                //if so, completely remove item from groupedinventory.
                if (groupedInventoryItemToRemove.Quantity == 1)
                {
                    GroupedInventory.Remove(groupedInventoryItemToRemove);
                }
                else
                {
                    //decrease quantity by 1
                    groupedInventoryItemToRemove.Quantity--;
                }
            }

            OnPropertyChanged(nameof(Weapons));
        }
コード例 #5
0
        public void RemoveItemQuantity(ItemQuantity itemQuantity)
        {
            GameItem itemToRemove = ItemFactory.CreateGameItem(itemQuantity.ItemId);

            for (int i = 0; i < itemQuantity.Quantity; i++)
            {
                Inventory.Remove(itemToRemove);
            }
            GroupedInventory.FirstOrDefault(gi => gi.Item.ItemId == itemToRemove.ItemId).Quantity -= itemQuantity.Quantity;
            OnPropertyChanged(nameof(Weapons));
        }
コード例 #6
0
        //methods

        public void AddItemToInventory(GameItem item)
        {
            Inventory.Add(item);
            if (item.IsUnique || !GroupedInventory.Any(gi => gi.Item.ItemId == item.ItemId))
            {
                GroupedInventory.Add(new GroupedInventoryItem(item, 1));
            }
            else
            {
                GroupedInventory.FirstOrDefault(gi => gi.Item.ItemId == item.ItemId).Quantity++;
            }

            OnPropertyChanged(nameof(Weapons));
        }
コード例 #7
0
        public void RemoveItemFromInventory(GameItem item)
        {
            Inventory.Remove(item);
            GroupedInventoryItem itemToRemove = GroupedInventory.FirstOrDefault(gi => gi.Item.ItemId == item.ItemId);

            if (itemToRemove.Quantity <= 1)
            {
                GroupedInventory.Remove(itemToRemove);
            }
            else
            {
                itemToRemove.Quantity--;
            }
            OnPropertyChanged(nameof(Weapons));
        }
コード例 #8
0
ファイル: LivingEntity.cs プロジェクト: jquinn78/SOSCSRPG
        public void RemoveItemFromInventory(GameItem item)
        {
            Inventory.Remove(item);

            GroupedInventoryItem groupedInventoryItemToRemove = item.IsUnique ? GroupedInventory.FirstOrDefault(gi => gi.Item == item):GroupedInventory.FirstOrDefault(gi => gi.Item.ItemTypeID == item.ItemTypeID);

            if (groupedInventoryItemToRemove != null)
            {
                if (groupedInventoryItemToRemove.Quantity == 1)
                {
                    GroupedInventory.Remove(groupedInventoryItemToRemove);
                }
                else
                {
                    groupedInventoryItemToRemove.Quantity--;
                }
            }
            OnPropertyChanged(nameof(Weapons));
        }
コード例 #9
0
        public void RemoveItemFromInventory(GameItem item) // TODO: Overload with GroupedInventoryItem
        {
            Inventory.Remove(item);

            GroupedInventoryItem groupedInventoryItemToRemove = item.IsUnique ?
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item == item) :
                                                                GroupedInventory.FirstOrDefault(gi => gi.Item.ItemTypeID == item.ItemTypeID);

            if (groupedInventoryItemToRemove.Quantity == 1)
            {
                GroupedInventory.Remove(groupedInventoryItemToRemove);
            }
            else
            {
                groupedInventoryItemToRemove.Quantity--;
            }

            OnPropertyChanged(nameof(Weapons));
            OnPropertyChanged(nameof(Consumables));
            OnPropertyChanged(nameof(HasConsumable));
        }