projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Made trampolines less likely to interfere with level design:
[supertux.git]
/
src
/
badguy
/
totem.cpp
diff --git
a/src/badguy/totem.cpp
b/src/badguy/totem.cpp
index
2ee60f1
..
b209914
100644
(file)
--- a/
src/badguy/totem.cpp
+++ b/
src/badguy/totem.cpp
@@
-26,17
+26,20
@@
static const float WALKSPEED = 100;
static const float JUMP_ON_SPEED_Y = -400;
static const float JUMP_OFF_SPEED_Y = -500;
static const float WALKSPEED = 100;
static const float JUMP_ON_SPEED_Y = -400;
static const float JUMP_OFF_SPEED_Y = -500;
+static const std::string LAND_ON_TOTEM_SOUND = "sounds/totem.ogg";
Totem::Totem(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/totem/totem.sprite")
{
carrying = 0;
carried_by = 0;
Totem::Totem(const lisp::Lisp& reader)
: BadGuy(reader, "images/creatures/totem/totem.sprite")
{
carrying = 0;
carried_by = 0;
+ sound_manager->preload( LAND_ON_TOTEM_SOUND );
}
Totem::Totem(const Totem& other)
: BadGuy(other), carrying(other.carrying), carried_by(other.carried_by)
{
}
Totem::Totem(const Totem& other)
: BadGuy(other), carrying(other.carrying), carried_by(other.carried_by)
{
+ sound_manager->preload( LAND_ON_TOTEM_SOUND );
}
Totem::~Totem()
}
Totem::~Totem()
@@
-90,7
+93,7
@@
Totem::active_update(float elapsed_time)
BadGuy::active_update(elapsed_time);
if (!carried_by) {
BadGuy::active_update(elapsed_time);
if (!carried_by) {
- if (might_fall())
+ if (
on_ground() &&
might_fall())
{
dir = (dir == LEFT ? RIGHT : LEFT);
activate();
{
dir = (dir == LEFT ? RIGHT : LEFT);
activate();
@@
-154,6
+157,8
@@
Totem::collision_squished(Player& player)
void
Totem::collision_solid(const CollisionHit& hit)
{
void
Totem::collision_solid(const CollisionHit& hit)
{
+ update_on_ground_flag(hit);
+
// if we are being carried around, pass event to bottom of stack and ignore it
if (carried_by) {
carried_by->collision_solid(hit);
// if we are being carried around, pass event to bottom of stack and ignore it
if (carried_by) {
carried_by->collision_solid(hit);
@@
-231,6
+236,9
@@
Totem::jump_on(Totem* target)
this->carried_by = target;
this->activate();
bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
this->carried_by = target;
this->activate();
bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
+
+ sound_manager->play( LAND_ON_TOTEM_SOUND , get_pos());
+
this->synchronize_with(target);
}
this->synchronize_with(target);
}