projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
qmax patch to fix bug #0000389 - colors in infoblocks
[supertux.git]
/
src
/
badguy
/
treewillowisp.cpp
diff --git
a/src/badguy/treewillowisp.cpp
b/src/badguy/treewillowisp.cpp
index
c143406
..
4a0c06b
100644
(file)
--- a/
src/badguy/treewillowisp.cpp
+++ b/
src/badguy/treewillowisp.cpp
@@
-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",
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);
{
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;
this->angle = 0;
this->speed = speed;
start_position = tree->get_pos() + treepos_delta;
+
+ set_colgroup_active(COLGROUP_MOVING);
}
TreeWillOWisp::~TreeWillOWisp()
}
TreeWillOWisp::~TreeWillOWisp()
@@
-53,8
+55,6
@@
TreeWillOWisp::activate()
sound_source->set_gain(2.0);
sound_source->set_reference_distance(32);
sound_source->play();
sound_source->set_gain(2.0);
sound_source->set_reference_distance(32);
sound_source->play();
-
- set_group(COLGROUP_MOVING);
}
void
}
void
@@
-62,13
+62,15
@@
TreeWillOWisp::vanish()
{
mystate = STATE_VANISHING;
sprite->set_action("vanishing", 1);
{
mystate = STATE_VANISHING;
sprite->set_action("vanishing", 1);
- set_
group
(COLGROUP_DISABLED);
+ set_
colgroup_active
(COLGROUP_DISABLED);
}
void
}
void
-TreeWillOWisp::start_sucking()
+TreeWillOWisp::start_sucking(
Vector suck_target
)
{
mystate = STATE_SUCKED;
{
mystate = STATE_SUCKED;
+ this->suck_target = suck_target;
+ was_sucked = true;
}
HitResponse
}
HitResponse
@@
-90,6
+92,19
@@
TreeWillOWisp::collides(GameObject& other, const CollisionHit& ) {
}
void
}
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
TreeWillOWisp::active_update(float elapsed_time)
{
// remove TreeWillOWisp if it has completely vanished
@@
-102,7
+117,7
@@
TreeWillOWisp::active_update(float elapsed_time)
}
if (mystate == STATE_SUCKED) {
}
if (mystate == STATE_SUCKED) {
- Vector dir =
tree->get_bbox().get_middle()
- get_pos();
+ Vector dir =
suck_target
- get_pos();
if(dir.norm() < 5) {
vanish();
return;
if(dir.norm() < 5) {
vanish();
return;