Allow shutdown STKHost from dialog
This commit is contained in:
parent
4c1cc50955
commit
bcf8e4e5fe
@ -708,7 +708,7 @@ int handleCmdLinePreliminary()
|
||||
UserConfigParams::m_verbosity |= UserConfigParams::LOG_MISC;
|
||||
if(CommandLine::has("--debug=all") )
|
||||
UserConfigParams::m_verbosity |= UserConfigParams::LOG_ALL;
|
||||
if(CommandLine::has("--online"))
|
||||
//if(CommandLine::has("--online"))
|
||||
MainMenuScreen::m_enable_online=true;
|
||||
|
||||
std::string s;
|
||||
|
@ -274,6 +274,12 @@ void MainLoop::run()
|
||||
float dt = 1.0f / stk_config->m_physics_fps;
|
||||
left_over_time -= num_steps * dt ;
|
||||
|
||||
if (!ProfileWorld::isNoGraphics() && STKHost::existHost() &&
|
||||
STKHost::get()->requestedShutdown())
|
||||
{
|
||||
STKHost::get()->shutdown();
|
||||
}
|
||||
|
||||
// Add a Time step entry to the rewind list, which can store all
|
||||
// all input ecents being issued during the driver update.
|
||||
if (World::getWorld() && RewindManager::get()->isEnabled())
|
||||
@ -333,22 +339,14 @@ void MainLoop::run()
|
||||
// since the GUI engine is no more to be called then.
|
||||
if (m_abort) break;
|
||||
|
||||
if (STKHost::existHost())
|
||||
PROFILER_PUSH_CPU_MARKER("Protocol manager update",
|
||||
0x7F, 0x00, 0x7F);
|
||||
if (auto pm = ProtocolManager::lock())
|
||||
{
|
||||
if (!ProfileWorld::isNoGraphics() &&
|
||||
STKHost::get()->requestedShutdown() )
|
||||
{
|
||||
STKHost::get()->shutdown();
|
||||
}
|
||||
|
||||
PROFILER_PUSH_CPU_MARKER("Protocol manager update",
|
||||
0x7F, 0x00, 0x7F);
|
||||
if (auto pm = ProtocolManager::lock())
|
||||
{
|
||||
pm->update(dt);
|
||||
}
|
||||
PROFILER_POP_CPU_MARKER();
|
||||
pm->update(dt);
|
||||
}
|
||||
PROFILER_POP_CPU_MARKER();
|
||||
|
||||
if (World::getWorld()) World::getWorld()->updateTime(dt);
|
||||
} // for i < num_steps
|
||||
|
||||
|
@ -27,11 +27,14 @@
|
||||
#include "io/file_manager.hpp"
|
||||
#include "modes/overworld.hpp"
|
||||
#include "modes/world.hpp"
|
||||
#include "network/network_config.hpp"
|
||||
#include "network/stk_host.hpp"
|
||||
#include "race/race_manager.hpp"
|
||||
#include "states_screens/help_screen_1.hpp"
|
||||
#include "states_screens/main_menu_screen.hpp"
|
||||
#include "states_screens/race_setup_screen.hpp"
|
||||
#include "states_screens/options_screen_video.hpp"
|
||||
#include "states_screens/online_screen.hpp"
|
||||
#include "states_screens/state_manager.hpp"
|
||||
#include "utils/translation.hpp"
|
||||
|
||||
@ -83,11 +86,17 @@ void RacePausedDialog::loadedFromFile()
|
||||
// a time of 0:00:00.
|
||||
if ((race_manager->getMinorMode() != RaceManager::MINOR_MODE_NORMAL_RACE &&
|
||||
race_manager->getMinorMode() != RaceManager::MINOR_MODE_TIME_TRIAL ) ||
|
||||
World::getWorld()->isStartPhase())
|
||||
World::getWorld()->isStartPhase() ||
|
||||
NetworkConfig::get()->isNetworking())
|
||||
{
|
||||
GUIEngine::RibbonWidget* choice_ribbon =
|
||||
getWidget<GUIEngine::RibbonWidget>("choiceribbon");
|
||||
choice_ribbon->deleteChild("endrace");
|
||||
// No restart in network game
|
||||
if (NetworkConfig::get()->isNetworking())
|
||||
{
|
||||
choice_ribbon->deleteChild("restart");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,6 +128,10 @@ GUIEngine::EventPropagation
|
||||
if (selection == "exit")
|
||||
{
|
||||
ModalDialog::dismiss();
|
||||
if (STKHost::existHost())
|
||||
{
|
||||
STKHost::get()->shutdown();
|
||||
}
|
||||
race_manager->exitRace();
|
||||
race_manager->setAIKartOverride("");
|
||||
StateManager::get()->resetAndGoToScreen(MainMenuScreen::getInstance());
|
||||
@ -128,6 +141,7 @@ GUIEngine::EventPropagation
|
||||
OverWorld::enterOverWorld();
|
||||
}
|
||||
|
||||
NetworkConfig::get()->unsetNetworking();
|
||||
return GUIEngine::EVENT_BLOCK;
|
||||
}
|
||||
else if (selection == "help")
|
||||
@ -145,7 +159,6 @@ GUIEngine::EventPropagation
|
||||
else if (selection == "restart")
|
||||
{
|
||||
ModalDialog::dismiss();
|
||||
// network_manager->setState(NetworkManager::NS_MAIN_MENU);
|
||||
World::getWorld()->scheduleUnpause();
|
||||
race_manager->rerunRace();
|
||||
return GUIEngine::EVENT_BLOCK;
|
||||
@ -153,11 +166,19 @@ GUIEngine::EventPropagation
|
||||
else if (selection == "newrace")
|
||||
{
|
||||
ModalDialog::dismiss();
|
||||
if (STKHost::existHost())
|
||||
{
|
||||
STKHost::get()->shutdown();
|
||||
}
|
||||
World::getWorld()->scheduleUnpause();
|
||||
race_manager->exitRace();
|
||||
Screen* newStack[] = {MainMenuScreen::getInstance(),
|
||||
RaceSetupScreen::getInstance(), NULL};
|
||||
NetworkConfig::get()->isNetworking() ?
|
||||
static_cast<Screen*>(OnlineScreen::getInstance()) :
|
||||
static_cast<Screen*>(RaceSetupScreen::getInstance()),
|
||||
NULL};
|
||||
StateManager::get()->resetAndSetStack( newStack );
|
||||
NetworkConfig::get()->unsetNetworking();
|
||||
return GUIEngine::EVENT_BLOCK;
|
||||
}
|
||||
else if (selection == "endrace")
|
||||
|
Loading…
x
Reference in New Issue
Block a user