X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Ffirefly.cpp;h=bd4f70a15549643eddab6be08426161a28a07a0a;hb=a98f7cee9f6a2593c0e1f3442800f159bad410df;hp=49299fb94b46989cb50484a6ebef31ce9d8c108d;hpb=a113d3bd1feddd510e3b2852b0d42522735eee40;p=supertux.git diff --git a/src/object/firefly.cpp b/src/object/firefly.cpp index 49299fb94..bd4f70a15 100644 --- a/src/object/firefly.cpp +++ b/src/object/firefly.cpp @@ -33,17 +33,33 @@ Firefly::Firefly(const lisp::Lisp& lisp) : MovingSprite(lisp, "images/objects/resetpoints/default-resetpoint.sprite", LAYER_TILES, COLGROUP_TOUCHABLE), activated(false) { - + initial_position = get_pos(); if( !lisp.get( "sprite", sprite_name ) ){ + reactivate(); return; } if( sprite_name == "" ){ sprite_name = "images/objects/resetpoints/default-resetpoint.sprite"; + reactivate(); return; } //Replace sprite sprite = sprite_manager->create( sprite_name ); bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height()); + reactivate(); +} + +void +Firefly::reactivate() +{ + if(GameSession::current()->get_reset_point_pos() == initial_position){ + // TODO: && GameSession::current()->get_reset_point_sectorname() == + // GameSession::current()->get_current_sector()->get_name() is not yet initialized. + // Worst case a resetpoint in a different sector at the same position as the real + // resetpoint the player is spawning is set to ringing, too. Until we can check the sector, too, dont set + // activated = true; here. + sprite->set_action("ringing"); + } } void @@ -79,7 +95,7 @@ Firefly::collision(GameObject& other, const CollisionHit& ) // TODO play sound sprite->set_action("ringing"); GameSession::current()->set_reset_point(Sector::current()->get_name(), - get_pos()); + initial_position); } return ABORT_MOVE;