private void DisplayResource(Tile tile) { Color color = Color.ColorN("black"); if (mapResource != null) { if (tile.HasMapResource(mapResource.Name)) { MapResourceData mapResourceData = tile.GetMapResourceData(mapResource.Name); color = color.LinearInterpolate(new Color(1, 1f, 1), mapResourceData.amount / mapResource.resourceMax); } } Vector2 rectPosition = new Vector2(tile.position.x - world.TileSize / 2, tile.position.y - world.TileSize / 2); DrawRect(new Rect2(rectPosition, world.TileSize, world.TileSize), color); }
public override void _Draw() { base._Draw(); //Console.WriteLine("Updating map"); if (mapResource != null) { for (int x = 0; x < world.Width; x++) { for (int y = 0; y < world.Height; y++) { Tile tile = world.tiles[x][y]; if (tile.HasMapResource(mapResource.Name)) { MapResourceData mapResourceData = tile.GetMapResourceData(mapResource.Name); DrawCircle(tile.position, mapResourceData.amount / mapResource.resourceMax * resourceScale, Color.ColorN("green", 0.75f)); } } } } }
private void DisplayNormal(Tile tile) { Color color; switch (tile.biome) { case TileType.land: color = new Color(213f / 255, 204f / 255, 127f / 255).LinearInterpolate(new Color(57f / 255, 118f / 255, 40f / 255), tile.moisture); color = color.LinearInterpolate(Color.ColorN("black"), (tile.elev) * .9f); //add rock effect if (tile.HasMapResource(MapResourceName.Rock)) { MapResourceData mapResourceData = tile.GetMapResourceData(MapResourceName.Rock); color = color.LinearInterpolate(new Color(98f / 255, 98f / 255, 98f / 255), mapResourceData.amount / mapResourceData.mapResource.resourceMax * 0.75f); } color = color.LinearInterpolate(Color.ColorN("black"), (tile.elev) * .9f); if (tile.speedMod > tile.baseSpeedMod) { tile.speedMod -= (float)(world.Time - tile.lastUpdated) * tile.recoveryRate; if (tile.speedMod < tile.baseSpeedMod) { tile.speedMod = tile.baseSpeedMod; } float mod = (tile.speedMod - tile.baseSpeedMod) / (tile.maxSpeedMod - tile.baseSpeedMod); color = color.LinearInterpolate(new Color(106f / 255, 92f / 255, 82f / 255), mod); tile.lastUpdated = world.Time; } break; case TileType.Water: float deepestWaterElev = -0.1f; Color deepestWaterColor = new Color(0.1f, 0.1f, 0.4f);; if (tile.elev < deepestWaterElev) { color = deepestWaterColor; } else { color = new Color(0.2f, 0.2f, .6f).LinearInterpolate(deepestWaterColor, (tile.elev) / (deepestWaterElev)); } break; case TileType.snow: color = new Color(1f, .9f, .9f); color = color.LinearInterpolate(Color.ColorN("black"), (1 - (tile.elev)) * 0.5f); //add path effect if (tile.speedMod > tile.baseSpeedMod) { tile.speedMod -= (float)(world.Time - tile.lastUpdated) * tile.recoveryRate; if (tile.speedMod < tile.baseSpeedMod) { tile.speedMod = tile.baseSpeedMod; } float mod = (tile.speedMod - tile.baseSpeedMod) / (tile.maxSpeedMod - tile.baseSpeedMod); color = color.LinearInterpolate(new Color(106f / 255, 92f / 255, 82f / 255), mod); tile.lastUpdated = world.Time; } //add rock effect if (tile.HasMapResource(MapResourceName.Rock)) { MapResourceData mapResourceData = tile.GetMapResourceData(MapResourceName.Rock); color = color.LinearInterpolate(new Color(98f / 255, 98f / 255, 98f / 255), mapResourceData.amount / mapResourceData.mapResource.resourceMax * 0.75f); } break; case TileType.SeaIce: color = new Color(.77f, .8f, .85f); break; case TileType.Glacier: color = new Color(.77f, .8f, .85f); color = color.LinearInterpolate(Color.ColorN("black"), (1 - (tile.elev)) * 0.05f); //add path effect if (tile.speedMod > tile.baseSpeedMod) { tile.speedMod -= (float)(world.Time - tile.lastUpdated) * tile.recoveryRate; if (tile.speedMod < tile.baseSpeedMod) { tile.speedMod = tile.baseSpeedMod; } float mod = (tile.speedMod - tile.baseSpeedMod) / (tile.maxSpeedMod - tile.baseSpeedMod); color = color.LinearInterpolate(new Color(106f / 255, 92f / 255, 82f / 255), mod); tile.lastUpdated = world.Time; } //add rock effect if (tile.HasMapResource(MapResourceName.Rock)) { MapResourceData mapResourceData = tile.GetMapResourceData(MapResourceName.Rock); color = color.LinearInterpolate(new Color(98f / 255, 98f / 255, 98f / 255), mapResourceData.amount / mapResourceData.mapResource.resourceMax * 0.75f); } break; default: color = Color.ColorN("pink"); break; } Vector2 rectPosition = new Vector2(tile.position.x - world.TileSize / 2, tile.position.y - world.TileSize / 2); DrawRect(new Rect2(rectPosition, world.TileSize, world.TileSize), color); }