Exemplo n.º 1
0
 public static float GenerateRiver(float x, float y)
 {
     return(RiverNoise.GetNoise(x, y));
     //if (val >= 0.98f)
     //    return new DrawableComponent("0099DB".ToColor();
     //else if (val > 0.96f)
     //    return new DrawableComponent("4CB7E5".ToColor();
     //else if (val > 0.945f)
     //    return new DrawableComponent("C28569".ToColor();
     //else
     //    return null;
 }
Exemplo n.º 2
0
        public static Tile GetTile(int x, int y)
        {
            float x2, y2;

            x2 = x;
            y2 = y;
            RiverNoise.GradientPerturbFractal(ref x2, ref y2);
            var river = GenerateRiver(x2, y2);
            var tile  = new Tile(x, y, Color.Purple);

            if (river > 0.945f)
            {
                tile.Color = Color.Blue;
            }
            else
            {
                float val;
                switch (GenerateBiome(x2, y2))
                {
                case BiomeType.Plains:
                    val = GeneratePlains(x2, y2);
                    if (val > 0.7f)
                    {
                        tile.Color = "B86F50".ToColor();    //wrong colors
                    }
                    break;

                case BiomeType.Desert:
                    val = GenerateDesert(x2, y2);
                    if (val > 0.7f)
                    {
                        tile.Color = "B86F50".ToColor();
                    }
                    else if (val > 0.4f)
                    {
                        tile.Color = "E4A672".ToColor();
                    }
                    else if (val > 0f)
                    {
                        tile.Color = "E8B796".ToColor();
                    }
                    else if (val > -0.6)
                    {
                        tile.Color = "E4A672".ToColor();
                    }
                    else
                    {
                        tile.Color = "C28569".ToColor();
                    }
                    break;

                case BiomeType.Swamp:
                    val = GenerateSwamp(x2, y2);
                    if (val > 0.6f)
                    {
                        tile.Color = "193c3e".ToColor();
                    }
                    else if (val > 0.4f)
                    {
                        tile.Color = "265c42".ToColor();
                    }
                    else if (val > -0.2f)
                    {
                        tile.Color = "3E8948".ToColor();
                    }
                    else if (val > -0.4)
                    {
                        tile.Color = "4CB7E5".ToColor();
                    }
                    else
                    {
                        tile.Color = "0099DB".ToColor();
                    }
                    break;

                case BiomeType.Mountains:
                    val = GenerateMountains(x2, y2);
                    if (val > 0.9f)
                    {
                        tile.Color = "C0CBDC".ToColor();
                    }
                    else if (val > 0.7f)
                    {
                        tile.Color = "3e2731".ToColor();
                    }
                    else if (val > 0.6f)
                    {
                        tile.Color = "733e39".ToColor();
                    }
                    else if (val > 0.5f)
                    {
                        tile.Color = "B86F50".ToColor();
                    }
                    else if (val > 0.4f)
                    {
                        tile.Color = "C28569".ToColor();
                    }
                    else if (val > 0.3f)
                    {
                        tile.Color = "E4A672".ToColor();
                    }
                    else if (val > -0.3)
                    {
                        tile.Color = "E8B796".ToColor();
                    }
                    else
                    {
                        tile.Color = "EAD4AA".ToColor();
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException("What the f**k");
                }
            }
            return(tile);
        }