X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fworld.cpp;h=0c28cb0011097e6180969176b7cf025c6dfd8467;hb=157cef71aeb9ae25b7bb90f37dda11bc09329d11;hp=d8a4f7c26a9ab59ab72ffef5c7172c0a5021e6cc;hpb=91705941a6a8a251b7c5f670c6d100e512b2dd7f;p=supertux.git diff --git a/src/world.cpp b/src/world.cpp index d8a4f7c26..0c28cb001 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -48,16 +48,20 @@ World::World(const std::string& filename, int level_nr) // world calls child functions current_ = this; + tux = new Player(displaymanager); + add_object(tux); + level = new Level(); + camera = new Camera(tux, level); + add_object(camera); + if(level_nr >= 0) { level->load(filename, level_nr, this); } else { level->load(filename, this); } - - tux = new Player(displaymanager); - add_object(tux); - + tux->move(level->start_pos); + set_defaults(); level->load_gfx(); @@ -75,9 +79,6 @@ World::World(const std::string& filename, int level_nr) add_object(new TileMap(displaymanager, level)); level->load_song(); - camera = new Camera(tux, level); - add_object(camera); - apply_bonuses(); } @@ -203,7 +204,8 @@ World::action(float elapsed_time) * during the iteration) */ for(size_t i = 0; i < gameobjects.size(); ++i) - gameobjects[i]->action(elapsed_time); + if(gameobjects[i]->is_valid()) + gameobjects[i]->action(elapsed_time); /* Handle all possible collisions. */ collision_handler();