Try to remember server creation option

This commit is contained in:
Benau
2018-08-12 12:46:45 +08:00
parent 6bdec3d01a
commit c8c0e599db
2 changed files with 17 additions and 5 deletions

View File

@@ -46,6 +46,8 @@ CreateServerScreen::CreateServerScreen() : Screen("online/create_server.stkgui")
void CreateServerScreen::loadedFromFile()
{
m_prev_mode = 0;
m_prev_value = 0;
m_name_widget = getWidget<TextBoxWidget>("name");
assert(m_name_widget != NULL);
@@ -105,8 +107,8 @@ void CreateServerScreen::init()
// -- Game modes
RibbonWidget* gamemode = getWidget<RibbonWidget>("gamemode");
assert(gamemode != NULL);
gamemode->setSelection(0, PLAYER_ID_GAME_MASTER);
updateMoreOption(0);
gamemode->setSelection(m_prev_mode, PLAYER_ID_GAME_MASTER);
updateMoreOption(m_prev_mode);
} // init
// ----------------------------------------------------------------------------
@@ -133,7 +135,9 @@ void CreateServerScreen::eventCallback(Widget* widget, const std::string& name,
{
const int selection =
m_game_mode_widget->getSelection(PLAYER_ID_GAME_MASTER);
m_prev_value = 0;
updateMoreOption(selection);
m_prev_mode = selection;
}
} // eventCallback
@@ -157,7 +161,7 @@ void CreateServerScreen::updateMoreOption(int game_mode)
{
m_more_options_spinner->addLabel(StringUtils::toWString(i));
}
m_more_options_spinner->setValue(0);
m_more_options_spinner->setValue(m_prev_value);
break;
}
case 2:
@@ -173,7 +177,7 @@ void CreateServerScreen::updateMoreOption(int game_mode)
m_more_options_spinner->addLabel(_("Free For All"));
//I18N: In the create server screen for battle server
m_more_options_spinner->addLabel(_("Capture The Flag"));
m_more_options_spinner->setValue(0);
m_more_options_spinner->setValue(m_prev_value);
break;
}
case 3:
@@ -189,7 +193,7 @@ void CreateServerScreen::updateMoreOption(int game_mode)
m_more_options_spinner->addLabel(_("Time limit"));
//I18N: In the create server screen for soccer server
m_more_options_spinner->addLabel(_("Goals limit"));
m_more_options_spinner->setValue(0);
m_more_options_spinner->setValue(m_prev_value);
break;
}
default:
@@ -347,6 +351,12 @@ void CreateServerScreen::createServer()
if (esi > 0)
server_cfg << " --network-gp=" << esi;
}
m_prev_mode = gamemode_widget->getSelection(PLAYER_ID_GAME_MASTER);
m_prev_value = esi;
}
else
{
m_prev_mode = m_prev_value = 0;
}
SeparateProcess* sp =

View File

@@ -33,6 +33,8 @@ class CreateServerScreen : public GUIEngine::Screen,
public GUIEngine::ScreenSingleton<CreateServerScreen>
{
private:
int m_prev_mode, m_prev_value;
friend class GUIEngine::ScreenSingleton<CreateServerScreen>;
CreateServerScreen();