Пример #1
0
        public void ModifyItemQuantityInBuyCrate(ItemPrefab itemPrefab, int changeInQuantity)
        {
            PurchasedItem itemInCrate = ItemsInBuyCrate.Find(i => i.ItemPrefab == itemPrefab);

            if (itemInCrate != null)
            {
                itemInCrate.Quantity += changeInQuantity;
                if (itemInCrate.Quantity < 1)
                {
                    ItemsInBuyCrate.Remove(itemInCrate);
                }
            }
            else if (changeInQuantity > 0)
            {
                itemInCrate = new PurchasedItem(itemPrefab, changeInQuantity);
                ItemsInBuyCrate.Add(itemInCrate);
            }
            OnItemsInBuyCrateChanged?.Invoke();
        }
Пример #2
0
        public void PurchaseItems(List <PurchasedItem> itemsToPurchase, bool removeFromCrate)
        {
            // Check all the prices before starting the transaction
            // to make sure the modifiers stay the same for the whole transaction
            Dictionary <ItemPrefab, int> buyValues = GetBuyValuesAtCurrentLocation(itemsToPurchase.Select(i => i.ItemPrefab));

            foreach (PurchasedItem item in itemsToPurchase)
            {
                // Add to the purchased items
                var purchasedItem = PurchasedItems.Find(pi => pi.ItemPrefab == item.ItemPrefab);
                if (purchasedItem != null)
                {
                    purchasedItem.Quantity += item.Quantity;
                }
                else
                {
                    purchasedItem = new PurchasedItem(item.ItemPrefab, item.Quantity);
                    PurchasedItems.Add(purchasedItem);
                }

                // Exchange money
                var itemValue = item.Quantity * buyValues[item.ItemPrefab];
                campaign.Money -= itemValue;
                Location.StoreCurrentBalance += itemValue;

                if (removeFromCrate)
                {
                    // Remove from the shopping crate
                    var crateItem = ItemsInBuyCrate.Find(pi => pi.ItemPrefab == item.ItemPrefab);
                    if (crateItem != null)
                    {
                        crateItem.Quantity -= item.Quantity;
                        if (crateItem.Quantity < 1)
                        {
                            ItemsInBuyCrate.Remove(crateItem);
                        }
                    }
                }
            }
            OnPurchasedItemsChanged?.Invoke();
        }
Пример #3
0
        public void PurchaseItems(List <PurchasedItem> itemsToPurchase, bool removeFromCrate)
        {
            foreach (PurchasedItem item in itemsToPurchase)
            {
                // Add to the purchased items
                var purchasedItem = PurchasedItems.Find(pi => pi.ItemPrefab == item.ItemPrefab);
                if (purchasedItem != null)
                {
                    purchasedItem.Quantity += item.Quantity;
                }
                else
                {
                    purchasedItem = new PurchasedItem(item.ItemPrefab, item.Quantity);
                    PurchasedItems.Add(purchasedItem);
                }

                // Exchange money
                var itemValue = GetBuyValueAtCurrentLocation(item);
                campaign.Money -= itemValue;
                Location.StoreCurrentBalance += itemValue;

                if (removeFromCrate)
                {
                    // Remove from the shopping crate
                    var crateItem = ItemsInBuyCrate.Find(pi => pi.ItemPrefab == item.ItemPrefab);
                    if (crateItem != null)
                    {
                        crateItem.Quantity -= item.Quantity;
                        if (crateItem.Quantity < 1)
                        {
                            ItemsInBuyCrate.Remove(crateItem);
                        }
                    }
                }
            }
            OnPurchasedItemsChanged?.Invoke();
        }
Пример #4
0
 public void ClearItemsInBuyCrate()
 {
     ItemsInBuyCrate.Clear();
     OnItemsInBuyCrateChanged?.Invoke();
 }
Пример #5
0
 public void SetItemsInBuyCrate(List <PurchasedItem> items)
 {
     ItemsInBuyCrate.Clear();
     ItemsInBuyCrate.AddRange(items);
     OnItemsInBuyCrateChanged?.Invoke();
 }