citra_qt: Save ban list for room hosting
This commit is contained in:
parent
15540df140
commit
deb398d190
@ -330,6 +330,21 @@ void Config::ReadValues() {
|
||||
UISettings::values.max_player = ReadSetting("max_player", 8).toUInt();
|
||||
UISettings::values.game_id = ReadSetting("game_id", 0).toULongLong();
|
||||
UISettings::values.room_description = ReadSetting("room_description", "").toString();
|
||||
// Read ban list back
|
||||
size = qt_config->beginReadArray("username_ban_list");
|
||||
UISettings::values.ban_list.first.resize(size);
|
||||
for (int i = 0; i < size; ++i) {
|
||||
qt_config->setArrayIndex(i);
|
||||
UISettings::values.ban_list.first[i] = ReadSetting("username").toString().toStdString();
|
||||
}
|
||||
qt_config->endArray();
|
||||
size = qt_config->beginReadArray("ip_ban_list");
|
||||
UISettings::values.ban_list.second.resize(size);
|
||||
for (int i = 0; i < size; ++i) {
|
||||
qt_config->setArrayIndex(i);
|
||||
UISettings::values.ban_list.second[i] = ReadSetting("ip").toString().toStdString();
|
||||
}
|
||||
qt_config->endArray();
|
||||
qt_config->endGroup();
|
||||
|
||||
qt_config->endGroup();
|
||||
@ -535,6 +550,19 @@ void Config::SaveValues() {
|
||||
WriteSetting("max_player", UISettings::values.max_player, 8);
|
||||
WriteSetting("game_id", UISettings::values.game_id, 0);
|
||||
WriteSetting("room_description", UISettings::values.room_description, "");
|
||||
// Write ban list
|
||||
qt_config->beginWriteArray("username_ban_list");
|
||||
for (std::size_t i = 0; i < UISettings::values.ban_list.first.size(); ++i) {
|
||||
qt_config->setArrayIndex(i);
|
||||
WriteSetting("username", QString::fromStdString(UISettings::values.ban_list.first[i]));
|
||||
}
|
||||
qt_config->endArray();
|
||||
qt_config->beginWriteArray("ip_ban_list");
|
||||
for (std::size_t i = 0; i < UISettings::values.ban_list.second.size(); ++i) {
|
||||
qt_config->setArrayIndex(i);
|
||||
WriteSetting("ip", QString::fromStdString(UISettings::values.ban_list.second[i]));
|
||||
}
|
||||
qt_config->endArray();
|
||||
qt_config->endGroup();
|
||||
|
||||
qt_config->endGroup();
|
||||
|
@ -127,11 +127,16 @@ void HostRoomWindow::Host() {
|
||||
auto port = ui->port->isModified() ? ui->port->text().toInt() : Network::DefaultRoomPort;
|
||||
auto password = ui->password->text().toStdString();
|
||||
const bool is_public = ui->host_type->currentIndex() == 0;
|
||||
Network::Room::BanList ban_list{};
|
||||
if (ui->load_ban_list->isChecked()) {
|
||||
ban_list = UISettings::values.ban_list;
|
||||
}
|
||||
if (auto room = Network::GetRoom().lock()) {
|
||||
bool created = room->Create(ui->room_name->text().toStdString(),
|
||||
ui->room_description->toPlainText().toStdString(), "", port,
|
||||
password, ui->max_player->value(), game_name.toStdString(),
|
||||
game_id, CreateVerifyBackend(is_public));
|
||||
password, ui->max_player->value(),
|
||||
Settings::values.citra_username, game_name.toStdString(),
|
||||
game_id, CreateVerifyBackend(is_public), ban_list);
|
||||
if (!created) {
|
||||
NetworkMessage::ShowError(NetworkMessage::COULD_NOT_CREATE_ROOM);
|
||||
LOG_ERROR(Network, "Could not create room!");
|
||||
|
@ -145,6 +145,20 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="load_ban_list">
|
||||
<property name="text">
|
||||
<string>Load Previous Ban List</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="rightMargin">
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "citra_qt/multiplayer/lobby.h"
|
||||
#include "citra_qt/multiplayer/message.h"
|
||||
#include "citra_qt/multiplayer/state.h"
|
||||
#include "citra_qt/ui_settings.h"
|
||||
#include "citra_qt/util/clickable_label.h"
|
||||
#include "common/announce_multiplayer_room.h"
|
||||
#include "common/logging/log.h"
|
||||
@ -213,6 +214,10 @@ bool MultiplayerState::OnCloseRoom() {
|
||||
if (room->GetState() != Network::Room::State::Open) {
|
||||
return true;
|
||||
}
|
||||
// Save ban list
|
||||
if (auto room = Network::GetRoom().lock()) {
|
||||
UISettings::values.ban_list = std::move(room->GetBanList());
|
||||
}
|
||||
room->Destroy();
|
||||
announce_multiplayer_session->Stop();
|
||||
LOG_DEBUG(Frontend, "Closed the room (as a server)");
|
||||
|
@ -5,6 +5,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <array>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <QByteArray>
|
||||
#include <QMetaType>
|
||||
@ -110,6 +112,7 @@ struct Values {
|
||||
uint host_type;
|
||||
qulonglong game_id;
|
||||
QString room_description;
|
||||
std::pair<std::vector<std::string>, std::vector<std::string>> ban_list;
|
||||
|
||||
// logging
|
||||
bool show_console;
|
||||
|
Loading…
Reference in New Issue
Block a user