Skip to content

Commit

Permalink
Rudimentary approach at water splash effect for badguys
Browse files Browse the repository at this point in the history
  • Loading branch information
tobbi committed Mar 1, 2015
1 parent 5ffb9d8 commit 092556f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/badguy/badguy.cpp
Expand Up @@ -42,6 +42,7 @@ BadGuy::BadGuy(const Vector& pos, const std::string& sprite_name_, int layer_) :
start_dir(AUTO),
frozen(false),
ignited(false),
in_water(false),
dead_script(),
state(STATE_INIT),
is_active_flag(),
Expand All @@ -54,6 +55,7 @@ BadGuy::BadGuy(const Vector& pos, const std::string& sprite_name_, int layer_) :

SoundManager::current()->preload("sounds/squish.wav");
SoundManager::current()->preload("sounds/fall.wav");
SoundManager::current()->preload("sounds/splash.ogg");

dir = (start_dir == AUTO) ? LEFT : start_dir;
}
Expand All @@ -80,6 +82,7 @@ BadGuy::BadGuy(const Vector& pos, Direction direction, const std::string& sprite

SoundManager::current()->preload("sounds/squish.wav");
SoundManager::current()->preload("sounds/fall.wav");
SoundManager::current()->preload("sounds/splash.ogg");

dir = (start_dir == AUTO) ? LEFT : start_dir;
}
Expand Down Expand Up @@ -113,6 +116,7 @@ BadGuy::BadGuy(const Reader& reader, const std::string& sprite_name_, int layer_

SoundManager::current()->preload("sounds/squish.wav");
SoundManager::current()->preload("sounds/fall.wav");
SoundManager::current()->preload("sounds/splash.ogg");

dir = (start_dir == AUTO) ? LEFT : start_dir;
}
Expand Down Expand Up @@ -233,6 +237,16 @@ BadGuy::collision_tile(uint32_t tile_attributes)
// Don't kill badguys that have already been killed
if (!is_active()) return;

if(tile_attributes & Tile::WATER && !is_in_water())
{
in_water = true;
SoundManager::current()->play("sounds/splash.ogg", get_pos());
}
if(!(tile_attributes & Tile::WATER) && is_in_water())
{
in_water = false;
}

if(tile_attributes & Tile::HURTS) {
if (tile_attributes & Tile::FIRE) {
if (is_flammable()) ignite();
Expand Down Expand Up @@ -611,6 +625,12 @@ BadGuy::is_frozen() const
return frozen;
}

bool
BadGuy::is_in_water() const
{
return in_water;
}

void
BadGuy::ignite()
{
Expand Down
3 changes: 3 additions & 0 deletions src/badguy/badguy.hpp
Expand Up @@ -96,6 +96,8 @@ class BadGuy : public MovingSprite

bool is_frozen() const;

bool is_in_water() const;

protected:
enum State {
STATE_INIT,
Expand Down Expand Up @@ -212,6 +214,7 @@ class BadGuy : public MovingSprite

bool frozen;
bool ignited; /**< true if this badguy is currently on fire */
bool in_water; /** < true if the badguy is currently in water */

std::string dead_script; /**< script to execute when badguy is killed */

Expand Down

0 comments on commit 092556f

Please sign in to comment.