Console logging is now identical in all builds; warning and error show the console...
[supertux.git] / src / supertux / tile_set_parser.cpp
index 2ed1264..a4cbd3d 100644 (file)
@@ -79,10 +79,6 @@ TileSetParser::parse_tile(const Reader& reader)
   }
 
   uint32_t attributes = 0;
-  uint32_t data = 0;
-  std::vector<Tile::ImageSpec> imagespecs;
-
-  float anim_fps = 10;
 
   bool value = false;
   if(reader.get("solid", value) && value)
@@ -106,6 +102,8 @@ TileSetParser::parse_tile(const Reader& reader)
   if(reader.get("goal", value) && value)
     attributes |= Tile::GOAL;
 
+  uint32_t data = 0;
+
   if(reader.get("north", value) && value)
     data |= Tile::WORLDMAP_NORTH;
   if(reader.get("south", value) && value)
@@ -118,29 +116,28 @@ TileSetParser::parse_tile(const Reader& reader)
     data |= Tile::WORLDMAP_STOP;
 
   reader.get("data", data);
-  reader.get("anim-fps", anim_fps);
 
-  uint32_t throwaway_data;
-  if(reader.get("slope-type", throwaway_data)) 
+  float fps = 10;
+  reader.get("fps", fps);
+
+  if(reader.get("slope-type", data)) 
   {
     attributes |= Tile::SOLID | Tile::SLOPE;
   }
 
+  std::vector<Tile::ImageSpec> editor_imagespecs;
+  const lisp::Lisp* editor_images;
+  editor_images = reader.get_lisp("editor-images");
+  if(editor_images)
+    editor_imagespecs = parse_tile_images(*editor_images);
+
+  std::vector<Tile::ImageSpec> imagespecs;
   const lisp::Lisp* images;
-#ifndef NDEBUG
-  images = reader.get_lisp("editor-images");
+  images = reader.get_lisp("images");
   if(images)
-    imagespecs = parse_tile_images(*images);
-  else {
-#endif
-    images = reader.get_lisp("images");
-    if(images)
       imagespecs = parse_tile_images(*images);
-#ifndef NDEBUG
-  }
-#endif
 
-  std::auto_ptr<Tile> tile(new Tile(m_tileset, imagespecs, attributes, data, anim_fps));
+  std::auto_ptr<Tile> tile(new Tile(m_tileset, imagespecs, editor_imagespecs, attributes, data, fps));
 
   if (id >= m_tileset.tiles.size())
     m_tileset.tiles.resize(id+1, 0);
@@ -169,7 +166,7 @@ TileSetParser::parse_tile_images(const Reader& images_lisp)
     {
       std::string file;
       cur->get(file);
-      imagespecs.push_back(Tile::ImageSpec(m_tiles_path + file, Rect(0, 0, 0, 0)));
+      imagespecs.push_back(Tile::ImageSpec(m_tiles_path + file, Rectf(0, 0, 0, 0)));
     }
     else if(cur->get_type() == lisp::Lisp::TYPE_CONS &&
             cur->get_car()->get_type() == lisp::Lisp::TYPE_SYMBOL &&
@@ -187,7 +184,7 @@ TileSetParser::parse_tile_images(const Reader& images_lisp)
       ptr->get_car()->get(y); ptr = ptr->get_cdr();
       ptr->get_car()->get(w); ptr = ptr->get_cdr();
       ptr->get_car()->get(h);
-      imagespecs.push_back(Tile::ImageSpec(m_tiles_path + file, Rect(x, y, x+w, y+h)));
+      imagespecs.push_back(Tile::ImageSpec(m_tiles_path + file, Rectf(x, y, x+w, y+h)));
     } 
     else 
     {
@@ -211,6 +208,8 @@ TileSetParser::parse_tiles(const Reader& reader)
   std::vector<uint32_t> datas;
   //List of frames that the tiles come in
   std::vector<std::string> images;
+  //List of frames that the editor tiles come in
+  std::vector<std::string> editor_images;
 
   // width and height of the image in tile units, this is used for two
   // purposes:
@@ -226,22 +225,20 @@ TileSetParser::parse_tiles(const Reader& reader)
   bool has_attributes = reader.get("attributes", attributes);
   bool has_datas = reader.get("datas", datas);
 
-  if (!reader.get("image", images))
-  {
-    reader.get("images", images);
-  }
+  reader.get("image", images) || reader.get("images", images);
+  reader.get("editor-images", editor_images);
 
   reader.get("width",      width);
   reader.get("height",     height);
 
-  float animfps = 10;
-  reader.get("anim-fps",     animfps);
+  float fps = 10;
+  reader.get("fps",     fps);
 
   if (images.size() <= 0) 
   {
     throw std::runtime_error("No images in tile.");
   }
-  else if (animfps < 0) 
+  else if (fps < 0) 
   {
     throw std::runtime_error("Negative fps.");
   }
@@ -281,11 +278,17 @@ TileSetParser::parse_tiles(const Reader& reader)
         std::vector<Tile::ImageSpec> imagespecs;
         for(std::vector<std::string>::const_iterator j = images.begin(); j != images.end(); ++j) 
         {
-          imagespecs.push_back(Tile::ImageSpec(m_tiles_path + *j, Rect(x, y, x + 32, y + 32)));
+          imagespecs.push_back(Tile::ImageSpec(m_tiles_path + *j, Rectf(x, y, x + 32, y + 32)));
+        }
+
+        std::vector<Tile::ImageSpec> editor_imagespecs;
+        for(std::vector<std::string>::const_iterator j = editor_images.begin(); j != editor_images.end(); ++j) 
+        {
+          editor_imagespecs.push_back(Tile::ImageSpec(m_tiles_path + *j, Rectf(x, y, x + 32, y + 32)));
         }
 
-        std::auto_ptr<Tile> tile(new Tile(m_tileset, imagespecs,
-                                          (has_attributes ? attributes[i] : 0), (has_datas ? datas[i] : 0), animfps));
+        std::auto_ptr<Tile> tile(new Tile(m_tileset, imagespecs, editor_imagespecs,
+                                          (has_attributes ? attributes[i] : 0), (has_datas ? datas[i] : 0), fps));
         if (m_tileset.tiles[ids[i]] == 0) {
           m_tileset.tiles[ids[i]] = tile.release();
         } else {