Пример #1
0
 //called after creation
 public void Initialize(TileType type, int xPos, int yPos, TileResources resources)
 {
     TileType  = type;
     XPosition = xPos;
     YPosition = yPos;
     SetResources(resources);
 }
Пример #2
0
 private void SetTexts(TileResources resources)
 {
     Water.text      = "Water: " + string.Format("{0:00%}", resources.Water);
     Food.text       = "Food: " + string.Format("{0:00%}", resources.Food);
     Production.text = "Production: " + string.Format("{0:00%}", resources.Production);
     Goods.text      = "Goods: " + string.Format("{0:00%}", resources.Goods);
 }
Пример #3
0
    /// <summary>
    /// Sets the resources to a value in a small random range so that not every tile is the same
    /// </summary>
    /// <param name="resources"></param>
    public void SetResources(TileResources resources)
    {
        resources.Water      = Mathf.Clamp01(resources.Water + Random.Range(-0.1f, 0.1f));
        resources.Food       = Mathf.Clamp01(resources.Food + Random.Range(-0.05f, 0.05f));
        resources.Production = Mathf.Clamp01(resources.Production + Random.Range(-0.2f, 0.2f));
        resources.Goods      = Mathf.Clamp01(resources.Goods + Random.Range(-0.05f, 0.05f));

        Resources = resources;
    }
Пример #4
0
    void Start()
    {
        tileResources = GetComponent <TileResources>();
        allTilemaps   = new List <Tilemap>
        {
            terrainTilemap,
            growableTilemap,
            buildingsTilemap
        };

        ReloadWorld(GameManager.Instance.World);
    }
Пример #5
0
    private void UpdateVariables()
    {
        TileResources resources = new TileResources();

        Tile[] territory = TerrainManager.Instance.GetTerritory(this);
        Variables.TerritorySize = territory.Length;
        foreach (Tile tile in territory)
        {
            resources.Water      += tile.Resources.Water;
            resources.Food       += tile.Resources.Food;
            resources.Production += tile.Resources.Production;
            resources.Goods      += tile.Resources.Goods;
        }
        Variables.EscalationRate   = GetParameterValue("Behaviour");
        Variables.ReproductionRate = (1 - ((Variables.PopulationSize / Variables.TerritorySize) / CultureManager.MaxPopulationPerTile)) * (GetParameterValue("Sociology") * 2);
        Variables.InteractionRate  = GetParameterValue("Communication");

        //resources now has the complete resources of this culture
        if (resources.Water > Variables.PopulationSize / CultureManager.MaxPopulationPerWater &&
            resources.Food > Variables.PopulationSize / CultureManager.MaxPopulationPerFood &&
            resources.Production > Variables.PopulationSize / CultureManager.MaxPopulationPerProduction &&
            resources.Goods > Variables.PopulationSize / CultureManager.MaxPopulationPerGoods)
        {
            Variables.PopulationSize += Mathf.RoundToInt(Random.Range(0, 15) * Variables.ReproductionRate);
        }

        Variables.Production += Mathf.RoundToInt(resources.Production / Variables.PopulationSize);

        if (Variables.PopulationSize <= 0)
        {
            if (OnPopulationEnd != null)
            {
                OnPopulationEnd.Invoke(this);
            }
        }

        if (Variables.TerritorySize <= 0)
        {
            if (OnTerritoryEnd != null)
            {
                OnTerritoryEnd.Invoke(this);
            }
        }

        if (Variables.ReproductionRate <= -10f)
        {
            Variables.PopulationSize -= Random.Range(60, 100);
        }
    }
Пример #6
0
 public void BuildBuilding(BuildingPrefab building)
 {
     if (CurrentBuilding != null && TileManager.instance.buildingDictionary.TryGetBuilding(CurrentBuilding, out BuildingPrefab existingBuilding))
     {
         DailyResources -= existingBuilding.DailyResources;
         //StockPiledResources -= existingBuilding.StockPiledResources;
         MaxStockPile -= existingBuilding.MaxStockPile;
     }
     CurrentBuilding = building.name;
     DailyResources += building.DailyResources;
     //StockPiledResources += building.StockPiledResources;
     MaxStockPile += building.MaxStockPile;
     Destroy(Graphics.gameObject);
     Graphics = Instantiate(building, transform);
 }
Пример #7
0
 public void Initialize(TileType type, Vector2 position, TileResources resources)
 {
     Initialize(type, (int)position.x, (int)position.y, resources);
 }