* Add Airship (regular above-ground theme) and Battle (castle/boss theme) music court...
[supertux.git] / src / object / tilemap.cpp
index 88def18..a3e11ea 100644 (file)
@@ -95,16 +95,26 @@ TileMap::TileMap(const lisp::Lisp& reader)
   if(width < 0 || height < 0)
     throw std::runtime_error("Invalid/No width/height specified in tilemap.");
 
-  if(!reader.get_vector("tiles", tiles))
+  if(!reader.get("tiles", tiles))
     throw std::runtime_error("No tiles in tilemap.");
 
   if(int(tiles.size()) != width*height) {
     throw std::runtime_error("wrong number of tiles in tilemap.");
   }
 
-  // make sure all tiles used on the tilemap are loaded
-  for(Tiles::iterator i = tiles.begin(); i != tiles.end(); ++i)
+  bool empty = true;
+
+  // make sure all tiles used on the tilemap are loaded and tilemap isn't empty
+  for(Tiles::iterator i = tiles.begin(); i != tiles.end(); ++i) {
+    if(*i != 0) {
+      empty = false;
+    }
+
     tileset->get(*i);
+  }
+
+  if(empty)
+    log_info << "Tilemap '" << name << "', z-pos '" << z_pos << "' is empty." << std::endl;
 }
 
 TileMap::TileMap(const TileSet *new_tileset, std::string name, int z_pos,
@@ -128,14 +138,14 @@ TileMap::write(lisp::Writer& writer)
 {
   writer.start_list("tilemap");
 
-  writer.write_int("z-pos", z_pos);
+  writer.write("z-pos", z_pos);
 
-  writer.write_bool("solid", solid);
-  writer.write_float("speed", speed_x);
-  writer.write_float("speed-y", speed_y);
-  writer.write_int("width", width);
-  writer.write_int("height", height);
-  writer.write_int_vector("tiles", tiles);
+  writer.write("solid", solid);
+  writer.write("speed", speed_x);
+  writer.write("speed-y", speed_y);
+  writer.write("width", width);
+  writer.write("height", height);
+  writer.write("tiles", tiles);
 
   writer.end_list("tilemap");
 }