Ejemplo n.º 1
0
        private void SetRainfall(ColorsStorage color)
        {
            //coast tiles
            foreach (Node node in sea)
            {
                foreach (Node neighbour in node.neighbours)
                {
                    if (neighbour.elevation >= 5)
                    {
                        neighbour.rainfall += 1;
                    }
                }
            }
            //tropics
            int slice = hgt / 13;

            for (int i = 0; i < wdt; i++)
            {
                for (int j = slice * 6; j < slice * 7; j++)
                {
                    nodeGrid[i][j].rainfall += 4;
                }
            }
            //mountainsides
            foreach (Node node in land)
            {
                node.Mountainsides();
            }
            //even it out
            Queue <Node> highPoints = new Queue <Node>();

            for (int i = 8; i > 0; i--)
            {
                foreach (Node node in worldGrid)
                {
                    if (node.rainfall == i)
                    {
                        highPoints.Enqueue(node);
                    }
                }
                while (highPoints.Count != 0)
                {
                    Node temp = highPoints.Dequeue();
                    temp.SmoothRainfall();
                }
            }
            //color it all
            foreach (Node node in sea)
            {
                node.temperatureColor = color.clear;
            }
            foreach (Node node in land)
            {
                if (node.rainfall >= 8)
                {
                    node.rainfall = 7;
                }
                node.rainfallColor = color.rainfall[node.rainfall];
            }
        }
Ejemplo n.º 2
0
 //generate nature
 public void formWorld(ColorsStorage color)
 {
     continentConflicts();
     setElevations(color);
     setTemperature(color);
     SetRainfall(color);
     SetClimate(color);
 }
Ejemplo n.º 3
0
        public MainWindow()
        {
            InitializeComponent();

            //ui text
            text1                 = "Width: " + GWidth;
            text2                 = "Height: " + GHeight;
            text3                 = "Width: " + GWidth;
            panel.DataContext     = this;
            elevation.DataContext = this;

            //create random & colorstorage
            Random        Rnd      = new Random();
            ColorsStorage cStorage = new ColorsStorage();

            //create a world
            mWorld.WorldInit(8, GWidth, GHeight, Rnd, mainCanvas);

            //get list of grid places
            List <Node> freeNodes = mWorld.GetList();

            /*/get neighbours for nodes
             * foreach(Node node in freeNodes) { node.SetNeighbours(freeNodes,GWidth,GHeight); }
             */

            //create continents
            continents = mWorld.createContinents(12, freeNodes, GWidth, GHeight, Rnd, color);

            mainCanvas.Background = Brushes.Black;

            main.Content = mainCanvas; //attach  the grid to the window

            //spread continents---Slow and need to find out a better way!
            while (freeNodes.Count != 0)
            {
                foreach (Continent continent in continents)
                {
                    continent.Spread(GWidth, freeNodes);
                }
            }

            //clean some lists
            foreach (Continent continent in continents)
            {
                continent.finishList();
            }

            //generate nature of the world
            mWorld.formWorld(color);

            //draw all continents
            mWorld.show("temperature");

            //add ui elements
            mainCanvas.Children.Add(uigrid);
        }
Ejemplo n.º 4
0
 //set climate
 private void SetClimate(ColorsStorage color)
 {
     foreach (Node node in land)
     {
         node.SetClimate(color);
     }
     foreach (Node node in sea)
     {
         if (node.temperature == 0 && node.rainfall >= 3)
         {
             node.enviromentColor = color.ClimateColor("Ice Cap");
         }
         else
         {
             node.enviromentColor = color.clear;
         }
     }
 }
Ejemplo n.º 5
0
 //finish elevation
 private void setElevations(ColorsStorage color)
 {
     Smooth();
     foreach (Node node in worldGrid)
     {
         if (node.elevation >= 5)
         {
             int   i         = node.elevation - 5;
             Brush tempColor = color.land[i];
             node.heightColor = tempColor;
             land.Add(node);
         }
         else
         {
             int   i         = Math.Abs(node.elevation - 4);
             Brush tempColor = color.water[i];
             node.heightColor = tempColor;
             sea.Add(node);
         }
     }
 }
Ejemplo n.º 6
0
 //create continents
 public List <Continent> createContinents(int amount, List <Node> freeNodes, int GWidth, int GHeight, Random Rnd, ColorsStorage temp)
 {
     for (int i = 0; i < amount; i++)
     {
         continents.Add(new Continent(temp.colors[i], freeNodes, GWidth, GHeight, Rnd));
     }
     return(continents);
 }
