mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	citra_qt: Save ban list for room hosting
This commit is contained in:
		
							parent
							
								
									15540df140
								
							
						
					
					
						commit
						deb398d190
					
				
					 5 changed files with 57 additions and 2 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue