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(); }
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(); }
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(); }