Ejemplo n.º 7
0
        //set temperatures
        private void setTemperature(ColorsStorage color)
        {
            int slice = hgt / 13;

            for (int i = 0; i < wdt; i++)
            {
                int j = 0;
                for (; j < slice; j++)
                {
                    nodeGrid[i][j].temperature = 0;
                }
                for (; j < slice * 2; j++)
                {
                    nodeGrid[i][j].temperature = 1;
                }
                for (; j < slice * 3; j++)
                {
                    nodeGrid[i][j].temperature = 2;
                }
                for (; j < slice * 4; j++)
                {
                    nodeGrid[i][j].temperature = 3;
                }
                for (; j < slice * 5; j++)
                {
                    nodeGrid[i][j].temperature = 4;
                }
                for (; j < slice * 6; j++)
                {
                    nodeGrid[i][j].temperature = 5;
                }
                for (; j < slice * 7; j++)
                {
                    nodeGrid[i][j].temperature = 6;
                }
                for (; j < slice * 8; j++)
                {
                    nodeGrid[i][j].temperature = 5;
                }
                for (; j < slice * 9; j++)
                {
                    nodeGrid[i][j].temperature = 4;
                }
                for (; j < slice * 10; j++)
                {
                    nodeGrid[i][j].temperature = 3;
                }
                for (; j < slice * 11; j++)
                {
                    nodeGrid[i][j].temperature = 2;
                }
                for (; j < slice * 12; j++)
                {
                    nodeGrid[i][j].temperature = 1;
                }
                for (; j < hgt; j++)
                {
                    nodeGrid[i][j].temperature = 0;
                }
            }
            foreach (Node node in land)
            {
                node.HeightAdjust();
            }
            //smooth temperature differences
            Queue <Node> highPoints = new Queue <Node>();

            for (int i = 8; i > 0; i--)
            {
                foreach (Node node in worldGrid)
                {
                    if (node.temperature == i)
                    {
                        highPoints.Enqueue(node);
                    }
                }
                while (highPoints.Count != 0)
                {
                    Node temp = highPoints.Dequeue();
                    temp.SmoothTemperature();
                }
            }
            foreach (Node node in land)
            {
                node.temperatureColor = color.temperature[node.temperature];
            }
            foreach (Node node in sea)
            {
                node.temperatureColor = color.clear;
            }
        }
Ejemplo n.º 8
0
        //set climate base on rainfall and temperature
        public void SetClimate(ColorsStorage color)
        {
            switch (rainfall)
            {
            case 0:
                switch (temperature)
                {
                case 0: climate = "Polar Desert"; break;

                case 1: climate = "Polar Desert"; break;

                case 2: climate = "Cool Desert"; break;

                case 3: climate = "Cool Desert"; break;

                case 4: climate = "Extreme Desert"; break;

                case 5: climate = "Extreme Desert"; break;

                case 6: climate = "Extreme Desert"; break;
                }
                break;

            case 1:
                switch (temperature)
                {
                case 0: climate = "Polar Desert"; break;

                case 1: climate = "Polar Desert"; break;

                case 2: climate = "Cool Desert"; break;

                case 3: climate = "Cool Desert"; break;

                case 4: climate = "Desert"; break;

                case 5: climate = "Desert"; break;

                case 6: climate = "Desert"; break;
                }
                break;

            case 2:
                switch (temperature)
                {
                case 0: climate = "Polar Desert"; break;

                case 1: climate = "Polar Desert"; break;

                case 2: climate = "Steppe"; break;

                case 3: climate = "Steppe"; break;

                case 4: climate = "Subtropical Scrub"; break;

                case 5: climate = "Subtropical Scrub"; break;

                case 6: climate = "Tropical Scrub"; break;
                }
                break;

            case 3:
                switch (temperature)
                {
                case 0: climate = "Ice Cap"; break;

                case 1: climate = "Tundra"; break;

                case 2: climate = "Boreal Forest"; break;

                case 3: climate = "Temperate Woodlands"; break;

                case 4: climate = "Subtropical Woodlands"; break;

                case 5: climate = "Subtropical Woodlands"; break;

                case 6: climate = "Tropical Woodlands"; break;
                }
                break;

            case 4:
                switch (temperature)
                {
                case 0: climate = "Ice Cap"; break;

                case 1: climate = "Tundra"; break;

                case 2: climate = "Boreal Forest"; break;

                case 3: climate = "Temperate Woodlands"; break;

                case 4: climate = "Mediterranean"; break;

                case 5: climate = "Subtropical Dry Forest"; break;

                case 6: climate = "Tropical Dry Forest"; break;
                }
                break;

            case 5:
                switch (temperature)
                {
                case 0: climate = "Ice Cap"; break;

                case 1: climate = "Wet Tundra"; break;

                case 2: climate = "Boreal Forest"; break;

                case 3: climate = "Temperate Forest"; break;

                case 4: climate = "Temperate Forest"; break;

                case 5: climate = "Subtropical Forest"; break;

                case 6: climate = "Tropical Wet Forest"; break;
                }
                break;

            case 6:
                switch (temperature)
                {
                case 0: climate = "Ice Cap"; break;

                case 1: climate = "Wet Tundra"; break;

                case 2: climate = "Boreal Forest"; break;

                case 3: climate = "Temperate Wet Forest"; break;

                case 4: climate = "Temperate Wet Forest"; break;

                case 5: climate = "Subtropical Wet Forest"; break;

                case 6: climate = "Tropical Wet Forest"; break;
                }
                break;

            case 7:
                switch (temperature)
                {
                case 0: climate = "Ice Cap"; break;

                case 1: climate = "Polar Wetlands"; break;

                case 2: climate = "Polar Wetlands"; break;

                case 3: climate = "Temperate Wetlands"; break;

                case 4: climate = "Temperate Wetlands"; break;

                case 5: climate = "Subtropical Wetlands"; break;

                case 6: climate = "Tropical Wetlands"; break;
                }
                break;
            }
            enviromentColor = color.ClimateColor(climate);
        }