Allow shutdown STKHost from dialog

This commit is contained in:
Benau 2018-02-17 16:25:53 +08:00
parent 4c1cc50955
commit bcf8e4e5fe
3 changed files with 37 additions and 18 deletions

View File

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

View File

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

View File

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