Bring back the quit button for continuing grand prix

This commit is contained in:
Benau 2018-10-26 15:22:14 +08:00
parent be137155af
commit 89aea95b00
3 changed files with 33 additions and 6 deletions

View File

@ -875,6 +875,7 @@ void ClientLobby::startSelection(Event* event)
->createActivePlayer(std::get<1>(p), std::get<0>(p)); ->createActivePlayer(std::get<1>(p), std::get<0>(p));
} }
input_manager->getDeviceManager()->setAssignMode(ASSIGN); input_manager->getDeviceManager()->setAssignMode(ASSIGN);
TracksScreen::getInstance()->setQuitServer();
TracksScreen::getInstance()->setNetworkTracks(); TracksScreen::getInstance()->setNetworkTracks();
TracksScreen::getInstance()->push(); TracksScreen::getInstance()->push();
} }

View File

@ -121,10 +121,19 @@ void TracksScreen::eventCallback(Widget* widget, const std::string& name,
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bool TracksScreen::onEscapePressed() bool TracksScreen::onEscapePressed()
{
if (m_quit_server)
{
// Remove this screen
StateManager::get()->popMenu();
STKHost::get()->shutdown();
}
else
{ {
auto cl = LobbyProtocol::get<ClientLobby>(); auto cl = LobbyProtocol::get<ClientLobby>();
if (cl) if (cl)
cl->clearPlayers(); cl->clearPlayers();
}
// remove the screen // remove the screen
return true; return true;
} // onEscapePressed } // onEscapePressed
@ -134,6 +143,7 @@ void TracksScreen::tearDown()
{ {
m_network_tracks = false; m_network_tracks = false;
m_selected_track = NULL; m_selected_track = NULL;
m_quit_server = false;
} // tearDown } // tearDown
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
@ -227,6 +237,17 @@ void TracksScreen::beforeAddingWidget()
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void TracksScreen::init() void TracksScreen::init()
{ {
// change the back button image (because it makes the game quit)
if (m_quit_server)
{
IconButtonWidget* back_button = getWidget<IconButtonWidget>("back");
back_button->setImage("gui/icons/main_quit.png");
}
else
{
IconButtonWidget* back_button = getWidget<IconButtonWidget>("back");
back_button->setImage("gui/icons/back.png");
}
if (!m_network_tracks) if (!m_network_tracks)
m_vote_timeout = std::numeric_limits<uint64_t>::max(); m_vote_timeout = std::numeric_limits<uint64_t>::max();

View File

@ -48,6 +48,9 @@ private:
{ {
m_network_tracks = false; m_network_tracks = false;
m_reverse_checked = false; m_reverse_checked = false;
m_quit_server = false;
m_bottom_box_height = -1;
m_vote_timeout = std::numeric_limits<uint64_t>::max();
} }
Track* m_selected_track = NULL; Track* m_selected_track = NULL;
@ -55,11 +58,11 @@ private:
GUIEngine::SpinnerWidget* m_laps; GUIEngine::SpinnerWidget* m_laps;
GUIEngine::LabelWidget* m_votes; GUIEngine::LabelWidget* m_votes;
bool m_network_tracks, m_reverse_checked; bool m_network_tracks, m_reverse_checked, m_quit_server;
int m_bottom_box_height = -1; int m_bottom_box_height;
uint64_t m_vote_timeout = std::numeric_limits<uint64_t>::max(); uint64_t m_vote_timeout;
std::map<std::string, core::stringw> m_vote_messages; std::map<std::string, core::stringw> m_vote_messages;
@ -99,6 +102,8 @@ public:
void setNetworkTracks() { m_network_tracks = true; } void setNetworkTracks() { m_network_tracks = true; }
void setQuitServer() { m_quit_server = true; }
void resetVote() void resetVote()
{ {
m_vote_messages.clear(); m_vote_messages.clear();