--- 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) {