public override ISimplePlacement GetPlacement(IPurchasable purchasable, IResourceContainer resources) { var placement = new StructurePlacement(() => resources.HasEnough(purchasable.Cost) ? null : "Not enough resources"); placement.OnPlaced += OnPlaced; return(placement); }
public void Assign(IContentCachedPrefab prefab, Action onSelected) { _prefab = prefab; _purchasable = _prefab.GetCache().GetComponent <IPurchasable>(); _onSelected = onSelected; Init(); }
public void Buy(IPurchasable item, int quantity) { bool purchased = false; if (!CanBuy(item, quantity)) { return; } switch (item.ItemType) { case ItemType.Food: uIManager.foodInventory += item.Quantity * quantity; purchased = true; break; case ItemType.Medicine: uIManager.medicineInventory += item.Quantity * quantity; purchased = true; break; } //Subtract the cost from your budget if we made the purchase. if (purchased) { uIManager.budget.budget -= item.Price * quantity; RefreshView(); } }
public virtual void SetPurchasable(IPurchasable purchasable) { this.purchasable = purchasable; icon.sprite = purchasable.Icon; nameLabel.text = purchasable.Name; costLabel.text = purchasable.Cost.ToString(); buyButton.interactable = purchasable.CanPurchase(); }
public void AddProduct(string type, IPurchasable product) { if (!Products.ContainsKey(type)) { Products.Add(type, new List <IPurchasable>()); } Products[type].Add(product); }
protected Purchasable(IPurchasable copyFrom) { Name = copyFrom.Name; Symbol = copyFrom.Symbol; BuildTime = copyFrom.BuildTime; Cost = new Dictionary <ResourceType, int>(copyFrom.Cost); Prerequisite = copyFrom.Prerequisite; }
public void Purchase(IPurchasable purchasable) { int cost = purchasable.Cost; if (cost <= localPlayerStats.Gold) { localPlayerStats.Gold -= cost; purchasable.OnPurchased(); UpdateUi(); } }
public void Purchase(string selection) { for (int i = 0; i < Machine.ItemList.Count; i++) { IPurchasable item = Machine.ItemList[i]; if (item.Location == selection.ToUpper()) { Machine.ItemList.Remove(item); } } return; }
public override void SetPurchasable(IPurchasable purchasable) { base.SetPurchasable(purchasable); upgradePurchasable = purchasable as IUpgradePurchasable; int currentLevel = upgradePurchasable.CurrentUpgrade; for (int i = 0; i < upgradeIcons.Count; i++) { upgradeIcons[i].color = i < currentLevel ? hasPurchasedColor : notPurchasedColor; } }
public override void HandleMouseMovingEvent(object sender, MouseMotionEventArgs e) { // get the map cell that the user's mouse is hovering over if (userInterfaceManager.CurrentState == UserInterfaceState.PlaceEquipmentActive || userInterfaceManager.CurrentState == UserInterfaceState.PlaceRoomActive) { IPurchasable selectedPurchasable = userInterfaceManager.SelectedPurchasableItem; hoveredMapCells = GetHoveredMapCellAndNeighbors(e.RelativeToWindowX, e.RelativeToWindowY, selectedPurchasable.HorizontalMapCellCount, selectedPurchasable.VerticalMapCellCount); userInterfaceManager.SetHoveredMapCells(hoveredMapCells); } userInterfaceManager.HandleMouseMovingEvent(sender, e); }
internal string GetPurchasables() { var list = "THANK YOU FOR PURCHASING \n"; List <IPurchasable> items = new List <IPurchasable>(); for (int i = 0; i < items.Count; i++) { IPurchasable item = items[i]; list += $"{i + 1}. {item.Price}"; } return(list); }
IEnumerator BuyWeapon() { int rand = UnityEngine.Random.Range(0, purchasables.Length); IPurchasable weapon = purchasables[rand]; if (aiCurrency.AttemptPurchase(weapon.GetCost())) { weapon.Buy(); } yield return(new WaitForSeconds(8f)); StartCoroutine("BuyWeapon"); }
public void GetPurchasables() { Messages.Add("Available to Buy"); for (int i = 0; i < ForSale.Count; i++) { IPurchasable forSale = ForSale[i]; Messages.Add($"{i + 1}"); IPhysical carSale = forSale as IPhysical; if (carSale != null) { carSale.Make; } } Messages.Add("Type a number to see details or Q to quit"); }
public static async Task PurchaseAsync(this IPurchasable self) { var invokeResult = default(bool?); self.Purchase( () => invokeResult = true, () => invokeResult = false); while (!invokeResult.HasValue) { await Task.Delay(MillisecondsDelay); } if (!invokeResult.Value) { throw new InvalidOperationException(); } }
public void Handle(IContentCachedPrefab prefab) { GameObject go = prefab.GetCache(); IPurchasable purchasable = go.GetComponent <IPurchasable>(); IResourceContainer resources = GetComponent <IResourceContainer>(); if (resources.HasEnough(purchasable.Cost)) { GameObject instance = prefab.Instantiate(); ReflectionUtils.DynamicBroadcastInvoke(instance, "OnInstantiated", true); // Definitively hacky, but better than immidiate alternative. instance.SetActive(true); ISimplePlacement placement = GetPlacement(purchasable, resources); placement.Pickup(instance); placement.OnPlaced += (obj) => resources.TrySpend(purchasable.Cost); PlacementController.Instance.TakePlacement(placement); } }
internal string GetPurchasables() { var list = "ORDER FROM THE FOLLOWING: \n"; List <IPurchasable> items = new List <IPurchasable>(); items.AddRange(Snacks); // NOTE filter all rentables to only inclue things that can be purchased var purchasableRents = Rentables.FindAll(r => r is IPurchasable && r.IsAvailable); // NOTE Select functions like .map var rentItems = purchasableRents.Select(elem => (IPurchasable)elem); items.AddRange(rentItems); for (int i = 0; i < items.Count; i++) { IPurchasable item = items[i]; list += $"{i + 1}. {item.Name} - ${item.Price}\n"; } return(list); }
public async Task AddItemToWishlistAsync(WishlistItemViewModel wishlistItemVm, int customerID) { IPurchasable item = null; int? songID = null; int? albumID = null; switch (wishlistItemVm.Category) { case nameof(Song): item = await _context.Songs .AsNoTracking() .Where(s => s.ID == wishlistItemVm.ItemID) .FirstOrDefaultAsync(); songID = item.ID; break; case nameof(Album): item = await _context.Albums .AsNoTracking() .Where(a => a.ID == wishlistItemVm.ItemID) .FirstOrDefaultAsync(); albumID = item.ID; break; default: break; } var wishlist = await _context.Customers .Include(c => c.Wishlist) .ThenInclude(c => c.WishlistItem) .Where(c => c.ID == customerID) .Select(c => c.Wishlist) .FirstOrDefaultAsync(); wishlist.AddWishlistItem(songID, albumID, item.Price); await _context.SaveChangesAsync(); }
public IPurchasable Vend(string input) { Console.Clear(); if (int.TryParse(input, out int index)) { index--; if (index > -1 && index < Items.Count) { IPurchasable item = Items[index]; if (item.Quantity > 0 && item.Price < TransactionTotal) { System.Console.WriteLine("Vmmmmmmmmmmmmmm"); item.Quantity--; TransactionTotal -= item.Price; System.Console.WriteLine($"Enjoy your {item.Name}"); return(item); } } } System.Console.WriteLine("Invalid Selection"); return(null); }
public bool Buy(IPurchasable purchasable, Action OnPurchaseSuccess, Action OnPurchaseFailed) { for (int i = 0; i < virtualCurrencies.Length; i++) { if (virtualCurrencies[i].Name == purchasable.CurrencyName) { if (virtualCurrencies[i].value >= purchasable.Price) { virtualCurrencies[i].value -= purchasable.Price; purchasable.Purchased(); OnPurchaseSuccess?.Invoke(); return(true); } else { OnPurchaseFailed?.Invoke(); return(false); } } } OnPurchaseFailed?.Invoke(); return(false); }
public void Purchase(IPurchasable purchasable) => CurrencyController.AlterCurrency((float)-purchasable.Cost);
public abstract ISimplePlacement GetPlacement(IPurchasable purchasable, IResourceContainer resources);
public void AddFoodToOrder(IPurchasable food) { _Order.AddPurchased(food); }
public bool CanBuy(IPurchasable item, int quantity = 1) { return(item.Price * quantity <= uIManager.budget.budget); }
public PurchasableItemSelectedEventArgs(IPurchasable purchasableItem) { PurchasableItem = purchasableItem; }
public ButtonConfirmWindowClickedEventArgs(IPurchasable purchasableItem) { PurchasableItem = purchasableItem; }
public bool CanPurchase(IPurchasable purchasable) => CurrencyController.Model.Currency > purchasable.Cost;
public PurchasableItemPlacedEventArgs(IPurchasable purchasableItem, IReadOnlyList <MapCell> hoveredMapCells) { PurchasableItem = purchasableItem; HoveredMapCells = hoveredMapCells; }
public ButtonMenuItem(IPurchasable purchasableItem) { this.purchasableItem = purchasableItem; base.Clicked += OnClicked; base.Hovered += OnHovered; }
public void AddItem(IPurchasable item) { Items.Add(item); Total += item.Price; }