Update of /cvsroot/super-tux/supertux/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3509/src
Modified Files:
badguy.cpp
Log Message:
Bugfix: enemies below half the screen were not appearing and were causing problems at level begin.
Dunno how did this bug only showed up after my changes, since it doesn't seem to be related.
Index: badguy.cpp
===================================================================
RCS file: /cvsroot/super-tux/supertux/src/badguy.cpp,v
retrieving revision 1.131
retrieving revision 1.132
diff -u -d -r1.131 -r1.132
--- badguy.cpp 21 Oct 2004 18:03:22 -0000 1.131
+++ badguy.cpp 21 Oct 2004 18:34:13 -0000 1.132
@@ -159,13 +159,12 @@
void
BadGuy::init()
{
- base.x = 0;
- base.y = 0;
+ base.x = start_position.x;
+ base.y = start_position.y;
base.width = 32;
base.height = 32;
mode = NORMAL;
- dying = DYING_NOT;
old_base = base;
dir = LEFT;
seen = false;
@@ -177,8 +176,6 @@
specs = badguyspecs_manager->load(badguykind_to_string(kind));
- set_action("hide", "hide");
-
// if we're in a solid tile at start correct that now
if(Sector::current()) {
if(kind != BAD_FLAME && kind != BAD_FISH && kind != BAD_FLAMEFISH && collision_object_map(base))
@@ -869,12 +866,12 @@
if (start_position.x > scroll_x - X_OFFSCREEN_DISTANCE &&
start_position.x < scroll_x - base.width &&
start_position.y > scroll_y - Y_OFFSCREEN_DISTANCE &&
- start_position.y < scroll_y + Y_OFFSCREEN_DISTANCE)
+ start_position.y < scroll_y + screen->h + Y_OFFSCREEN_DISTANCE)
activate(RIGHT);
else if (start_position.x > scroll_x + screen->w &&
start_position.x < scroll_x + screen->w + X_OFFSCREEN_DISTANCE &&
start_position.y > scroll_y - Y_OFFSCREEN_DISTANCE &&
- start_position.y < scroll_y + Y_OFFSCREEN_DISTANCE)
+ start_position.y < scroll_y + screen->h + Y_OFFSCREEN_DISTANCE)
activate(LEFT);
/* Special case for badguys on start of the level.
* If in the future, it's possible to set Tux start pos, this case
@@ -962,6 +959,9 @@
void
BadGuy::draw(DrawingContext& context)
{
+ if(!seen)
+ return;
+
if((dir == LEFT && action_left == "hide") ||
(dir == RIGHT && action_right == "hide"))
return;
@@ -1217,6 +1217,9 @@
void
BadGuy::collision(void *p_c_object, int c_object, CollisionType type)
{
+ if(!seen)
+ return;
+
BadGuy* pbad_c = NULL;
Bullet* pbullet_c = NULL;
|