X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Ftrampoline.cpp;h=b8d20ad5ee57bfb0c391a1276da513ecc7261aa1;hb=b699d5a6303e164aab04f1a1d0990b978c15d87d;hp=e097dcd01b367e31f8fa40779179b1b339c2d8e0;hpb=18c69f4aa24d496f84a088d60c18b180c293dace;p=supertux.git diff --git a/src/object/trampoline.cpp b/src/object/trampoline.cpp index e097dcd01..b8d20ad5e 100644 --- a/src/object/trampoline.cpp +++ b/src/object/trampoline.cpp @@ -36,19 +36,31 @@ Trampoline::Trampoline(const Reader& lisp) : 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) { @@ -71,13 +83,12 @@ Trampoline::collision(GameObject& other, const CollisionHit& hit) 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; } @@ -90,7 +101,7 @@ Trampoline::collision(GameObject& other, const CollisionHit& hit) 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; } @@ -122,6 +133,4 @@ Trampoline::is_portable() const return Rock::is_portable() && portable; } -IMPLEMENT_FACTORY(Trampoline, "trampoline"); - /* EOF */