mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-23 03:47:53 -05:00
core, network: Add ability to proxy socket packets
This commit is contained in:
@ -316,21 +316,19 @@ void ChatRoom::OnStatusMessageReceive(const Network::StatusMessageEntry& status_
|
||||
}
|
||||
|
||||
void ChatRoom::OnSendChat() {
|
||||
if (auto room = room_network->GetRoomMember().lock()) {
|
||||
if (room->GetState() != Network::RoomMember::State::Joined &&
|
||||
room->GetState() != Network::RoomMember::State::Moderator) {
|
||||
|
||||
if (auto room_member = room_network->GetRoomMember().lock()) {
|
||||
if (!room_member->IsConnected()) {
|
||||
return;
|
||||
}
|
||||
auto message = ui->chat_message->text().toStdString();
|
||||
if (!ValidateMessage(message)) {
|
||||
return;
|
||||
}
|
||||
auto nick = room->GetNickname();
|
||||
auto username = room->GetUsername();
|
||||
auto nick = room_member->GetNickname();
|
||||
auto username = room_member->GetUsername();
|
||||
Network::ChatEntry chat{nick, username, message};
|
||||
|
||||
auto members = room->GetMemberInformation();
|
||||
auto members = room_member->GetMemberInformation();
|
||||
auto it = std::find_if(members.begin(), members.end(),
|
||||
[&chat](const Network::RoomMember::MemberInformation& member) {
|
||||
return member.nickname == chat.nickname &&
|
||||
@ -341,7 +339,7 @@ void ChatRoom::OnSendChat() {
|
||||
}
|
||||
auto player = std::distance(members.begin(), it);
|
||||
ChatMessage m(chat, *room_network);
|
||||
room->SendChatMessage(message);
|
||||
room_member->SendChatMessage(message);
|
||||
AppendChatMessage(m.GetPlayerChatMessage(player));
|
||||
ui->chat_message->clear();
|
||||
}
|
||||
|
@ -74,7 +74,6 @@ void ClientRoomWindow::OnRoomUpdate(const Network::RoomInformation& info) {
|
||||
void ClientRoomWindow::OnStateChange(const Network::RoomMember::State& state) {
|
||||
if (state == Network::RoomMember::State::Joined ||
|
||||
state == Network::RoomMember::State::Moderator) {
|
||||
|
||||
ui->chat->Clear();
|
||||
ui->chat->AppendStatusMessage(tr("Connected"));
|
||||
SetModPerms(state == Network::RoomMember::State::Moderator);
|
||||
|
@ -97,9 +97,9 @@ void DirectConnectWindow::Connect() {
|
||||
QFuture<void> f = QtConcurrent::run([&] {
|
||||
if (auto room_member = room_network.GetRoomMember().lock()) {
|
||||
auto port = UISettings::values.multiplayer_port.GetValue();
|
||||
room_member->Join(ui->nickname->text().toStdString(), "",
|
||||
ui->ip->text().toStdString().c_str(), port, 0,
|
||||
Network::NoPreferredMac, ui->password->text().toStdString().c_str());
|
||||
room_member->Join(ui->nickname->text().toStdString(),
|
||||
ui->ip->text().toStdString().c_str(), port, 0, Network::NoPreferredIP,
|
||||
ui->password->text().toStdString().c_str());
|
||||
}
|
||||
});
|
||||
watcher->setFuture(f);
|
||||
@ -121,9 +121,7 @@ void DirectConnectWindow::OnConnection() {
|
||||
EndConnecting();
|
||||
|
||||
if (auto room_member = room_network.GetRoomMember().lock()) {
|
||||
if (room_member->GetState() == Network::RoomMember::State::Joined ||
|
||||
room_member->GetState() == Network::RoomMember::State::Moderator) {
|
||||
|
||||
if (room_member->IsConnected()) {
|
||||
close();
|
||||
}
|
||||
}
|
||||
|
@ -201,8 +201,8 @@ void HostRoomWindow::Host() {
|
||||
}
|
||||
#endif
|
||||
// TODO: Check what to do with this
|
||||
member->Join(ui->username->text().toStdString(), "", "127.0.0.1", port, 0,
|
||||
Network::NoPreferredMac, password, token);
|
||||
member->Join(ui->username->text().toStdString(), "127.0.0.1", port, 0,
|
||||
Network::NoPreferredIP, password, token);
|
||||
|
||||
// Store settings
|
||||
UISettings::values.multiplayer_room_nickname = ui->username->text();
|
||||
|
@ -169,7 +169,7 @@ void Lobby::OnJoinRoom(const QModelIndex& source) {
|
||||
}
|
||||
#endif
|
||||
if (auto room_member = room_network.GetRoomMember().lock()) {
|
||||
room_member->Join(nickname, "", ip.c_str(), port, 0, Network::NoPreferredMac, password,
|
||||
room_member->Join(nickname, ip.c_str(), port, 0, Network::NoPreferredIP, password,
|
||||
token);
|
||||
}
|
||||
});
|
||||
|
@ -43,11 +43,8 @@ const ConnectionError ErrorManager::LOST_CONNECTION(
|
||||
QT_TR_NOOP("Connection to room lost. Try to reconnect."));
|
||||
const ConnectionError ErrorManager::HOST_KICKED(
|
||||
QT_TR_NOOP("You have been kicked by the room host."));
|
||||
const ConnectionError ErrorManager::MAC_COLLISION(
|
||||
QT_TR_NOOP("MAC address is already in use. Please choose another."));
|
||||
const ConnectionError ErrorManager::CONSOLE_ID_COLLISION(QT_TR_NOOP(
|
||||
"Your Console ID conflicted with someone else's in the room.\n\nPlease go to Emulation "
|
||||
"> Configure > System to regenerate your Console ID."));
|
||||
const ConnectionError ErrorManager::IP_COLLISION(
|
||||
QT_TR_NOOP("IP address is already in use. Please choose another."));
|
||||
const ConnectionError ErrorManager::PERMISSION_DENIED(
|
||||
QT_TR_NOOP("You do not have enough permission to perform this action."));
|
||||
const ConnectionError ErrorManager::NO_SUCH_USER(QT_TR_NOOP(
|
||||
|
@ -40,8 +40,7 @@ public:
|
||||
static const ConnectionError GENERIC_ERROR;
|
||||
static const ConnectionError LOST_CONNECTION;
|
||||
static const ConnectionError HOST_KICKED;
|
||||
static const ConnectionError MAC_COLLISION;
|
||||
static const ConnectionError CONSOLE_ID_COLLISION;
|
||||
static const ConnectionError IP_COLLISION;
|
||||
static const ConnectionError PERMISSION_DENIED;
|
||||
static const ConnectionError NO_SUCH_USER;
|
||||
/**
|
||||
|
@ -95,7 +95,6 @@ void MultiplayerState::retranslateUi() {
|
||||
status_text->setText(tr("Not Connected. Click here to find a room!"));
|
||||
} else if (current_state == Network::RoomMember::State::Joined ||
|
||||
current_state == Network::RoomMember::State::Moderator) {
|
||||
|
||||
status_text->setText(tr("Connected"));
|
||||
} else {
|
||||
status_text->setText(tr("Not Connected"));
|
||||
@ -151,11 +150,8 @@ void MultiplayerState::OnNetworkError(const Network::RoomMember::Error& error) {
|
||||
NetworkMessage::ErrorManager::ShowError(
|
||||
NetworkMessage::ErrorManager::USERNAME_NOT_VALID_SERVER);
|
||||
break;
|
||||
case Network::RoomMember::Error::MacCollision:
|
||||
NetworkMessage::ErrorManager::ShowError(NetworkMessage::ErrorManager::MAC_COLLISION);
|
||||
break;
|
||||
case Network::RoomMember::Error::ConsoleIdCollision:
|
||||
NetworkMessage::ErrorManager::ShowError(NetworkMessage::ErrorManager::CONSOLE_ID_COLLISION);
|
||||
case Network::RoomMember::Error::IpCollision:
|
||||
NetworkMessage::ErrorManager::ShowError(NetworkMessage::ErrorManager::IP_COLLISION);
|
||||
break;
|
||||
case Network::RoomMember::Error::RoomIsFull:
|
||||
NetworkMessage::ErrorManager::ShowError(NetworkMessage::ErrorManager::ROOM_IS_FULL);
|
||||
|
Reference in New Issue
Block a user