Rock(lisp, "images/objects/trampoline/trampoline.sprite"),
portable(true)
{
- sound_manager->preload(TRAMPOLINE_SOUND);
+ SoundManager::current()->preload(TRAMPOLINE_SOUND);
//Check if this trampoline is not portable
if(lisp.get("portable", portable)) {
if(!portable) {
//we need another sprite
sprite_name = "images/objects/trampoline/trampoline_fix.sprite";
- sprite = sprite_manager->create(sprite_name);
+ sprite = SpriteManager::current()->create(sprite_name);
sprite->set_action("normal");
}
}
}
+Trampoline::Trampoline(const Vector& pos, bool port) :
+ Rock(pos, "images/objects/trampoline/trampoline.sprite"),
+ portable(port)
+{
+ SoundManager::current()->preload(TRAMPOLINE_SOUND);
+ if(!port) {
+ sprite_name = "images/objects/trampoline/trampoline_fix.sprite";
+ sprite = SpriteManager::current()->create(sprite_name);
+ sprite->set_action("normal");
+ }
+}
+
void
Trampoline::update(float elapsed_time)
{
float vy = player->get_physic().get_velocity_y();
//player is falling down on trampoline
if(hit.top && vy >= 0) {
- if(player->get_controller()->hold(Controller::JUMP)) {
- vy = VY_MIN;
- } else {
- vy = VY_INITIAL;
- }
+ if (!(player->get_status()->bonus == AIR_BONUS))
+ vy = player->get_controller()->hold(Controller::JUMP) ? VY_MIN : VY_INITIAL;
+ else
+ vy = player->get_controller()->hold(Controller::JUMP) ? VY_MIN - 300 : VY_INITIAL - 40;
player->get_physic().set_velocity_y(vy);
- sound_manager->play(TRAMPOLINE_SOUND);
+ SoundManager::current()->play(TRAMPOLINE_SOUND);
sprite->set_action("swinging", 1);
return FORCE_MOVE;
}
if(hit.top && vy >= 0) {
vy = VY_INITIAL;
walking_badguy->set_velocity_y(vy);
- sound_manager->play(TRAMPOLINE_SOUND);
+ SoundManager::current()->play(TRAMPOLINE_SOUND);
sprite->set_action("swinging", 1);
return FORCE_MOVE;
}
return Rock::is_portable() && portable;
}
-IMPLEMENT_FACTORY(Trampoline, "trampoline");
-
/* EOF */