Badguys that die will still trigger collisions during the current frame (closes issue 50)
[supertux.git] / src / badguy / treewillowisp.cpp
index 36d798e..e1eb027 100644 (file)
@@ -29,7 +29,7 @@ static const float       SUCKSPEED = 25;
 TreeWillOWisp::TreeWillOWisp(GhostTree* tree, const Vector& pos,
                              float radius, float speed)
   : BadGuy(Vector(0, 0), "images/creatures/willowisp/willowisp.sprite",
-           LAYER_OBJECTS - 20), mystate(STATE_DEFAULT), tree(tree)
+           LAYER_OBJECTS - 20), was_sucked(false), mystate(STATE_DEFAULT), tree(tree)
 {
   treepos_delta = pos;
   sound_manager->preload(SOUNDFILE);
@@ -70,6 +70,7 @@ TreeWillOWisp::start_sucking(Vector suck_target)
 {
   mystate = STATE_SUCKED;
   this->suck_target = suck_target;
+  was_sucked = true;
 }
 
 HitResponse
@@ -91,6 +92,19 @@ TreeWillOWisp::collides(GameObject& other, const CollisionHit& ) {
 }
 
 void
+TreeWillOWisp::draw(DrawingContext& context)
+{
+  sprite->draw(context, get_pos(), layer);
+
+  context.push_target();
+  context.set_target(DrawingContext::LIGHTMAP);
+
+  sprite->draw(context, get_pos(), layer);
+
+  context.pop_target();
+}
+
+void
 TreeWillOWisp::active_update(float elapsed_time)
 {
   // remove TreeWillOWisp if it has completely vanished