Пример #1
0
    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);
    }
Пример #2
0
    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));
                    }
                }
            }
        }
    }
Пример #3
0
    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);
    }