}
current_tileset = NULL;
- if(solid_tilemaps.size() == 0)
+ if(solid_tilemaps.empty())
throw std::runtime_error("No solid tilemap specified");
move_to_spawnpoint("main");
// 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");
{
int dirs = 0;
- for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) {
+ for(std::list<TileMap*>::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();
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);
}
WorldMap::get_width() const
{
float width = 0;
- for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) {
+ for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) {
TileMap* solids = *i;
if (solids->get_width() > width) width = solids->get_width();
}
WorldMap::get_height() const
{
float height = 0;
- for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) {
+ for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) {
TileMap* solids = *i;
if (solids->get_height() > height) height = solids->get_height();
}