X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsupertux%2Ftitle_screen.cpp;h=27db44b1ed50cda5bd5606fb28b2eeb6fd2aab7d;hb=90082628e6b06917c7e462979c0c953ae063b843;hp=fcd342490c6dfd68332e694d985626ed09e5f022;hpb=955f4af66a1e3a9c7c839417dd19ca2af41b3793;p=supertux.git diff --git a/src/supertux/title_screen.cpp b/src/supertux/title_screen.cpp index fcd342490..27db44b1e 100644 --- a/src/supertux/title_screen.cpp +++ b/src/supertux/title_screen.cpp @@ -40,13 +40,14 @@ #include #include -TitleScreen::TitleScreen(PlayerStatus* player_status) : +TitleScreen::TitleScreen(Savegame& savegame) : frame(), controller(), - titlesession() + titlesession(), + copyright_text() { controller.reset(new CodeController()); - titlesession.reset(new GameSession("levels/misc/menu.stl", player_status)); + titlesession.reset(new GameSession("levels/misc/menu.stl", savegame)); Player* player = titlesession->get_current_sector()->player; player->set_controller(controller.get()); @@ -60,27 +61,6 @@ TitleScreen::TitleScreen(PlayerStatus* player_status) : ); } -std::string -TitleScreen::get_level_name(const std::string& filename) -{ - try { - lisp::Parser parser; - const lisp::Lisp* root = parser.parse(filename); - - const lisp::Lisp* level = root->get_lisp("supertux-level"); - if(!level) - return ""; - - std::string name; - level->get("name", name); - return name; - } catch(std::exception& e) { - log_warning << "Problem getting name of '" << filename << "': " - << e.what() << std::endl; - return ""; - } -} - void TitleScreen::make_tux_jump() { @@ -139,8 +119,10 @@ TitleScreen::draw(DrawingContext& context) Sector* sector = titlesession->get_current_sector(); sector->draw(context); - // FIXME: Add something to scale the frame to the resolution of the screen - //context.draw_surface(frame, Vector(0,0),LAYER_FOREGROUND1); + context.draw_surface_part(frame, + Rectf(0, 0, frame->get_width(), frame->get_height()), + Rectf(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), + LAYER_FOREGROUND1); context.draw_text(Resources::small_font, copyright_text, @@ -151,46 +133,18 @@ TitleScreen::draw(DrawingContext& context) void TitleScreen::update(float elapsed_time) { - g_screen_manager->set_speed(0.6f); + ScreenManager::current()->set_speed(0.6f); Sector* sector = titlesession->get_current_sector(); sector->update(elapsed_time); make_tux_jump(); - if (Menu* menu = MenuManager::instance().current()) - { - menu->check_menu(); - } - // reopen menu if user closed it (so that the app doesn't close when user // accidently hit ESC) - if(!MenuManager::instance().is_active() && g_screen_manager->has_no_pending_fadeout()) + if(!MenuManager::instance().is_active() && !ScreenManager::current()->has_pending_fadeout()) { MenuManager::instance().set_menu(MenuStorage::MAIN_MENU); } } -void -TitleScreen::start_game(std::unique_ptr world) -{ - MenuManager::instance().clear_menu_stack(); - - std::string basename = world->get_basedir(); - basename = basename.substr(0, basename.length()-1); - std::string worlddirname = FileSystem::basename(basename); - std::ostringstream stream; - stream << "profile" << g_config->profile << "/" << worlddirname << ".stsg"; - std::string slotfile = stream.str(); - - try - { - world->set_savegame_filename(slotfile); - world->run(); - } - catch(std::exception& e) - { - log_fatal << "Couldn't start world: " << e.what() << std::endl; - } -} - /* EOF */