First step towards multiple tilesets per tilemap. Code is very inefficient for now...
[supertux.git] / src / sector.cpp
index 88b40cd..c340ddb 100644 (file)
@@ -177,6 +177,9 @@ Sector::parse_object(const std::string& name, const lisp::Lisp& reader)
 void
 Sector::parse(const lisp::Lisp& sector)
 {
+
+  TileMap::loading_worldmap = false;
+
   bool has_background = false;
   lisp::ListIterator iter(&sector);
   while(iter.next()) {
@@ -236,6 +239,9 @@ Sector::parse(const lisp::Lisp& sector)
 void
 Sector::parse_old_format(const lisp::Lisp& reader)
 {
+
+  TileMap::loading_worldmap = false;
+
   name = "main";
   reader.get("gravity", gravity);
 
@@ -897,10 +903,10 @@ void check_collisions(collision::Constraints* constraints,
     return;
 
   // calculate intersection
-  float itop = r1.get_bottom() - r2.get_top();
+  float itop    = r1.get_bottom() - r2.get_top();
   float ibottom = r2.get_bottom() - r1.get_top();
-  float ileft = r1.get_right() - r2.get_left();
-  float iright = r2.get_right() - r1.get_left();
+  float ileft   = r1.get_right() - r2.get_left();
+  float iright  = r2.get_right() - r1.get_left();
 
   if(fabsf(movement.y) > fabsf(movement.x)) {
     if(ileft < SHIFT_DELTA) {
@@ -1303,9 +1309,9 @@ Sector::handle_collisions()
         get_hit_normal(moving_object->dest, moving_object_2->dest,
                        hit, normal);
         if(!moving_object->collides(*moving_object_2, hit))
-          return;
+          continue;
         if(!moving_object_2->collides(*moving_object, hit))
-          return;
+          continue;
 
         moving_object->collision(*moving_object_2, hit);
         moving_object_2->collision(*moving_object, hit);