예제 #1
0
        public BiomeType GetBiomeWith(int elevation, int moisture)
        {
            if (!Elevation.Contains(elevation))
            {
                throw new ArgumentException("Invalid elevation value");
            }
            if (!Moisture.Contains(moisture))
            {
                throw new ArgumentException("Invalid moisture value");
            }

            var elevationPercent = Elevation.GetPercent(elevation);
            var moisturePercent  = Moisture.GetPercent(moisture);

            if (elevationPercent >= 0 && elevationPercent < 25)
            {
                if (moisturePercent >= 0 && moisturePercent < 17)
                {
                    return(BiomeType.SubtropicalDesert);
                }
                if (moisturePercent >= 17 && moisturePercent < 33)
                {
                    return(BiomeType.Grassland);
                }
                if (moisturePercent >= 33 && moisturePercent < 66)
                {
                    return(BiomeType.TropicalSeasonalForest);
                }
                return(BiomeType.TropicalRainForest);
            }
            if (elevationPercent >= 25 && elevationPercent < 50)
            {
                if (moisturePercent >= 0 && moisturePercent < 17)
                {
                    return(BiomeType.TemperateDesert);
                }
                if (moisturePercent >= 17 && moisturePercent < 50)
                {
                    return(BiomeType.Grassland);
                }
                if (moisturePercent >= 50 && moisturePercent < 83)
                {
                    return(BiomeType.TemperateDeciduousForest);
                }
                return(BiomeType.TropicalRainForest);
            }
            if (elevationPercent >= 50 && elevationPercent < 75)
            {
                if (moisturePercent >= 0 && moisturePercent < 33)
                {
                    return(BiomeType.TemperateDesert);
                }
                if (moisturePercent >= 33 && moisturePercent < 66)
                {
                    return(BiomeType.Shrubland);
                }
                return(BiomeType.Taiga);
            }
            if (elevationPercent >= 75 && elevationPercent <= 100)
            {
                if (moisturePercent >= 0 && moisturePercent < 17)
                {
                    return(BiomeType.Scorched);
                }
                if (moisturePercent >= 17 && moisturePercent < 33)
                {
                    return(BiomeType.Bare);
                }
                if (moisturePercent >= 33 && moisturePercent < 50)
                {
                    return(BiomeType.Tundra);
                }
                return(BiomeType.Snow);
            }

            return(BiomeType.None);
        }