Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
 public bool HasResource(ResourceUtil.ResourceType type)
 {
     if (ResourceInventory.ContainsKey(type))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 6
0
    public void IncrementResource(ResourceUtil.ResourceType type, float amount = 1)
    {
        if (HasResource(type))
        {
            ResourceInventory[type].Amount += amount;
        }
        else
        {
            AddResource(type, amount: amount);
        }

        EventManager.TriggerEvent("UpdateInventory");
    }
Ejemplo n.º 7
0
    //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));
    }
Ejemplo n.º 8
0
    //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");
        }
    }
Ejemplo n.º 10
0
    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");
        }
    }
Ejemplo n.º 11
0
    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");
            }
        }
    }
Ejemplo n.º 12
0
    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();
        }
    }
Ejemplo n.º 13
0
 public void TransferResource(Entity recipient, ResourceUtil.ResourceType type, float amount)
 {
     DecrementResource(type, amount);
     recipient.Inventory[type].Amount += amount;
 }
Ejemplo n.º 14
0
 public void AddResource(ResourceUtil.ResourceType type, float amount = 0, float max = 5)
 {
     ResourceInventory.Add(type, new PlayerResourceItem(ResourceUtil.GetResourceByType(type), amount, max));
 }
Ejemplo n.º 15
0
 public void TransferResource(Player recipient, ResourceUtil.ResourceType type, float amount)
 {
     Inventory[type].Amount -= amount;
     recipient.IncrementResource(type, amount);
 }
Ejemplo n.º 16
0
    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();
 }
Ejemplo n.º 18
0
 public List <TransactionRecord> GetAllTransactionsByResource(ResourceUtil.ResourceType type) //This is more relevant in the Town class
 {
     return(TransactionHistory.Where(record => record.Resource.Type == type).ToList());
 }
Ejemplo n.º 19
0
 public new void AddMarket(ResourceUtil.ResourceType type, Market market)
 {
     Markets.Add(type, market);
 }
Ejemplo n.º 20
0
 public new void RemoveMarket(ResourceUtil.ResourceType type)
 {
     Markets.Remove(type);
 }