Rolled back bomb to old behaviour, some bomb gfx tuning
[supertux.git] / src / badguy / treewillowisp.cpp
index 36d798e..4a0c06b 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);
@@ -38,6 +38,8 @@ TreeWillOWisp::TreeWillOWisp(GhostTree* tree, const Vector& pos,
   this->angle  = 0;
   this->speed  = speed;
   start_position = tree->get_pos() + treepos_delta;
+
+  set_colgroup_active(COLGROUP_MOVING);
 }
 
 TreeWillOWisp::~TreeWillOWisp()
@@ -53,8 +55,6 @@ TreeWillOWisp::activate()
   sound_source->set_gain(2.0);
   sound_source->set_reference_distance(32);
   sound_source->play();
-
-  set_group(COLGROUP_MOVING);
 }
 
 void
@@ -62,7 +62,7 @@ TreeWillOWisp::vanish()
 {
   mystate = STATE_VANISHING;
   sprite->set_action("vanishing", 1);
-  set_group(COLGROUP_DISABLED);
+  set_colgroup_active(COLGROUP_DISABLED);
 }
 
 void
@@ -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