summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map.cpp12
-rw-r--r--src/map.h5
2 files changed, 16 insertions, 1 deletions
diff --git a/src/map.cpp b/src/map.cpp
index d2b1590e..a9437f9f 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -80,7 +80,7 @@ Tile::Tile():
Map::Map():
- width(200), height(200)
+ width(0), height(0)
{
tiles = new Tile[width * height];
}
@@ -102,6 +102,8 @@ bool Map::load(char *mapFile) {
fread(&oldMap, sizeof(MAP), 1, file);
fclose(file);
+ setSize(OLD_MAP_WIDTH, OLD_MAP_HEIGHT);
+
// Transfer tile data
int x, y;
for (y = 0; y < OLD_MAP_HEIGHT; y++) {
@@ -134,6 +136,14 @@ bool Map::load(char *mapFile) {
return true;
}
+void Map::setSize(int width, int height)
+{
+ this->width = width;
+ this->height = height;
+ delete[] tiles;
+ tiles = new Tile[width * height];
+}
+
void Map::setWalk(int x, int y, bool walkable) {
if (walkable) {
tiles[x + y * width].flags |= TILE_WALKABLE;
diff --git a/src/map.h b/src/map.h
index 79a3ea36..be0364d7 100644
--- a/src/map.h
+++ b/src/map.h
@@ -64,6 +64,11 @@ class Map
bool load(char *mapFile);
/**
+ * Sets the size of the map. This will destroy any existing map data.
+ */
+ void setSize(int width, int height);
+
+ /**
* Set tile ID.
*/
void setTile(int x, int y, int layer, int id);