From 4dc35890864fd3137a3b9dea502ef97b92f4d55d Mon Sep 17 00:00:00 2001 From: auria Date: Sat, 19 Jan 2013 00:46:03 +0000 Subject: [PATCH] More tutorial work git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@12388 178a84e3-b1eb-0310-8ba1-8eac791a3b58 --- src/modes/world.cpp | 19 +++++++++++++++++-- src/modes/world.hpp | 3 +++ src/tracks/track_object.cpp | 14 ++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/modes/world.cpp b/src/modes/world.cpp index 658b3e41b..42010b6e6 100644 --- a/src/modes/world.cpp +++ b/src/modes/world.cpp @@ -38,6 +38,7 @@ #include "karts/controller/skidding_ai.hpp" #include "karts/kart.hpp" #include "karts/kart_properties_manager.hpp" +#include "modes/overworld.hpp" #include "modes/profile_world.hpp" #include "network/network_manager.hpp" #include "network/race_state.hpp" @@ -51,10 +52,11 @@ #include "replay/replay_recorder.hpp" #include "states_screens/dialogs/race_paused_dialog.hpp" #include "states_screens/race_gui_base.hpp" -#include "states_screens/race_gui.hpp" -#include "states_screens/state_manager.hpp" +#include "states_screens/main_menu_screen.hpp" #include "states_screens/minimal_race_gui.hpp" +#include "states_screens/race_gui.hpp" #include "states_screens/race_result_gui.hpp" +#include "states_screens/state_manager.hpp" #include "tracks/track.hpp" #include "tracks/track_manager.hpp" #include "utils/constants.hpp" @@ -93,6 +95,7 @@ World::World() : WorldStatus(), m_clear_color(255,100,101,140) m_clear_back_buffer = false; m_schedule_pause = false; m_schedule_unpause = false; + m_schedule_exit_race = false; m_self_destruct = false; m_stop_music_when_dialog_open = true; @@ -624,6 +627,18 @@ void World::updateWorld(float dt) { enterRaceOverState(); } + + if (m_schedule_exit_race) + { + race_manager->exitRace(); + race_manager->setAIKartOverride(""); + StateManager::get()->resetAndGoToScreen(MainMenuScreen::getInstance()); + + if (race_manager->raceWasStartedFromOverworld()) + { + OverWorld::enterOverWorld(); + } + } } // updateWorld #define MEASURE_FPS 0 diff --git a/src/modes/world.hpp b/src/modes/world.hpp index a69fb2062..6556b2c1b 100644 --- a/src/modes/world.hpp +++ b/src/modes/world.hpp @@ -136,6 +136,8 @@ protected: * switch. */ bool m_schedule_unpause; + bool m_schedule_exit_race; + Phase m_scheduled_pause_phase; /** Set when the world needs to be deleted but you can't do it immediately @@ -247,6 +249,7 @@ public: Highscores *getHighscores() const; void schedulePause(Phase phase); void scheduleUnpause(); + void scheduleExitRace() { m_schedule_exit_race = true; } void updateWorld(float dt); void handleExplosion(const Vec3 &xyz, AbstractKart *kart_hit, PhysicalObject *object); diff --git a/src/tracks/track_object.cpp b/src/tracks/track_object.cpp index aac66944f..898f2b39e 100644 --- a/src/tracks/track_object.cpp +++ b/src/tracks/track_object.cpp @@ -33,6 +33,7 @@ #include "modes/world.hpp" #include "states_screens/dialogs/tutorial_message_dialog.hpp" #include "states_screens/dialogs/race_paused_dialog.hpp" +#include "states_screens/main_menu_screen.hpp" #include "tracks/track.hpp" #include @@ -550,6 +551,19 @@ void TrackObject::onTriggerItemApproached(Item* who) new TutorialMessageDialog(_("Note that if you manage to skid for several seconds, you will receive a bonus speedup as a reward!"), true); } + else if (m_action == "tutorial_endmessage") + { + m_action = "__disabled__"; + World::getWorld()->getRaceGUI()->clearAllMessages(); + + new TutorialMessageDialog(_("You are now ready to race. Good luck!"), + true); + } + else if (m_action == "tutorial_exit") + { + World::getWorld()->scheduleExitRace(); + return; + } else if (m_action == "__disabled__") { }