public void PlayerBuyGood() { Transform row = EventSystem.current.currentSelectedGameObject.transform.parent.transform.parent; ResourceUtil.ResourceType type = rows[row]; Entity.EntityType agentType = ResourceUtil.GetResourceByType(type).ProducedBy; Guild guild = townController.town.Guilds[agentType]; float price = guild.Price; if (PlayerController.player.HasResource(type) == false) { PlayerController.player.AddResource(type); } if (PlayerController.player.ResourceInventory[type].Amount < PlayerController.player.ResourceInventory[type].Max) { guild.TransferResource(PlayerController.player, type, 1); PlayerController.player.TransferCurrency(guild, price); EventManager.TriggerEvent("UpdateCurrency"); } Debug.Log(EventSystem.current.currentSelectedGameObject.name); }
private void ProduceCommodity(ResourceUtil.ResourceType produce, ResourceUtil.ResourceType consume, float output) { if (Inventory[consume].Amount > 0) { float amountProduced; float brokenTools = 0; if (Inventory[ResourceUtil.ResourceType.tools].Amount > 0) { amountProduced = output * 2; if (BreakTools() == true) { Inventory[ResourceUtil.ResourceType.tools].Amount -= 1; brokenTools = 1; } } else { amountProduced = output; } Inventory[produce].Amount += amountProduced; Inventory[consume].Amount -= 1; float consumedResourceCost = Inventory[consume].PriceRange.Mean; float toolsCost = 0;// Inventory[ResourceUtil.ResourceType.tools].PriceRange.Mean; Inventory[produce].CostToProduce = (float)Math.Round(consumedResourceCost / amountProduced + toolsCost * brokenTools); RoundsWithoutProduction = 0; } else { ProductionPenalty(); } }
private void AddInventoryRow(ResourceUtil.ResourceType type) { Transform row = Instantiate(inventoryUIRow, gameObject.transform, false); row.transform.Find("ResourceLabel").GetComponent <Text>().text = ResourceUtil.GetResourceByType(type).DisplayName; row.transform.name = ResourceUtil.GetResourceByType(type).DisplayName + "Row"; inventoryRows.Add(type, row); ReorderList(); UpdateInventoryRow(type); }
public Resource(int id, string displayName, ResourceUtil.ResourceType type, float basePrice, AgentEntity.EntityType producedBy, ProductionDifficulty difficultyToProduce) { Id = id; DisplayName = displayName; Type = type; BasePrice = basePrice; ProducedBy = producedBy; ProductionDifficultyModifier = DifficultyToProduce(difficultyToProduce); }
public bool HasResource(ResourceUtil.ResourceType type) { if (ResourceInventory.ContainsKey(type)) { return(true); } else { return(false); } }
public void IncrementResource(ResourceUtil.ResourceType type, float amount = 1) { if (HasResource(type)) { ResourceInventory[type].Amount += amount; } else { AddResource(type, amount: amount); } EventManager.TriggerEvent("UpdateInventory"); }
//Buy at most limit number of items public PriceAmountPair CreateBid(ResourceUtil.ResourceType resourceType, float marketMean, float limit) { Random r = new Random(DateTime.Now.Millisecond); InventoryItem resource = Inventory[resourceType]; float bidPrice = r.Next((int)resource.PriceRange.Min, (int)resource.PriceRange.Max); float idealQuantity = DeterminePurchaseQuantity(resource, marketMean); float amountToBuy = Math.Min(idealQuantity, limit); return(new PriceAmountPair(bidPrice, amountToBuy)); }
//Sell at least limit number of items public PriceAmountPair CreateAsk(ResourceUtil.ResourceType resourceType, float marketMean, float limit) { Random r = new Random(DateTime.Now.Millisecond); InventoryItem resource = Inventory[resourceType]; float priceFromRange = r.Next((int)resource.PriceRange.Min, (int)resource.PriceRange.Max); float askPrice = Math.Max(priceFromRange, Inventory[resourceType].CostToProduce); float idealQuantity = DetermineSaleQuantity(resource, marketMean); float amountToSell = Math.Max(idealQuantity, limit); return(new PriceAmountPair(askPrice, amountToSell)); }
public void PlayerBuyGood() { ResourceUtil.ResourceType type = villageController.village.ResourceProduced.Resource.Type; if (PlayerController.player.HasResource(type) == false) { PlayerController.player.AddResource(type); } if (PlayerController.player.ResourceInventory[type].Amount < PlayerController.player.ResourceInventory[type].Max) { villageController.village.TransferResource(PlayerController.player, type, 1); PlayerController.player.TransferCurrency(villageController.village, villageController.village.ResourceProduced.PriceRange.Max); EventManager.TriggerEvent("UpdateCurrency"); } }
private String GetVillageType(ResourceUtil.ResourceType resourceType) { switch (resourceType) { case ResourceUtil.ResourceType.wheat: return("Farmlands"); case ResourceUtil.ResourceType.wood: return("Logging Camp"); case ResourceUtil.ResourceType.ore: return("Mining Camp"); default: return("Village"); } }
public void PlayerSellGood() { Transform row = EventSystem.current.currentSelectedGameObject.transform.parent.transform.parent; ResourceUtil.ResourceType type = rows[row]; float price = townController.town.Markets[type].MarketPrice; if (PlayerController.player.HasResource(type)) { if (PlayerController.player.ResourceInventory[type].Amount > 0) { PlayerController.player.TransferResource(townController.town, type, 1); townController.town.TransferCurrency(PlayerController.player, price); EventManager.TriggerEvent("UpdateCurrency"); } } }
public static Resource GetResourceByType(ResourceUtil.ResourceType type) { switch (type) { case ResourceType.wheat: return(Wheat); case ResourceType.wood: return(Wood); case ResourceType.ore: return(Ore); case ResourceType.metal: return(Metal); case ResourceType.tools: return(Tools); default: throw new Exception(); } }
public void TransferResource(Entity recipient, ResourceUtil.ResourceType type, float amount) { DecrementResource(type, amount); recipient.Inventory[type].Amount += amount; }
public void AddResource(ResourceUtil.ResourceType type, float amount = 0, float max = 5) { ResourceInventory.Add(type, new PlayerResourceItem(ResourceUtil.GetResourceByType(type), amount, max)); }
public void TransferResource(Player recipient, ResourceUtil.ResourceType type, float amount) { Inventory[type].Amount -= amount; recipient.IncrementResource(type, amount); }
public void DecrementResource(ResourceUtil.ResourceType type, float amount = 1) { ResourceInventory[type].Amount -= amount; EventManager.TriggerEvent("UpdateInventory"); }
private void UpdateInventoryRow(ResourceUtil.ResourceType type) { inventoryRows[type].transform.Find("Amount").GetComponent <Text>().text = PlayerController.player.ResourceInventory[type].Amount.ToString() + "/" + PlayerController.player.ResourceInventory[type].Max.ToString(); }
public List <TransactionRecord> GetAllTransactionsByResource(ResourceUtil.ResourceType type) //This is more relevant in the Town class { return(TransactionHistory.Where(record => record.Resource.Type == type).ToList()); }
public new void AddMarket(ResourceUtil.ResourceType type, Market market) { Markets.Add(type, market); }
public new void RemoveMarket(ResourceUtil.ResourceType type) { Markets.Remove(type); }