diff --git a/src/guiengine/event_handler.cpp b/src/guiengine/event_handler.cpp index a47886881..8f8e318ed 100644 --- a/src/guiengine/event_handler.cpp +++ b/src/guiengine/event_handler.cpp @@ -605,7 +605,8 @@ void EventHandler::sendEventToUser(GUIEngine::Widget* widget, std::string& name, } } - getCurrentScreen()->eventCallback(widget, name, playerID); + if (getCurrentScreen() != NULL) + getCurrentScreen()->eventCallback(widget, name, playerID); } // ----------------------------------------------------------------------------- diff --git a/src/items/item_manager.cpp b/src/items/item_manager.cpp index 7b719efbd..5f56cf09e 100644 --- a/src/items/item_manager.cpp +++ b/src/items/item_manager.cpp @@ -433,6 +433,15 @@ void ItemManager::switchItems() i!=m_all_items.end(); i++) { if(!*i) continue; + + if ((*i)->getType() == Item::ITEM_BUBBLEGUM || (*i)->getType() == Item::ITEM_BUBBLEGUM_NOLOK) + { + if (race_manager->getAISuperPower() == RaceManager::SUPERPOWER_NOLOK_BOSS) + { + continue; + } + } + Item::ItemType new_type = m_switch_to[(*i)->getType()]; if(m_switch_time<0) diff --git a/src/modes/overworld.hpp b/src/modes/overworld.hpp index 3d64a1184..f83138916 100644 --- a/src/modes/overworld.hpp +++ b/src/modes/overworld.hpp @@ -79,7 +79,7 @@ public: /** Override settings from base class */ virtual bool useChecklineRequirements() const OVERRIDE { return false; } // ------------------------------------------------------------------------ - void scheduleReturnToGarage() { m_return_to_garage = true; } + void scheduleSelectKart() { m_return_to_garage = true; } // ------------------------------------------------------------------------ virtual void moveKartAfterRescue(AbstractKart* kart) OVERRIDE; // ------------------------------------------------------------------------ diff --git a/src/states_screens/dialogs/race_paused_dialog.cpp b/src/states_screens/dialogs/race_paused_dialog.cpp index dbaab1812..35dd621ec 100644 --- a/src/states_screens/dialogs/race_paused_dialog.cpp +++ b/src/states_screens/dialogs/race_paused_dialog.cpp @@ -46,8 +46,15 @@ RacePausedDialog::RacePausedDialog(const float percentWidth, const float percentHeight) : ModalDialog(percentWidth, percentHeight) { - loadFromFile("race_paused_dialog.stkgui"); - + if (dynamic_cast(World::getWorld()) != NULL) + { + loadFromFile("overworld_dialog.stkgui"); + } + else + { + loadFromFile("race_paused_dialog.stkgui"); + } + World::getWorld()->schedulePause(WorldStatus::IN_GAME_MENU_PHASE); IconButtonWidget* back_btn = getWidget("backbtn"); @@ -81,8 +88,7 @@ void RacePausedDialog::loadedFromFile() { GUIEngine::RibbonWidget* choice_ribbon = getWidget("choiceribbon"); - const bool success = choice_ribbon->deleteChild("endrace"); - assert(success); + choice_ribbon->deleteChild("endrace"); } } @@ -160,6 +166,12 @@ GUIEngine::EventPropagation World::getWorld()->endRaceEarly(); return GUIEngine::EVENT_BLOCK; } + else if (selection == "selectkart") + { + dynamic_cast(World::getWorld())->scheduleSelectKart(); + ModalDialog::dismiss(); + return GUIEngine::EVENT_BLOCK; + } } return GUIEngine::EVENT_LET; } // processEvent diff --git a/src/tracks/track_object.cpp b/src/tracks/track_object.cpp index 40f2d3c1d..56e64a6fa 100644 --- a/src/tracks/track_object.cpp +++ b/src/tracks/track_object.cpp @@ -30,6 +30,7 @@ #include "items/item_manager.hpp" #include "modes/overworld.hpp" #include "modes/world.hpp" +#include "states_screens/dialogs/race_paused_dialog.hpp" #include "tracks/track.hpp" #include @@ -463,7 +464,8 @@ void TrackObject::onTriggerItemApproached(Item* who) { if (m_action == "garage") { - dynamic_cast(World::getWorld())->scheduleReturnToGarage(); + new RacePausedDialog(0.8f, 0.6f); + //dynamic_cast(World::getWorld())->scheduleSelectKart(); } else {