more tuning of badguy activation
authorMatthias Braun <matze@braunis.de>
Tue, 25 May 2004 10:38:52 +0000 (10:38 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 25 May 2004 10:38:52 +0000 (10:38 +0000)
SVN-Revision: 1325

src/badguy.cpp
src/world.cpp

index 67389d5..aa092ca 100644 (file)
@@ -215,9 +215,16 @@ BadGuy::init()
         --base.y;
     }
 
-  // just activate the badguy, since he might be on screen already. If not he
-  // gets deactivated anyway
-  activate(LEFT);
+  if(World::current()->camera) {
+    Vector scroll = World::current()->camera->get_translation();
+
+    if(start_position.x > scroll.x - X_OFFSCREEN_DISTANCE &&
+        start_position.x < scroll.x + screen->w + X_OFFSCREEN_DISTANCE &&
+        start_position.y > scroll.y - Y_OFFSCREEN_DISTANCE &&
+        start_position.y < scroll.y + screen->h + Y_OFFSCREEN_DISTANCE) {
+      activate(LEFT);
+    }
+  }
 }
 
 void
index 0c28cb0..70da9b4 100644 (file)
@@ -43,6 +43,7 @@ Surface* img_distro[4];
 World* World::current_ = 0;
 
 World::World(const std::string& filename, int level_nr)
+  : level(0), tux(0), background(0), camera(0)
 {
   // FIXME: Move this to action and draw and everywhere else where the
   // world calls child functions
@@ -109,6 +110,8 @@ World::~World()
   }
 
   delete level;
+
+  current_ = 0;
 }
 
 void