X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Ffirefly.cpp;h=dc537cc2c060bedca76870f012c468336208057b;hb=6f03ad6816c77e5ae167427be4217cc8dd1df78d;hp=ae98d7574c9da2eedf1a589524ddc69670966d59;hpb=58bd201b3362540896c91cb06cfd815b9b9062f7;p=supertux.git diff --git a/src/object/firefly.cpp b/src/object/firefly.cpp index ae98d7574..dc537cc2c 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 + //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 @@ -60,7 +76,7 @@ Firefly::collision(GameObject& other, const CollisionHit& ) { if(activated) return ABORT_MOVE; - + Player* player = dynamic_cast (&other); if(player) { activated = true; @@ -79,9 +95,9 @@ 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; }