[Super-tux-commit] supertux/src level.cpp,1.107,1.108
Brought to you by:
wkendrick
From: Matze B. <mat...@us...> - 2004-11-23 16:28:12
|
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; } |