//called after creation public void Initialize(TileType type, int xPos, int yPos, TileResources resources) { TileType = type; XPosition = xPos; YPosition = yPos; SetResources(resources); }
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); }
/// <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; }
void Start() { tileResources = GetComponent <TileResources>(); allTilemaps = new List <Tilemap> { terrainTilemap, growableTilemap, buildingsTilemap }; ReloadWorld(GameManager.Instance.World); }
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); } }
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); }
public void Initialize(TileType type, Vector2 position, TileResources resources) { Initialize(type, (int)position.x, (int)position.y, resources); }