X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsector.cpp;h=79d80c6f5e31aff6ad62b2d2163161cec31697ed;hb=b72c5d178e4cc95130735d8bf8716513c7cc28e1;hp=cb20718a8b4ef5cf284feae7d7599387b5906764;hpb=bf769796df5b8899eadaff544409f0ee20882530;p=supertux.git diff --git a/src/sector.cpp b/src/sector.cpp index cb20718a8..79d80c6f5 100644 --- a/src/sector.cpp +++ b/src/sector.cpp @@ -56,7 +56,6 @@ #include "object/bullet.hpp" #include "object/text_object.hpp" #include "badguy/jumpy.hpp" -#include "badguy/spike.hpp" #include "trigger/sequence_trigger.hpp" #include "player_status.hpp" #include "scripting/script_interpreter.hpp" @@ -73,7 +72,7 @@ Sector::Sector() currentmusic(LEVEL_MUSIC) { song_title = "chipdisko.ogg"; - player = new Player(&player_status); + player = new Player(player_status); add_object(player); #ifdef USE_GRID @@ -630,7 +629,7 @@ Sector::collision_tilemap(MovingObject* object, int depth) if(Collision::rectangle_aatriangle(temphit, dest, object->movement, triangle)) { hit.tileflags |= tile->getAttributes(); - if(temphit.time > hit.time) { + if(temphit.time > hit.time && (tile->getAttributes() & Tile::SOLID)) { temphit.tileflags = hit.tileflags; hit = temphit; } @@ -640,7 +639,7 @@ Sector::collision_tilemap(MovingObject* object, int depth) if(Collision::rectangle_rectangle(temphit, dest, object->movement, rect)) { hit.tileflags |= tile->getAttributes(); - if(temphit.time > hit.time) { + if(temphit.time > hit.time && (tile->getAttributes() & Tile::SOLID)) { temphit.tileflags = hit.tileflags; hit = temphit; } @@ -650,7 +649,7 @@ Sector::collision_tilemap(MovingObject* object, int depth) } // did we collide at all? - if(hit.time < 0) + if(hit.tileflags == 0) return; // call collision function @@ -751,11 +750,11 @@ Sector::add_bullet(const Vector& pos, float xm, Direction dir) static const size_t MAX_ICE_BULLETS = 1; Bullet* new_bullet = 0; - if(player_status.bonus == FIRE_BONUS) { + if(player_status->bonus == FIRE_BONUS) { if(bullets.size() > MAX_FIRE_BULLETS-1) return false; new_bullet = new Bullet(pos, xm, dir, FIRE_BULLET); - } else if(player_status.bonus == ICE_BONUS) { + } else if(player_status->bonus == ICE_BONUS) { if(bullets.size() > MAX_ICE_BULLETS-1) return false; new_bullet = new Bullet(pos, xm, dir, ICE_BULLET);