X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbadguy%2Fmrtree.cpp;h=500bd30ecf84ac3ba87af862440a9f6d7d22104d;hb=1af645a4cafe78ed2fe16294cf0b19aca43fcf6e;hp=8c688d4bb4f07ac95cc873a101d0ad178bd03cf2;hpb=09c91c0f9f096f2b045912b2bfbbd27ea25d00fa;p=supertux.git diff --git a/src/badguy/mrtree.cpp b/src/badguy/mrtree.cpp index 8c688d4bb..500bd30ec 100644 --- a/src/badguy/mrtree.cpp +++ b/src/badguy/mrtree.cpp @@ -38,7 +38,13 @@ MrTree::MrTree(const Reader& reader) { walk_speed = TREE_SPEED; max_drop_height = 16; - sound_manager->preload("sounds/mr_tree.ogg"); + SoundManager::current()->preload("sounds/mr_tree.ogg"); +} + +bool +MrTree::is_freezable() const +{ + return true; } bool @@ -48,12 +54,12 @@ MrTree::collision_squished(GameObject& object) Vector stumpy_pos = get_pos(); stumpy_pos.x += 20; stumpy_pos.y += 25; - Stumpy* stumpy = new Stumpy(stumpy_pos, dir); + auto stumpy = std::make_shared(stumpy_pos, dir); remove_me(); Sector::current()->add_object(stumpy); // give Feedback - sound_manager->play("sounds/mr_tree.ogg", get_pos()); + SoundManager::current()->play("sounds/mr_tree.ogg", get_pos()); Player* player = dynamic_cast(&object); if (player) player->bounce(*this); @@ -67,15 +73,18 @@ MrTree::collision_squished(GameObject& object) float vy = -cos(angle)*velocity; Vector pspeed = Vector(vx, vy); Vector paccel = Vector(0, 100); - Sector::current()->add_object(new SpriteParticle("images/objects/particles/leaf.sprite", "default", ppos, ANCHOR_MIDDLE, pspeed, paccel, LAYER_OBJECTS-1)); + Sector::current()->add_object(std::make_shared("images/objects/particles/leaf.sprite", + "default", + ppos, ANCHOR_MIDDLE, + pspeed, paccel, + LAYER_OBJECTS-1)); } // spawn PoisonIvy Vector leaf1_pos(stumpy_pos.x - POISONIVY_WIDTH - 1, stumpy_pos.y - POISONIVY_Y_OFFSET); Rectf leaf1_bbox(leaf1_pos.x, leaf1_pos.y, leaf1_pos.x + POISONIVY_WIDTH, leaf1_pos.y + POISONIVY_HEIGHT); if (Sector::current()->is_free_of_movingstatics(leaf1_bbox, this)) { - PoisonIvy* leaf1 = new PoisonIvy(leaf1_bbox.p1, LEFT); - leaf1 = leaf1; + auto leaf1 = std::make_shared(leaf1_bbox.p1, LEFT); leaf1->countMe = false; Sector::current()->add_object(leaf1); } @@ -84,8 +93,7 @@ MrTree::collision_squished(GameObject& object) Vector leaf2_pos(stumpy_pos.x + sprite->get_current_hitbox_width() + 1, stumpy_pos.y - POISONIVY_Y_OFFSET); Rectf leaf2_bbox(leaf2_pos.x, leaf2_pos.y, leaf2_pos.x + POISONIVY_WIDTH, leaf2_pos.y + POISONIVY_HEIGHT); if (Sector::current()->is_free_of_movingstatics(leaf2_bbox, this)) { - PoisonIvy* leaf2 = new PoisonIvy(leaf2_bbox.p1, RIGHT); - leaf2 = leaf2; + auto leaf2 = std::make_shared(leaf2_bbox.p1, RIGHT); leaf2->countMe = false; Sector::current()->add_object(leaf2); }