MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / initMultiPlayerMenu

Method initMultiPlayerMenu

source/frontend/StarTitleScreen.cpp:358–455  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

356};
357
358void TitleScreen::initMultiPlayerMenu() {
359 m_multiPlayerMenu = make_shared<Pane>();
360 m_serverSelectPane = make_shared<Pane>();
361
362 GuiReader readerConnect;
363 GuiReader readerServer;
364
365 m_serverList = Root::singleton().configuration()->get("serverList");
366 if (!m_serverList.isType(Json::Type::Array))
367 m_serverList = JsonArray();
368
369 auto assets = Root::singleton().assets();
370
371 readerServer.registerCallback("saveServer", [=](Widget*) {
372 Json serverData = JsonObject{
373 {"address", multiPlayerAddress()},
374 {"account", multiPlayerAccount()},
375 {"port", multiPlayerPort()},
376 //{"password", multiPlayerPassword()},
377 {"forceLegacy", multiPlayerForceLegacy()}
378 };
379
380 auto serverList = m_serverSelectPane->fetchChild<ListWidget>("serverSelectArea.serverList");
381 if (auto const pos = serverList->selectedItem(); pos != NPos) { // Edit existing
382 m_serverList = m_serverList.set(pos, serverData);
383 } else { // Save new
384 m_serverList = m_serverList.insert(0, serverData);
385 }
386
387 populateServerList(serverList);
388 Root::singleton().configuration()->set("serverList", m_serverList);
389 });
390
391 readerServer.construct(assets->json("/interface/windowconfig/serverselect.config"), m_serverSelectPane.get());
392
393
394
395 auto serverList = m_serverSelectPane->fetchChild<ListWidget>("serverSelectArea.serverList");
396
397 serverList->registerMemberCallback("delete", [=](Widget*) {
398 if (auto const pos = serverList->selectedItem(); pos != NPos) {
399 m_serverList = m_serverList.eraseIndex(pos);
400 }
401 populateServerList(serverList);
402 Root::singleton().configuration()->set("serverList", m_serverList);
403 });
404
405 serverList->setCallback([=](Widget*) {
406 if (auto selectedItem = serverList->selectedWidget()) {
407 if (selectedItem->findChild<ButtonWidget>("delete")->isHovered())
408 return;
409 auto& data = selectedItem->data();
410 setMultiPlayerAddress(data.getString("address", ""));
411 setMultiPlayerPort(data.getString("port", ""));
412 setMultiPlayerAccount(data.getString("account", ""));
413 setMultiPlayerPassword(data.getString("password", ""));
414 setMultiPlayerForceLegacy(data.getBool("forceLegacy", false));
415

Callers

nothing calls this directly

Calls 15

singletonClass · 0.85
configurationMethod · 0.80
assetsMethod · 0.80
jsonMethod · 0.80
selectedWidgetMethod · 0.80
getStringMethod · 0.80
getBoolMethod · 0.80
focusMethod · 0.80
getTextMethod · 0.80
setVisibilityMethod · 0.80
isCheckedMethod · 0.80

Tested by

no test coverage detected