X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftitle.cpp;h=66ffb3c273b6fd73122e3af0265b0247ebd8f861;hb=d62647592b4ccffa89794af6fa03faaced46999d;hp=5842cd4dc0f6064d268ff78642cb470de9c8f480;hpb=7ae3aef67ad305cb9c6ed584cdac6117da9eba88;p=supertux.git diff --git a/src/title.cpp b/src/title.cpp index 5842cd4dc..66ffb3c27 100644 --- a/src/title.cpp +++ b/src/title.cpp @@ -33,37 +33,33 @@ #include #include -#ifndef WIN32 -#include -#include -#endif - -#include "title.h" -#include "video/screen.h" -#include "video/surface.h" -#include "gui/menu.h" -#include "timer.h" -#include "lisp/lisp.h" -#include "lisp/parser.h" -#include "level.h" -#include "level_subset.h" -#include "game_session.h" -#include "worldmap.h" -#include "leveleditor.h" -#include "player_status.h" -#include "tile.h" -#include "sector.h" -#include "object/tilemap.h" -#include "object/camera.h" -#include "object/player.h" -#include "resources.h" -#include "gettext.h" -#include "misc.h" -#include "textscroller.h" -#include "file_system.h" -#include "control/joystickkeyboardcontroller.h" -#include "control/codecontroller.h" -#include "main.h" +#include "title.hpp" +#include "video/screen.hpp" +#include "video/surface.hpp" +#include "audio/sound_manager.hpp" +#include "gui/menu.hpp" +#include "timer.hpp" +#include "lisp/lisp.hpp" +#include "lisp/parser.hpp" +#include "level.hpp" +#include "level_subset.hpp" +#include "game_session.hpp" +#include "worldmap.hpp" +#include "player_status.hpp" +#include "tile.hpp" +#include "sector.hpp" +#include "object/tilemap.hpp" +#include "object/camera.hpp" +#include "object/player.hpp" +#include "resources.hpp" +#include "gettext.hpp" +#include "misc.hpp" +#include "textscroller.hpp" +#include "file_system.hpp" +#include "control/joystickkeyboardcontroller.hpp" +#include "control/codecontroller.hpp" +#include "main.hpp" +#include "exceptions.hpp" static Surface* bkg_title; static Surface* logo; @@ -79,6 +75,7 @@ static CodeController* controller; static std::vector contrib_subsets; static LevelSubset* current_contrib_subset = 0; +static int current_subset = -1; /* If the demo was stopped - because game started, level editor was excuted, etc - call this when you get back @@ -86,7 +83,7 @@ static LevelSubset* current_contrib_subset = 0; */ void resume_demo() { - player_status.reset(); + player_status->reset(); titlesession->get_current_sector()->activate("main"); titlesession->set_current(); @@ -111,6 +108,8 @@ void free_contrib_menu() contrib_subsets.clear(); contrib_menu->clear(); + current_contrib_subset = 0; + current_subset = -1; } void generate_contrib_menu() @@ -174,8 +173,6 @@ std::string get_level_name(const std::string& filename) void check_levels_contrib_menu() { - static int current_subset = -1; - int index = contrib_menu->check(); if (index == -1) return; @@ -185,6 +182,7 @@ void check_levels_contrib_menu() if(subset.has_worldmap) { WorldMapNS::WorldMap worldmap; worldmap.set_map_filename(subset.get_worldmap_filename()); + sound_manager->stop_music(); // some fading fadeout(256); @@ -231,10 +229,11 @@ void check_contrib_subset_menu() int index = contrib_subset_menu->check(); if (index != -1) { if (contrib_subset_menu->get_item_by_id(index).kind == MN_ACTION) { + sound_manager->stop_music(); GameSession session( current_contrib_subset->get_level_filename(index), ST_GL_PLAY); session.run(); - player_status.reset(); + player_status->reset(); Menu::set_current(main_menu); resume_demo(); } @@ -282,15 +281,14 @@ void title() { walking = true; //LevelEditor* leveleditor; - MusicRef credits_music; controller = new CodeController(); titlesession = new GameSession("levels/misc/menu.stl", ST_GL_DEMO_GAME); /* Load images: */ - bkg_title = new Surface("images/background/arctis.jpg", false); - logo = new Surface("images/engine/menu/logo.png", true); - //img_choose_subset = new Surface("images/status/choose-level-subset.png", true); + bkg_title = new Surface("images/background/arctis.jpg"); + logo = new Surface("images/engine/menu/logo.png"); + //img_choose_subset = new Surface("images/status/choose-level-subset.png"); titlesession->get_current_sector()->activate("main"); titlesession->set_current(); @@ -313,7 +311,7 @@ void title() // Calculate the movement-factor Uint32 ticks = SDL_GetTicks(); float elapsed_time = float(ticks - lastticks) / 1000.; - global_time += elapsed_time; + game_time += elapsed_time; lastticks = ticks; // 40fps is minimum if(elapsed_time > .04) @@ -331,14 +329,14 @@ void title() } main_controller->process_event(event); if (event.type == SDL_QUIT) - throw std::runtime_error("Received window close"); + throw graceful_shutdown(); } /* Draw the background: */ draw_demo(elapsed_time); if (Menu::current() == main_menu) - context.draw_surface(logo, Vector(SCREEN_WIDTH/2 - logo->w/2, 30), + context.draw_surface(logo, Vector(SCREEN_WIDTH/2 - logo->get_width()/2, 30), LAYER_FOREGROUND1+1); context.draw_text(white_small_text, " SuperTux " PACKAGE_VERSION "\n", @@ -382,11 +380,11 @@ void title() } #endif case MNID_CREDITS: + sound_manager->stop_music(); fadeout(500); - credits_music = sound_manager->load_music( - "/music/credits.ogg"); - sound_manager->play_music(credits_music); + sound_manager->play_music("music/credits.ogg"); display_text_file("credits.txt"); + sound_manager->stop_music(); fadeout(500); Menu::set_current(main_menu); break; @@ -440,6 +438,7 @@ void title() } context.do_drawing(); + sound_manager->update(); //frame_rate.update();