src/Terrain.cc
changeset 409 1a03ff151abc
parent 408 e6cfc44266af
child 412 721c60072091
--- a/src/Terrain.cc	Tue Jan 20 23:30:18 2009 +0200
+++ b/src/Terrain.cc	Wed Jan 21 00:21:42 2009 +0200
@@ -18,17 +18,22 @@
     Vector(-1,-1)
 };
 
-Terrain::Terrain (void) :
-    terrain_buf(NULL), width(0), height(0)
+Terrain::Terrain (const TerrainConfig &config) :
+    terrain_buf(NULL),
+    width(config.dimensions.x), height(config.dimensions.y)
 {
-}
+    // allocate terrain_buf
+    terrain_buf = new TerrainPixel[width * height];
 
-Terrain::Terrain (PixelDimension width, PixelDimension height, int seed) :
-    terrain_buf(NULL),
-    width(width), height(height)
-{
-    // allocate+generate random terrain
-    generateTerrain(seed);
+    // fill with dirt
+    memset(terrain_buf, TERRAIN_DIRT, width * height);
+
+    // geneerate random map?
+    if (config.random_seed)
+        generateTerrain(config.random_seed);
+
+    // update pixel buffer
+    generatePixelBuffer();
 }
 
 Terrain::Terrain (PixelDimension width, PixelDimension height, TerrainPixel *terrain_buf) :
@@ -45,18 +50,9 @@
 }
 
 void Terrain::generateTerrain (int seed) {
-    // shouldn't be generated yet
-    assert(!terrain_buf);
-
     // set random number generator seed.
     srand(seed); 
 
-    // allocate terrain buffer
-    terrain_buf = new TerrainPixel[width * height];
-
-    // fill with dirt
-    memset(terrain_buf, TERRAIN_DIRT, width * height);
-
     // some constants to control random generation
     const int min_range = 25;
     const int max_range = 80;
@@ -102,9 +98,6 @@
             }
         } 
     }
-    
-    // update pixel buffer
-    generatePixelBuffer();
 }
 
 void Terrain::generatePixelBuffer (void) {