X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fworldmap%2Fworldmap.cpp;h=f6be69f316dbc244daf5d07c89e5a11c1f57b951;hb=82bb12ef9e35fb9af8fab2de99ad853f57391d33;hp=3300fa8db7f10c6c8164bb24a5e205796ba90204;hpb=26316f3548bc819f817918a79dbee7ce9f7270c5;p=supertux.git diff --git a/src/worldmap/worldmap.cpp b/src/worldmap/worldmap.cpp index 3300fa8db..f6be69f31 100644 --- a/src/worldmap/worldmap.cpp +++ b/src/worldmap/worldmap.cpp @@ -330,7 +330,7 @@ WorldMap::load(const std::string& filename) } current_tileset = NULL; - if(solid_tilemaps.size() == 0) + if(solid_tilemaps.empty()) throw std::runtime_error("No solid tilemap specified"); move_to_spawnpoint("main"); @@ -481,6 +481,10 @@ WorldMap::finished_level(Level* gamelevel) // TODO use Level* parameter here? LevelTile* level = at_level(); + if(level == NULL) { + return; + } + bool old_level_state = level->solved; level->solved = true; level->sprite->set_action("solved"); @@ -718,7 +722,7 @@ WorldMap::tile_data_at(Vector p) { int dirs = 0; - for(std::list::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) { + for(std::list::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) { TileMap* tilemap = *i; const Tile* tile = tilemap->get_tile((int)p.x, (int)p.y); int dirdata = tile->getData(); @@ -1030,16 +1034,25 @@ WorldMap::save_state() store_bool(vm, "perfect", level->perfect); level->statistics.serialize_to_squirrel(vm); - sq_newslot(vm, -3, SQFalse); + if(SQ_FAILED(sq_newslot(vm, -3, SQFalse))) + { + throw std::runtime_error("failed to create '" + name + "' table entry"); + } } - sq_newslot(vm, -3, SQFalse); + if(SQ_FAILED(sq_newslot(vm, -3, SQFalse))) + { + throw std::runtime_error("failed to create '" + name + "' table entry"); + } // overall statistics... total_stats.serialize_to_squirrel(vm); // push world into worlds table - sq_newslot(vm, -3, SQFalse); + if(SQ_FAILED(sq_newslot(vm, -3, SQFalse))) + { + throw std::runtime_error("failed to create '" + name + "' table entry"); + } } catch(std::exception& ) { sq_settop(vm, oldtop); } @@ -1180,7 +1193,7 @@ float WorldMap::get_width() const { float width = 0; - for(std::list::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) { + for(std::list::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) { TileMap* solids = *i; if (solids->get_width() > width) width = solids->get_width(); } @@ -1191,7 +1204,7 @@ float WorldMap::get_height() const { float height = 0; - for(std::list::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) { + for(std::list::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) { TileMap* solids = *i; if (solids->get_height() > height) height = solids->get_height(); }