Const'ify methods in sector.cpp
[supertux.git] / src / supertux / level.cpp
index 0d78d53..311ec12 100644 (file)
 using namespace std;
 
 Level::Level() :
-  name("noname"), 
-  author("Mr. X"), 
+  name("noname"),
+  author("Mr. X"),
   contact(),
   license(),
   filename(),
   on_menukey_script(),
   sectors(),
   stats(),
-  tileset(NULL), 
+  target_time(),
+  tileset(NULL),
   free_tileset(false)
 {
 }
@@ -68,28 +69,28 @@ Level::load(const std::string& filepath)
     int version = 1;
     level->get("version", version);
     if(version == 1) {
-      log_info << "level uses old format: version 1" << std::endl;
-      tileset = tile_manager->get_tileset("images/tiles.strf");
+      log_info << "[" <<  filepath << "] level uses old format: version 1" << std::endl;
+      tileset = TileManager::current()->get_tileset("images/tiles.strf");
       load_old_format(*level);
       return;
     }
 
     const lisp::Lisp* tilesets_lisp = level->get_lisp("tilesets");
     if(tilesets_lisp != NULL) {
-      tileset      = tile_manager->parse_tileset_definition(*tilesets_lisp);
+      tileset      = TileManager::current()->parse_tileset_definition(*tilesets_lisp).release();
       free_tileset = true;
     }
     std::string tileset_name;
     if(level->get("tileset", tileset_name)) {
       if(tileset != NULL) {
-        log_warning << "multiple tilesets specified in level" << std::endl;
+        log_warning << "[" <<  filepath << "] multiple tilesets specified in level" << std::endl;
       } else {
-        tileset = tile_manager->get_tileset(tileset_name);
+        tileset = TileManager::current()->get_tileset(tileset_name);
       }
     }
     /* load default tileset */
     if(tileset == NULL) {
-      tileset = tile_manager->get_tileset("images/tiles.strf");
+      tileset = TileManager::current()->get_tileset("images/tiles.strf");
     }
     current_tileset = tileset;
 
@@ -102,7 +103,7 @@ Level::load(const std::string& filepath)
       if(token == "version") {
         iter.value()->get(version);
         if(version > 2) {
-          log_warning << "level format newer than application" << std::endl;
+          log_warning << "[" <<  filepath << "] level format newer than application" << std::endl;
         }
       } else if(token == "tileset" || token == "tilesets") {
         continue;
@@ -120,14 +121,15 @@ Level::load(const std::string& filepath)
         Sector* sector = new Sector(this);
         sector->parse(*(iter.lisp()));
         add_sector(sector);
+      } else if(token == "target-time") {
+        iter.value()->get(target_time);
       } else {
-        log_warning << "Unknown token '" << token << "' in level file" << std::endl;
+        log_warning << "[" <<  filepath << "] Unknown token '" << token << "' in level file" << std::endl;
       }
     }
 
     if (license == "") {
-      log_warning << "The level author did not specify a license for this level. You might not be allowed to share it." << std::endl;
-
+      log_warning << "[" <<  filepath << "] The level author \"" << author << "\" did not specify a license for this level \"" << name << "\". You might not be allowed to share it." << std::endl;
     }
   } catch(std::exception& e) {
     std::stringstream msg;
@@ -160,11 +162,11 @@ Level::add_sector(Sector* sector)
 }
 
 Sector*
-Level::get_sector(const std::string& name)
+Level::get_sector(const std::string& name_)
 {
   for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i) {
     Sector* sector = *i;
-    if(sector->get_name() == name)
+    if(sector->get_name() == name_)
       return sector;
   }
 
@@ -172,13 +174,13 @@ Level::get_sector(const std::string& name)
 }
 
 size_t
-Level::get_sector_count()
+Level::get_sector_count() const
 {
   return sectors.size();
 }
 
 Sector*
-Level::get_sector(size_t num)
+Level::get_sector(size_t num) const
 {
   return sectors.at(num);
 }
@@ -189,15 +191,14 @@ Level::get_total_coins()
   int total_coins = 0;
   for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i) {
     Sector* sector = *i;
-    for(Sector::GameObjects::iterator o = sector->gameobjects.begin();
-        o != sector->gameobjects.end(); ++o) {
-      Coin* coin = dynamic_cast<Coin*> (*o);
+    for(auto o = sector->gameobjects.begin(); o != sector->gameobjects.end(); ++o) {
+      Coin* coin = dynamic_cast<Coin*>(o->get());
       if(coin)
       {
         total_coins++;
         continue;
       }
-      BonusBlock *block = dynamic_cast<BonusBlock*> (*o);
+      BonusBlock *block = dynamic_cast<BonusBlock*>(o->get());
       if(block)
       {
         if (block->contents == BonusBlock::CONTENT_COIN)
@@ -212,7 +213,7 @@ Level::get_total_coins()
           continue;
         }
       }
-      GoldBomb *goldbomb = dynamic_cast<GoldBomb*> (*o);
+      GoldBomb *goldbomb = dynamic_cast<GoldBomb*>(o->get());
       if(goldbomb)
         total_coins += 10;
     }
@@ -233,7 +234,7 @@ int
 Level::get_total_secrets()
 {
   int total_secrets = 0;
-  for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i)
+  for(auto i = sectors.begin(); i != sectors.end(); ++i)
     total_secrets += (*i)->get_total_count<SecretAreaTrigger>();
   return total_secrets;
 }