projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fade out and pause music on death and resume on restart of level, fixes #1064
[supertux.git]
/
src
/
object
/
player.cpp
diff --git
a/src/object/player.cpp
b/src/object/player.cpp
index
414f43d
..
93c1094
100644
(file)
--- a/
src/object/player.cpp
+++ b/
src/object/player.cpp
@@
-185,7
+185,7
@@
Player::Player(PlayerStatus* _player_status, const std::string& name_) :
SoundManager::current()->preload("sounds/skid.wav");
SoundManager::current()->preload("sounds/flip.wav");
SoundManager::current()->preload("sounds/invincible_start.ogg");
SoundManager::current()->preload("sounds/skid.wav");
SoundManager::current()->preload("sounds/flip.wav");
SoundManager::current()->preload("sounds/invincible_start.ogg");
- SoundManager::current()->preload("sounds/splash.
ogg
");
+ SoundManager::current()->preload("sounds/splash.
wav
");
init();
}
init();
}
@@
-416,9
+416,12
@@
Player::update(float elapsed_time)
if (backflipping && (backflip_timer.get_timegone() > 0.15f)) {
backflipping = false;
backflip_direction = 0;
if (backflipping && (backflip_timer.get_timegone() > 0.15f)) {
backflipping = false;
backflip_direction = 0;
- sprite->set_angle(0.0f);
- powersprite->set_angle(0.0f);
- lightsprite->set_angle(0.0f);
+ physic.set_velocity_x(0);
+ if (!stone) {
+ sprite->set_angle(0.0f);
+ powersprite->set_angle(0.0f);
+ lightsprite->set_angle(0.0f);
+ }
// if controls are currently deactivated, we take care of standing up ourselves
if (deactivated)
// if controls are currently deactivated, we take care of standing up ourselves
if (deactivated)
@@
-644,6
+647,8
@@
Player::do_standup() {
return;
if (backflipping)
return;
return;
if (backflipping)
return;
+ if (stone)
+ return;
if (adjust_height(BIG_TUX_HEIGHT)) {
duck = false;
if (adjust_height(BIG_TUX_HEIGHT)) {
duck = false;
@@
-860,6
+865,7
@@
Player::handle_input()
if (controller->pressed(Controller::DOWN) && player_status->bonus == EARTH_BONUS && !cooldown_timer.started()) {
if (controller->hold(Controller::ACTION) && !ability_timer.started()) {
ability_timer.start(player_status->max_earth_time * STONE_TIME_PER_FLOWER);
if (controller->pressed(Controller::DOWN) && player_status->bonus == EARTH_BONUS && !cooldown_timer.started()) {
if (controller->hold(Controller::ACTION) && !ability_timer.started()) {
ability_timer.start(player_status->max_earth_time * STONE_TIME_PER_FLOWER);
+ powersprite->stop_animation();
stone = true;
physic.set_gravity_modifier(1.0f); // Undo jump_early_apex
}
stone = true;
physic.set_gravity_modifier(1.0f); // Undo jump_early_apex
}
@@
-872,6
+878,9
@@
Player::handle_input()
if (stone && (!controller->hold(Controller::ACTION) || ability_timer.get_timeleft() <= 0.5f)) {
cooldown_timer.start(ability_timer.get_timegone()/2.0f); //The longer stone form is used, the longer until it can be used again
ability_timer.stop();
if (stone && (!controller->hold(Controller::ACTION) || ability_timer.get_timeleft() <= 0.5f)) {
cooldown_timer.start(ability_timer.get_timegone()/2.0f); //The longer stone form is used, the longer until it can be used again
ability_timer.stop();
+ sprite->set_angle(0.0f);
+ powersprite->set_angle(0.0f);
+ lightsprite->set_angle(0.0f);
stone = false;
for (int i = 0; i < 8; i++)
{
stone = false;
for (int i = 0; i < 8; i++)
{
@@
-973,8
+982,6
@@
Player::try_grab()
// make sure the Portable is a MovingObject
MovingObject* moving_object = dynamic_cast<MovingObject*> (portable);
assert(moving_object);
// make sure the Portable is a MovingObject
MovingObject* moving_object = dynamic_cast<MovingObject*> (portable);
assert(moving_object);
- if(moving_object == NULL)
- continue;
// make sure the Portable isn't currently non-solid
if(moving_object->get_group() == COLGROUP_DISABLED) continue;
// make sure the Portable isn't currently non-solid
if(moving_object->get_group() == COLGROUP_DISABLED) continue;
@@
-1064,7
+1071,7
@@
Player::add_bonus(BonusType type, bool animate)
// ignore GROWUP_BONUS if we're already big
if (type == GROWUP_BONUS) {
// ignore GROWUP_BONUS if we're already big
if (type == GROWUP_BONUS) {
- if (
!player_status->bonus =
= NO_BONUS)
+ if (
player_status->bonus !
= NO_BONUS)
return true;
}
return true;
}
@@
-1306,7
+1313,11
@@
Player::draw(DrawingContext& context)
}
}
else {
}
}
else {
- sprite->draw(context, get_pos(), LAYER_OBJECTS + 1);
+ if(dying)
+ sprite->draw(context, get_pos(), Sector::current()->get_foremost_layer() + 1);
+ else
+ sprite->draw(context, get_pos(), LAYER_OBJECTS + 1);
+
if (player_status->bonus == AIR_BONUS)
powersprite->draw(context, get_pos(), LAYER_OBJECTS + 1);
}
if (player_status->bonus == AIR_BONUS)
powersprite->draw(context, get_pos(), LAYER_OBJECTS + 1);
}
@@
-1330,7
+1341,7
@@
Player::collision_tile(uint32_t tile_attributes)
if( tile_attributes & Tile::WATER ){
swimming = true;
no_water = false;
if( tile_attributes & Tile::WATER ){
swimming = true;
no_water = false;
- SoundManager::current()->play( "sounds/splash.
ogg
" );
+ SoundManager::current()->play( "sounds/splash.
wav
" );
}
}
#endif
}
}
#endif
@@
-1515,7
+1526,7
@@
Player::kill(bool completely)
// TODO: need nice way to handle players dying in co-op mode
Sector::current()->effect->fade_out(3.0);
// TODO: need nice way to handle players dying in co-op mode
Sector::current()->effect->fade_out(3.0);
- SoundManager::current()->
stop
_music(3.0);
+ SoundManager::current()->
pause
_music(3.0);
}
}
}
}