public void PurchaseItem(ShopAgent shopAgent, UsableItemDetails item, EconomyWallet wallet, AgentInventory inventory) { var shop = GetShop(shopAgent); var success = shop.PurchaseItems(shopAgent.wallet, item, wallet, inventory); if (success) { OverviewVariables.SoldItem(); if (item.itemName == endItem.itemDetails.itemName) { //resetScript.ResetScript(); } } Refresh(); }
public bool PurchaseItems(EconomyWallet shopAgentWallet, UsableItemDetails itemDetails, EconomyWallet adventurerAgentWallet, AgentInventory inventory) { var price = _stockPrices[itemDetails.itemName]; int GetStock() { return(_shopItems[itemDetails.itemName].Count); } if (adventurerAgentWallet.Money <= price) { Debug.Log("Not enough money : wallet " + adventurerAgentWallet.Money + "- price " + price); return(false); } if (GetStock() <= 0) { Debug.Log("Not enough stock"); return(false); } inventory.AddItem(_shopItems[itemDetails.itemName][0]); _shopItems[itemDetails.itemName].RemoveAt(0); _stockPrices[itemDetails.itemName] = price; if (GetStock() <= 0) { _stockPrices.Remove(itemDetails.itemName); _shopItems.Remove(itemDetails.itemName); _previousPrices[itemDetails.itemName] = price; } adventurerAgentWallet.SpendMoney(price); shopAgentWallet.EarnMoney(price); return(true); }
public void ChangePrice(CraftingResources resources, CraftingInventory inventory, EconomyWallet wallet, int change) { CheckInventory(inventory); var craftingInventory = _craftingRequests[inventory]; var containsKey = craftingInventory.ContainsKey(resources); if (containsKey) { if (craftingInventory.ContainsKey(resources)) { var newPrice = craftingInventory[resources].Price + change; var newReward = craftingInventory[resources].GetReward(newPrice); var rewardDifference = newReward - craftingInventory[resources].Reward; var validTransaction = false; if (rewardDifference > 0) { if (rewardDifference <= wallet.Money) { wallet.SpendMoney(rewardDifference); validTransaction = true; } } else { wallet.EarnMoney(Mathf.Abs(rewardDifference)); validTransaction = true; } if (validTransaction) { craftingInventory[resources].Price = newPrice; } } } Refresh(); }
public void MakeRequest(CraftingResources resources, CraftingInventory inventory, EconomyWallet wallet) { void CheckExchange(CraftingResourceRequest request) { if (request.Price <= wallet.Money) { if (_craftingRequests[inventory].ContainsKey(resources)) { _craftingRequests[inventory][resources].Number++; } else { _craftingRequests[inventory].Add(resources, request); } wallet.SpendMoney(request.Price); } } CheckInventory(inventory); var requestNumber = GetRequestNumber(inventory, resources); var canRequest = requestNumber < 10; if (canRequest) { var containsKey = _craftingRequests[inventory].ContainsKey(resources); if (!containsKey) { Sprite icon = GetIconByResource(resources); var newResource = new CraftingResourceRequest(resources, inventory, defaultResourcePrices[resources], icon); _requestWallets.Add(newResource, wallet); CheckExchange(newResource); } else { CheckExchange(_craftingRequests[inventory][resources]); } } Refresh(); }