Allow choosing IPV6 connection in server selection screen

This commit is contained in:
Benau 2019-08-21 12:00:50 +08:00
parent 7becfb311d
commit 850d270260
3 changed files with 18 additions and 8 deletions

View File

@ -19,10 +19,10 @@
<spacer width="10"/>
<label proportion="1" height="100%" text_align="left"
I18N="In the server selection screen" text="Show private server(s)"/>
<checkbox width="fit" id="game_started" text_align="left"/>
<checkbox width="fit" id="ipv6" text_align="left"/>
<spacer width="10"/>
<label proportion="1" height="100%" text_align="left"
I18N="In the server selection screen" text="Hide servers with an ongoing game"/>
I18N="In the server selection screen" text="Use IPV6 connection if server supports"/>
</div>
</div>
</div>

View File

@ -98,11 +98,11 @@ void ServerSelection::loadedFromFile()
m_private_server = getWidget<GUIEngine::CheckBoxWidget>("private_server");
assert(m_private_server != NULL);
m_private_server->setState(false);
m_game_started = getWidget<GUIEngine::CheckBoxWidget>("game_started");
assert(m_game_started != NULL);
m_ipv6 = getWidget<GUIEngine::CheckBoxWidget>("ipv6");
assert(m_ipv6 != NULL);
m_searcher = getWidget<GUIEngine::TextBoxWidget>("searcher");
assert(m_searcher != NULL);
m_game_started->setState(false);
m_ipv6->setState(false);
m_icon_bank = new irr::gui::STKModifiedSpriteBank(GUIEngine::getGUIEnv());
} // loadedFromFile
@ -133,6 +133,12 @@ void ServerSelection::beforeAddingWidget()
void ServerSelection::init()
{
Screen::init();
#ifndef ENABLE_IPV6
m_ipv6->setState(false);
m_ipv6->setActive(false);
#endif
m_current_column = 5/*distance*/;
m_searcher->clearListeners();
m_searcher->addListener(this);
@ -296,7 +302,7 @@ void ServerSelection::eventCallback(GUIEngine::Widget* widget,
{
refresh(true);
}
else if (name == "private_server" || name == "game_started")
else if (name == "private_server" || name == "ipv6")
{
copyFromServersManager();
}
@ -310,6 +316,10 @@ void ServerSelection::eventCallback(GUIEngine::Widget* widget,
{
return;
}
#ifdef ENABLE_IPV6
if (!m_servers[selected_index]->getIPV6Address().empty())
m_servers[selected_index]->setIPV6Connection(m_ipv6->getState());
#endif
new ServerInfoDialog(m_servers[selected_index]);
} // click on server
@ -388,7 +398,7 @@ void ServerSelection::copyFromServersManager()
m_servers.erase(std::remove_if(m_servers.begin(), m_servers.end(),
[this](const std::shared_ptr<Server>& a)->bool
{
if (m_game_started->getState() && a->isGameStarted())
if (m_ipv6->getState() && a->getIPV6Address().empty())
return true;
return false;
}), m_servers.end());

View File

@ -61,7 +61,7 @@ private:
std::vector<std::shared_ptr<Server> > m_servers;
GUIEngine::CheckBoxWidget* m_private_server;
GUIEngine::CheckBoxWidget* m_game_started;
GUIEngine::CheckBoxWidget* m_ipv6;
GUIEngine::IconButtonWidget* m_reload_widget;
GUIEngine::LabelWidget* m_update_status;
GUIEngine::ListWidget* m_server_list_widget;