Add special escape-menu on overworld, and make Nolok's bubble gum swapper-proof

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11635 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2012-09-29 22:46:29 +00:00
parent 1edbed185d
commit 5a4f767403
5 changed files with 31 additions and 7 deletions

View File

@ -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);
}
// -----------------------------------------------------------------------------

View File

@ -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)

View File

@ -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;
// ------------------------------------------------------------------------

View File

@ -46,8 +46,15 @@ RacePausedDialog::RacePausedDialog(const float percentWidth,
const float percentHeight) :
ModalDialog(percentWidth, percentHeight)
{
loadFromFile("race_paused_dialog.stkgui");
if (dynamic_cast<OverWorld*>(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<IconButtonWidget>("backbtn");
@ -81,8 +88,7 @@ void RacePausedDialog::loadedFromFile()
{
GUIEngine::RibbonWidget* choice_ribbon =
getWidget<GUIEngine::RibbonWidget>("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<OverWorld*>(World::getWorld())->scheduleSelectKart();
ModalDialog::dismiss();
return GUIEngine::EVENT_BLOCK;
}
}
return GUIEngine::EVENT_LET;
} // processEvent

View File

@ -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 <IMeshSceneNode.h>
@ -463,7 +464,8 @@ void TrackObject::onTriggerItemApproached(Item* who)
{
if (m_action == "garage")
{
dynamic_cast<OverWorld*>(World::getWorld())->scheduleReturnToGarage();
new RacePausedDialog(0.8f, 0.6f);
//dynamic_cast<OverWorld*>(World::getWorld())->scheduleSelectKart();
}
else
{