X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fcollision.cpp;h=58c48c6bd5a5acbd6ac6ad37ce7bf7bc5a0929ce;hb=5dba61177d71c5572fd29af172fcdab7b1f9a561;hp=fc7a902a2b18831970fc9767476b4a4900dacb1b;hpb=54769dff40025a2e798d2544df6d745196968f94;p=supertux.git diff --git a/src/collision.cpp b/src/collision.cpp index fc7a902a2..58c48c6bd 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -44,6 +44,9 @@ bool rectcollision_offset(const base_type& one, const base_type& two, float off_ bool collision_object_map(const base_type& base) { + if(!World::current()) + return false; + const Level& level = *World::current()->get_level(); TileManager& tilemanager = *TileManager::instance(); @@ -56,7 +59,7 @@ bool collision_object_map(const base_type& base) for(int x = starttilex; x*32 < max_x; ++x) { for(int y = starttiley; y*32 < max_y; ++y) { Tile* tile = tilemanager.get(level.get_tile_at(x, y)); - if(tile->solid) + if(tile && tile->solid) return true; } } @@ -248,6 +251,13 @@ bool issolid(float x, float y) return tile && tile->solid; } +bool isunisolid(float x, float y) +{ + Tile* tile = gettile(x,y); + return tile && tile->unisolid; +} + + bool isbrick(float x, float y) { Tile* tile = gettile(x,y); @@ -260,6 +270,12 @@ bool isice(float x, float y) return tile && tile->ice; } +bool isspike(float x, float y) +{ + Tile* tile = gettile(x,y); + return tile && tile->spike; +} + bool isfullbox(float x, float y) { Tile* tile = gettile(x,y);