Update of /cvsroot/super-tux/supertux/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25398/src
Modified Files:
level.cpp
Log Message:
make function more robust
Index: level.cpp
===================================================================
RCS file: /cvsroot/super-tux/supertux/src/level.cpp,v
retrieving revision 1.107
retrieving revision 1.108
diff -u -d -r1.107 -r1.108
--- level.cpp 20 Nov 2004 22:14:38 -0000 1.107
+++ level.cpp 23 Nov 2004 16:28:03 -0000 1.108
@@ -252,10 +252,22 @@
Level::get_total_coins()
{
int total_coins = 0;
- for(Sectors::iterator it = sectors.begin(); it != sectors.end(); ++it)
- for(int x = 0; static_cast<unsigned int>(x) < it->second->solids->get_width(); x++)
- for(int y = 0; static_cast<unsigned int>(y) < it->second->solids->get_height(); y++)
- if(it->second->solids->get_tile(x,y)->attributes & Tile::COIN)
+ for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i) {
+ TileMap* solids = i->second->solids;
+ if(!solids) {
+ std::cerr << "Sector '" << i->first << "' contains no solids!?!\n";
+ continue;
+ }
+ for(size_t x = 0; x < solids->get_width(); ++x)
+ for(size_t y = 0; y < solids->get_height(); ++y) {
+ const Tile* tile = solids->get_tile(x, y);
+ if(tile == 0) {
+ std::cerr << "Invalid tile in sector '" << i->first << "'.\n";
+ continue;
+ }
+ if(tile->attributes & Tile::COIN)
total_coins++;
+ }
+ }
return total_coins;
}
|