CI: add GitHub Actions CI to build fresh images
This commit is contained in:
parent
ba2e981558
commit
28d9e2974c
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
TOPDIR="$(dirname "$0")"
|
||||||
|
|
||||||
|
for i in "$TOPDIR"/../patches/*.patch; do
|
||||||
|
echo "Applying $i ..."
|
||||||
|
patch -Np1 -i "$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
export CFLAGS="-ftree-vectorize -flto"
|
||||||
|
export CXXFLAGS="$CFLAGS"
|
||||||
|
export LDFLAGS="-flto -fuse-linker-plugin"
|
||||||
|
|
||||||
|
mkdir -p build && cd build
|
||||||
|
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DENABLE_QT=OFF -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF -DUSE_DISCORD_PRESENCE=OFF -DENABLE_FFMPEG_VIDEO_DUMPER=OFF
|
||||||
|
ninja citra-room
|
||||||
|
strip ./bin/Release/citra-room
|
|
@ -0,0 +1,30 @@
|
||||||
|
name: 'Citra Rooms Docker Image CI'
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "*" ]
|
||||||
|
tags: [ "*" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
- name: Set up Docker BuildX
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
if: (github.ref == 'refs/heads/master') && (github.repository == 'citra-emu/citra-multiplayer-dedicated')
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- name: Build Image
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
platforms: 'linux/amd64,linux/arm64'
|
||||||
|
push: ${{ (github.ref == 'refs/heads/master') && (github.repository == 'citra-emu/citra-multiplayer-dedicated') }}
|
||||||
|
tags: citraemu/citra-multiplayer-dedicated:latest
|
18
Dockerfile
18
Dockerfile
|
@ -1,11 +1,17 @@
|
||||||
FROM citraemu/build-environments:linux-fresh
|
FROM debian:bullseye AS build
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
RUN apt-get update && apt-get -y full-upgrade && \
|
||||||
|
apt-get install -y build-essential libsdl2-dev wget git ccache cmake ninja-build
|
||||||
|
|
||||||
|
COPY . /root/build-files
|
||||||
|
|
||||||
|
RUN git clone --recursive https://github.com/citra-emu/citra-canary.git /root/citra-canary && \
|
||||||
|
cd /root/citra-canary && /root/build-files/.ci/build.sh
|
||||||
|
|
||||||
|
FROM debian:bullseye-slim AS final
|
||||||
|
LABEL maintainer="citraemu"
|
||||||
# Create app directory
|
# Create app directory
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
|
COPY --from=build /root/citra-canary/build/bin/Release/citra-room /usr/src/app
|
||||||
# Download the Citra binary.
|
|
||||||
# Bundle citra-room inside the image and delete the downloaded tar file.
|
|
||||||
RUN wget -O citra-linux.tar.xz https://github.com/citra-emu/citra-canary/releases/download/canary-1641/citra-linux-20200413-e9f68ae.tar.xz && \
|
|
||||||
tar --wildcards --strip=1 -xJf citra-linux.tar.xz */citra-room && rm citra-linux.tar.xz
|
|
||||||
|
|
||||||
ENTRYPOINT [ "/usr/src/app/citra-room" ]
|
ENTRYPOINT [ "/usr/src/app/citra-room" ]
|
||||||
|
|
|
@ -0,0 +1,877 @@
|
||||||
|
From 036ef599a4fa6952bb3930e0c3ddde90cbe90405 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vitor Kiguchi <vitor-kiguchi@hotmail.com>
|
||||||
|
Date: Thu, 20 Aug 2020 04:46:35 -0300
|
||||||
|
Subject: [PATCH 1/2] Move webservice settings to own file
|
||||||
|
|
||||||
|
---
|
||||||
|
src/citra/config.cpp | 9 ++++----
|
||||||
|
src/citra_qt/configuration/config.cpp | 17 +++++++-------
|
||||||
|
src/citra_qt/configuration/configure_web.cpp | 17 +++++++-------
|
||||||
|
src/citra_qt/main.cpp | 5 ++--
|
||||||
|
src/citra_qt/multiplayer/direct_connect.cpp | 7 +++---
|
||||||
|
src/citra_qt/multiplayer/host_room.cpp | 17 +++++++-------
|
||||||
|
src/citra_qt/multiplayer/lobby.cpp | 15 ++++++------
|
||||||
|
src/core/announce_multiplayer_session.cpp | 14 ++++++------
|
||||||
|
src/core/settings.h | 6 -----
|
||||||
|
src/core/telemetry_session.cpp | 17 +++++++-------
|
||||||
|
src/dedicated_room/citra-room.cpp | 24 ++++++++------------
|
||||||
|
src/network/CMakeLists.txt | 2 ++
|
||||||
|
src/network/network_settings.cpp | 11 +++++++++
|
||||||
|
src/network/network_settings.h | 20 ++++++++++++++++
|
||||||
|
14 files changed, 105 insertions(+), 76 deletions(-)
|
||||||
|
create mode 100644 src/network/network_settings.cpp
|
||||||
|
create mode 100644 src/network/network_settings.h
|
||||||
|
|
||||||
|
diff --git a/src/citra/config.cpp b/src/citra/config.cpp
|
||||||
|
index 88a36ed66ee..ff18f780cfb 100644
|
||||||
|
--- a/src/citra/config.cpp
|
||||||
|
+++ b/src/citra/config.cpp
|
||||||
|
@@ -18,6 +18,7 @@
|
||||||
|
#include "core/settings.h"
|
||||||
|
#include "input_common/main.h"
|
||||||
|
#include "input_common/udp/client.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
|
||||||
|
Config::Config() {
|
||||||
|
// TODO: Don't hardcode the path; let the frontend decide where to put the config files.
|
||||||
|
@@ -266,12 +267,12 @@ void Config::ReadValues() {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Web Service
|
||||||
|
- Settings::values.enable_telemetry =
|
||||||
|
+ NetSettings::values.enable_telemetry =
|
||||||
|
sdl2_config->GetBoolean("WebService", "enable_telemetry", true);
|
||||||
|
- Settings::values.web_api_url =
|
||||||
|
+ NetSettings::values.web_api_url =
|
||||||
|
sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org");
|
||||||
|
- Settings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", "");
|
||||||
|
- Settings::values.citra_token = sdl2_config->GetString("WebService", "citra_token", "");
|
||||||
|
+ NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", "");
|
||||||
|
+ NetSettings::values.citra_token = sdl2_config->GetString("WebService", "citra_token", "");
|
||||||
|
|
||||||
|
// Video Dumping
|
||||||
|
Settings::values.output_format =
|
||||||
|
diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp
|
||||||
|
index 8901c47c2d8..bd6a7b5565c 100644
|
||||||
|
--- a/src/citra_qt/configuration/config.cpp
|
||||||
|
+++ b/src/citra_qt/configuration/config.cpp
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
#include "input_common/main.h"
|
||||||
|
#include "input_common/udp/client.h"
|
||||||
|
#include "network/network.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
|
||||||
|
Config::Config() {
|
||||||
|
// TODO: Don't hardcode the path; let the frontend decide where to put the config files.
|
||||||
|
@@ -686,15 +687,15 @@ void Config::ReadUpdaterValues() {
|
||||||
|
void Config::ReadWebServiceValues() {
|
||||||
|
qt_config->beginGroup(QStringLiteral("WebService"));
|
||||||
|
|
||||||
|
- Settings::values.enable_telemetry =
|
||||||
|
+ NetSettings::values.enable_telemetry =
|
||||||
|
ReadSetting(QStringLiteral("enable_telemetry"), true).toBool();
|
||||||
|
- Settings::values.web_api_url =
|
||||||
|
+ NetSettings::values.web_api_url =
|
||||||
|
ReadSetting(QStringLiteral("web_api_url"), QStringLiteral("https://api.citra-emu.org"))
|
||||||
|
.toString()
|
||||||
|
.toStdString();
|
||||||
|
- Settings::values.citra_username =
|
||||||
|
+ NetSettings::values.citra_username =
|
||||||
|
ReadSetting(QStringLiteral("citra_username")).toString().toStdString();
|
||||||
|
- Settings::values.citra_token =
|
||||||
|
+ NetSettings::values.citra_token =
|
||||||
|
ReadSetting(QStringLiteral("citra_token")).toString().toStdString();
|
||||||
|
|
||||||
|
qt_config->endGroup();
|
||||||
|
@@ -1138,14 +1139,14 @@ void Config::SaveUpdaterValues() {
|
||||||
|
void Config::SaveWebServiceValues() {
|
||||||
|
qt_config->beginGroup(QStringLiteral("WebService"));
|
||||||
|
|
||||||
|
- WriteSetting(QStringLiteral("enable_telemetry"), Settings::values.enable_telemetry, true);
|
||||||
|
+ WriteSetting(QStringLiteral("enable_telemetry"), NetSettings::values.enable_telemetry, true);
|
||||||
|
WriteSetting(QStringLiteral("web_api_url"),
|
||||||
|
- QString::fromStdString(Settings::values.web_api_url),
|
||||||
|
+ QString::fromStdString(NetSettings::values.web_api_url),
|
||||||
|
QStringLiteral("https://api.citra-emu.org"));
|
||||||
|
WriteSetting(QStringLiteral("citra_username"),
|
||||||
|
- QString::fromStdString(Settings::values.citra_username));
|
||||||
|
+ QString::fromStdString(NetSettings::values.citra_username));
|
||||||
|
WriteSetting(QStringLiteral("citra_token"),
|
||||||
|
- QString::fromStdString(Settings::values.citra_token));
|
||||||
|
+ QString::fromStdString(NetSettings::values.citra_token));
|
||||||
|
|
||||||
|
qt_config->endGroup();
|
||||||
|
}
|
||||||
|
diff --git a/src/citra_qt/configuration/configure_web.cpp b/src/citra_qt/configuration/configure_web.cpp
|
||||||
|
index cc7ca675f1d..e97a227205a 100644
|
||||||
|
--- a/src/citra_qt/configuration/configure_web.cpp
|
||||||
|
+++ b/src/citra_qt/configuration/configure_web.cpp
|
||||||
|
@@ -7,8 +7,8 @@
|
||||||
|
#include <QtConcurrent/QtConcurrentRun>
|
||||||
|
#include "citra_qt/configuration/configure_web.h"
|
||||||
|
#include "citra_qt/uisettings.h"
|
||||||
|
-#include "core/settings.h"
|
||||||
|
#include "core/telemetry_session.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
#include "ui_configure_web.h"
|
||||||
|
|
||||||
|
static constexpr char token_delimiter{':'};
|
||||||
|
@@ -70,16 +70,16 @@ void ConfigureWeb::SetConfiguration() {
|
||||||
|
tr("<a href='https://citra-emu.org/wiki/citra-web-service/'><span style=\"text-decoration: "
|
||||||
|
"underline; color:#039be5;\">What is my token?</span></a>"));
|
||||||
|
|
||||||
|
- ui->toggle_telemetry->setChecked(Settings::values.enable_telemetry);
|
||||||
|
+ ui->toggle_telemetry->setChecked(NetSettings::values.enable_telemetry);
|
||||||
|
|
||||||
|
- if (Settings::values.citra_username.empty()) {
|
||||||
|
+ if (NetSettings::values.citra_username.empty()) {
|
||||||
|
ui->username->setText(tr("Unspecified"));
|
||||||
|
} else {
|
||||||
|
- ui->username->setText(QString::fromStdString(Settings::values.citra_username));
|
||||||
|
+ ui->username->setText(QString::fromStdString(NetSettings::values.citra_username));
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->edit_token->setText(QString::fromStdString(
|
||||||
|
- GenerateDisplayToken(Settings::values.citra_username, Settings::values.citra_token)));
|
||||||
|
+ GenerateDisplayToken(NetSettings::values.citra_username, NetSettings::values.citra_token)));
|
||||||
|
|
||||||
|
// Connect after setting the values, to avoid calling OnLoginChanged now
|
||||||
|
connect(ui->edit_token, &QLineEdit::textChanged, this, &ConfigureWeb::OnLoginChanged);
|
||||||
|
@@ -91,12 +91,13 @@ void ConfigureWeb::SetConfiguration() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigureWeb::ApplyConfiguration() {
|
||||||
|
- Settings::values.enable_telemetry = ui->toggle_telemetry->isChecked();
|
||||||
|
+ NetSettings::values.enable_telemetry = ui->toggle_telemetry->isChecked();
|
||||||
|
UISettings::values.enable_discord_presence = ui->toggle_discordrpc->isChecked();
|
||||||
|
if (user_verified) {
|
||||||
|
- Settings::values.citra_username =
|
||||||
|
+ NetSettings::values.citra_username =
|
||||||
|
UsernameFromDisplayToken(ui->edit_token->text().toStdString());
|
||||||
|
- Settings::values.citra_token = TokenFromDisplayToken(ui->edit_token->text().toStdString());
|
||||||
|
+ NetSettings::values.citra_token =
|
||||||
|
+ TokenFromDisplayToken(ui->edit_token->text().toStdString());
|
||||||
|
} else {
|
||||||
|
QMessageBox::warning(
|
||||||
|
this, tr("Token not verified"),
|
||||||
|
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
|
||||||
|
index a804bfb985d..af3925bbc7f 100644
|
||||||
|
--- a/src/citra_qt/main.cpp
|
||||||
|
+++ b/src/citra_qt/main.cpp
|
||||||
|
@@ -83,6 +83,7 @@
|
||||||
|
#include "core/savestate.h"
|
||||||
|
#include "core/settings.h"
|
||||||
|
#include "game_list_p.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
#include "ui_main.h"
|
||||||
|
#include "video_core/renderer_base.h"
|
||||||
|
#include "video_core/video_core.h"
|
||||||
|
@@ -128,7 +129,7 @@ void GMainWindow::ShowTelemetryCallout() {
|
||||||
|
"data is collected</a> to help improve Citra. "
|
||||||
|
"<br/><br/>Would you like to share your usage data with us?");
|
||||||
|
if (QMessageBox::question(this, tr("Telemetry"), telemetry_message) != QMessageBox::Yes) {
|
||||||
|
- Settings::values.enable_telemetry = false;
|
||||||
|
+ NetSettings::values.enable_telemetry = false;
|
||||||
|
Settings::Apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1578,7 +1579,7 @@ void GMainWindow::OnLoadComplete() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void GMainWindow::OnMenuReportCompatibility() {
|
||||||
|
- if (!Settings::values.citra_token.empty() && !Settings::values.citra_username.empty()) {
|
||||||
|
+ if (!NetSettings::values.citra_token.empty() && !NetSettings::values.citra_username.empty()) {
|
||||||
|
CompatDB compatdb{this};
|
||||||
|
compatdb.exec();
|
||||||
|
} else {
|
||||||
|
diff --git a/src/citra_qt/multiplayer/direct_connect.cpp b/src/citra_qt/multiplayer/direct_connect.cpp
|
||||||
|
index 2ce935f23e2..feaea69c945 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/direct_connect.cpp
|
||||||
|
+++ b/src/citra_qt/multiplayer/direct_connect.cpp
|
||||||
|
@@ -16,8 +16,8 @@
|
||||||
|
#include "citra_qt/multiplayer/validation.h"
|
||||||
|
#include "citra_qt/uisettings.h"
|
||||||
|
#include "core/hle/service/cfg/cfg.h"
|
||||||
|
-#include "core/settings.h"
|
||||||
|
#include "network/network.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
#include "ui_direct_connect.h"
|
||||||
|
|
||||||
|
enum class ConnectionType : u8 { TraversalServer, IP };
|
||||||
|
@@ -34,9 +34,9 @@ DirectConnectWindow::DirectConnectWindow(QWidget* parent)
|
||||||
|
|
||||||
|
ui->nickname->setValidator(validation.GetNickname());
|
||||||
|
ui->nickname->setText(UISettings::values.nickname);
|
||||||
|
- if (ui->nickname->text().isEmpty() && !Settings::values.citra_username.empty()) {
|
||||||
|
+ if (ui->nickname->text().isEmpty() && !NetSettings::values.citra_username.empty()) {
|
||||||
|
// Use Citra Web Service user name as nickname by default
|
||||||
|
- ui->nickname->setText(QString::fromStdString(Settings::values.citra_username));
|
||||||
|
+ ui->nickname->setText(QString::fromStdString(NetSettings::values.citra_username));
|
||||||
|
}
|
||||||
|
ui->ip->setValidator(validation.GetIP());
|
||||||
|
ui->ip->setText(UISettings::values.ip);
|
||||||
|
@@ -92,7 +92,6 @@ void DirectConnectWindow::Connect() {
|
||||||
|
UISettings::values.port = (ui->port->isModified() && !ui->port->text().isEmpty())
|
||||||
|
? ui->port->text()
|
||||||
|
: UISettings::values.port;
|
||||||
|
- Settings::Apply();
|
||||||
|
|
||||||
|
// attempt to connect in a different thread
|
||||||
|
QFuture<void> f = QtConcurrent::run([&] {
|
||||||
|
diff --git a/src/citra_qt/multiplayer/host_room.cpp b/src/citra_qt/multiplayer/host_room.cpp
|
||||||
|
index 49eb5480d9b..b2905c7db51 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/host_room.cpp
|
||||||
|
+++ b/src/citra_qt/multiplayer/host_room.cpp
|
||||||
|
@@ -21,7 +21,7 @@
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
#include "core/announce_multiplayer_session.h"
|
||||||
|
#include "core/hle/service/cfg/cfg.h"
|
||||||
|
-#include "core/settings.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
#include "ui_host_room.h"
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
#include "web_service/verify_user_jwt.h"
|
||||||
|
@@ -53,9 +53,9 @@ HostRoomWindow::HostRoomWindow(QWidget* parent, QStandardItemModel* list,
|
||||||
|
|
||||||
|
// Restore the settings:
|
||||||
|
ui->username->setText(UISettings::values.room_nickname);
|
||||||
|
- if (ui->username->text().isEmpty() && !Settings::values.citra_username.empty()) {
|
||||||
|
+ if (ui->username->text().isEmpty() && !NetSettings::values.citra_username.empty()) {
|
||||||
|
// Use Citra Web Service user name as nickname by default
|
||||||
|
- ui->username->setText(QString::fromStdString(Settings::values.citra_username));
|
||||||
|
+ ui->username->setText(QString::fromStdString(NetSettings::values.citra_username));
|
||||||
|
}
|
||||||
|
ui->room_name->setText(UISettings::values.room_name);
|
||||||
|
ui->port->setText(UISettings::values.room_port);
|
||||||
|
@@ -92,7 +92,8 @@ std::unique_ptr<Network::VerifyUser::Backend> HostRoomWindow::CreateVerifyBacken
|
||||||
|
std::unique_ptr<Network::VerifyUser::Backend> verify_backend;
|
||||||
|
if (use_validation) {
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
- verify_backend = std::make_unique<WebService::VerifyUserJWT>(Settings::values.web_api_url);
|
||||||
|
+ verify_backend =
|
||||||
|
+ std::make_unique<WebService::VerifyUserJWT>(NetSettings::values.web_api_url);
|
||||||
|
#else
|
||||||
|
verify_backend = std::make_unique<Network::VerifyUser::NullBackend>();
|
||||||
|
#endif
|
||||||
|
@@ -144,7 +145,7 @@ void HostRoomWindow::Host() {
|
||||||
|
bool created = room->Create(ui->room_name->text().toStdString(),
|
||||||
|
ui->room_description->toPlainText().toStdString(), "", port,
|
||||||
|
password, ui->max_player->value(),
|
||||||
|
- Settings::values.citra_username, game_name.toStdString(),
|
||||||
|
+ NetSettings::values.citra_username, game_name.toStdString(),
|
||||||
|
game_id, CreateVerifyBackend(is_public), ban_list);
|
||||||
|
if (!created) {
|
||||||
|
NetworkMessage::ErrorManager::ShowError(
|
||||||
|
@@ -182,8 +183,9 @@ void HostRoomWindow::Host() {
|
||||||
|
std::string token;
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
if (is_public) {
|
||||||
|
- WebService::Client client(Settings::values.web_api_url, Settings::values.citra_username,
|
||||||
|
- Settings::values.citra_token);
|
||||||
|
+ WebService::Client client(NetSettings::values.web_api_url,
|
||||||
|
+ NetSettings::values.citra_username,
|
||||||
|
+ NetSettings::values.citra_token);
|
||||||
|
if (auto room = Network::GetRoom().lock()) {
|
||||||
|
token = client.GetExternalJWT(room->GetVerifyUID()).returned_data;
|
||||||
|
}
|
||||||
|
@@ -210,7 +212,6 @@ void HostRoomWindow::Host() {
|
||||||
|
? ui->port->text()
|
||||||
|
: QString::number(Network::DefaultRoomPort);
|
||||||
|
UISettings::values.room_description = ui->room_description->toPlainText();
|
||||||
|
- Settings::Apply();
|
||||||
|
ui->host->setEnabled(true);
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
diff --git a/src/citra_qt/multiplayer/lobby.cpp b/src/citra_qt/multiplayer/lobby.cpp
|
||||||
|
index d4d946da57e..40c0c1f398a 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/lobby.cpp
|
||||||
|
+++ b/src/citra_qt/multiplayer/lobby.cpp
|
||||||
|
@@ -16,8 +16,8 @@
|
||||||
|
#include "citra_qt/uisettings.h"
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
#include "core/hle/service/cfg/cfg.h"
|
||||||
|
-#include "core/settings.h"
|
||||||
|
#include "network/network.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
#include "ui_lobby.h"
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
#include "web_service/web_backend.h"
|
||||||
|
@@ -58,9 +58,9 @@ Lobby::Lobby(QWidget* parent, QStandardItemModel* list,
|
||||||
|
|
||||||
|
ui->nickname->setValidator(validation.GetNickname());
|
||||||
|
ui->nickname->setText(UISettings::values.nickname);
|
||||||
|
- if (ui->nickname->text().isEmpty() && !Settings::values.citra_username.empty()) {
|
||||||
|
+ if (ui->nickname->text().isEmpty() && !NetSettings::values.citra_username.empty()) {
|
||||||
|
// Use Citra Web Service user name as nickname by default
|
||||||
|
- ui->nickname->setText(QString::fromStdString(Settings::values.citra_username));
|
||||||
|
+ ui->nickname->setText(QString::fromStdString(NetSettings::values.citra_username));
|
||||||
|
}
|
||||||
|
|
||||||
|
// UI Buttons
|
||||||
|
@@ -155,9 +155,11 @@ void Lobby::OnJoinRoom(const QModelIndex& source) {
|
||||||
|
QFuture<void> f = QtConcurrent::run([nickname, ip, port, password, verify_UID] {
|
||||||
|
std::string token;
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
- if (!Settings::values.citra_username.empty() && !Settings::values.citra_token.empty()) {
|
||||||
|
- WebService::Client client(Settings::values.web_api_url, Settings::values.citra_username,
|
||||||
|
- Settings::values.citra_token);
|
||||||
|
+ if (!NetSettings::values.citra_username.empty() &&
|
||||||
|
+ !NetSettings::values.citra_token.empty()) {
|
||||||
|
+ WebService::Client client(NetSettings::values.web_api_url,
|
||||||
|
+ NetSettings::values.citra_username,
|
||||||
|
+ NetSettings::values.citra_token);
|
||||||
|
token = client.GetExternalJWT(verify_UID).returned_data;
|
||||||
|
if (token.empty()) {
|
||||||
|
LOG_ERROR(WebService, "Could not get external JWT, verification may fail");
|
||||||
|
@@ -179,7 +181,6 @@ void Lobby::OnJoinRoom(const QModelIndex& source) {
|
||||||
|
UISettings::values.nickname = ui->nickname->text();
|
||||||
|
UISettings::values.ip = proxy->data(connection_index, LobbyItemHost::HostIPRole).toString();
|
||||||
|
UISettings::values.port = proxy->data(connection_index, LobbyItemHost::HostPortRole).toString();
|
||||||
|
- Settings::Apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Lobby::ResetModel() {
|
||||||
|
diff --git a/src/core/announce_multiplayer_session.cpp b/src/core/announce_multiplayer_session.cpp
|
||||||
|
index 38acb4bacdc..9ae373192a3 100644
|
||||||
|
--- a/src/core/announce_multiplayer_session.cpp
|
||||||
|
+++ b/src/core/announce_multiplayer_session.cpp
|
||||||
|
@@ -8,8 +8,8 @@
|
||||||
|
#include "announce_multiplayer_session.h"
|
||||||
|
#include "common/announce_multiplayer_room.h"
|
||||||
|
#include "common/assert.h"
|
||||||
|
-#include "core/settings.h"
|
||||||
|
#include "network/network.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
#include "web_service/announce_room_json.h"
|
||||||
|
@@ -22,9 +22,9 @@ static constexpr std::chrono::seconds announce_time_interval(15);
|
||||||
|
|
||||||
|
AnnounceMultiplayerSession::AnnounceMultiplayerSession() {
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
- backend = std::make_unique<WebService::RoomJson>(Settings::values.web_api_url,
|
||||||
|
- Settings::values.citra_username,
|
||||||
|
- Settings::values.citra_token);
|
||||||
|
+ backend = std::make_unique<WebService::RoomJson>(NetSettings::values.web_api_url,
|
||||||
|
+ NetSettings::values.citra_username,
|
||||||
|
+ NetSettings::values.citra_token);
|
||||||
|
#else
|
||||||
|
backend = std::make_unique<AnnounceMultiplayerRoom::NullBackend>();
|
||||||
|
#endif
|
||||||
|
@@ -155,9 +155,9 @@ void AnnounceMultiplayerSession::UpdateCredentials() {
|
||||||
|
ASSERT_MSG(!IsRunning(), "Credentials can only be updated when session is not running");
|
||||||
|
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
- backend = std::make_unique<WebService::RoomJson>(Settings::values.web_api_url,
|
||||||
|
- Settings::values.citra_username,
|
||||||
|
- Settings::values.citra_token);
|
||||||
|
+ backend = std::make_unique<WebService::RoomJson>(NetSettings::values.web_api_url,
|
||||||
|
+ NetSettings::values.citra_username,
|
||||||
|
+ NetSettings::values.citra_token);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/core/settings.h b/src/core/settings.h
|
||||||
|
index 0876d312f56..b0101ede26d 100644
|
||||||
|
--- a/src/core/settings.h
|
||||||
|
+++ b/src/core/settings.h
|
||||||
|
@@ -211,12 +211,6 @@ struct Values {
|
||||||
|
std::string log_filter;
|
||||||
|
std::unordered_map<std::string, bool> lle_modules;
|
||||||
|
|
||||||
|
- // WebService
|
||||||
|
- bool enable_telemetry;
|
||||||
|
- std::string web_api_url;
|
||||||
|
- std::string citra_username;
|
||||||
|
- std::string citra_token;
|
||||||
|
-
|
||||||
|
// Video Dumping
|
||||||
|
std::string output_format;
|
||||||
|
std::string format_options;
|
||||||
|
diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp
|
||||||
|
index 6189e84eeff..5b27fa6cf22 100644
|
||||||
|
--- a/src/core/telemetry_session.cpp
|
||||||
|
+++ b/src/core/telemetry_session.cpp
|
||||||
|
@@ -15,6 +15,7 @@
|
||||||
|
#include "core/core.h"
|
||||||
|
#include "core/settings.h"
|
||||||
|
#include "core/telemetry_session.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
#include "web_service/telemetry_json.h"
|
||||||
|
@@ -71,7 +72,7 @@ u64 RegenerateTelemetryId() {
|
||||||
|
|
||||||
|
bool VerifyLogin(const std::string& username, const std::string& token) {
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
- return WebService::VerifyLogin(Settings::values.web_api_url, username, token);
|
||||||
|
+ return WebService::VerifyLogin(NetSettings::values.web_api_url, username, token);
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
@@ -87,16 +88,16 @@ TelemetrySession::~TelemetrySession() {
|
||||||
|
AddField(Telemetry::FieldType::Session, "Shutdown_Time", shutdown_time);
|
||||||
|
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
- auto backend = std::make_unique<WebService::TelemetryJson>(Settings::values.web_api_url,
|
||||||
|
- Settings::values.citra_username,
|
||||||
|
- Settings::values.citra_token);
|
||||||
|
+ auto backend = std::make_unique<WebService::TelemetryJson>(NetSettings::values.web_api_url,
|
||||||
|
+ NetSettings::values.citra_username,
|
||||||
|
+ NetSettings::values.citra_token);
|
||||||
|
#else
|
||||||
|
auto backend = std::make_unique<Telemetry::NullVisitor>();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Complete the session, submitting to the web service backend if necessary
|
||||||
|
field_collection.Accept(*backend);
|
||||||
|
- if (Settings::values.enable_telemetry) {
|
||||||
|
+ if (NetSettings::values.enable_telemetry) {
|
||||||
|
backend->Complete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -190,9 +191,9 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) {
|
||||||
|
|
||||||
|
bool TelemetrySession::SubmitTestcase() {
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
- auto backend = std::make_unique<WebService::TelemetryJson>(Settings::values.web_api_url,
|
||||||
|
- Settings::values.citra_username,
|
||||||
|
- Settings::values.citra_token);
|
||||||
|
+ auto backend = std::make_unique<WebService::TelemetryJson>(NetSettings::values.web_api_url,
|
||||||
|
+ NetSettings::values.citra_username,
|
||||||
|
+ NetSettings::values.citra_token);
|
||||||
|
field_collection.Accept(*backend);
|
||||||
|
return backend->SubmitTestcase();
|
||||||
|
#else
|
||||||
|
diff --git a/src/dedicated_room/citra-room.cpp b/src/dedicated_room/citra-room.cpp
|
||||||
|
index a498b13c2fd..801249206a8 100644
|
||||||
|
--- a/src/dedicated_room/citra-room.cpp
|
||||||
|
+++ b/src/dedicated_room/citra-room.cpp
|
||||||
|
@@ -10,7 +10,6 @@
|
||||||
|
#include <string>
|
||||||
|
#include <thread>
|
||||||
|
#include <cryptopp/base64.h>
|
||||||
|
-#include <glad/glad.h>
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
// windows.h needs to be included before shellapi.h
|
||||||
|
@@ -28,9 +27,8 @@
|
||||||
|
#include "common/scm_rev.h"
|
||||||
|
#include "common/string_util.h"
|
||||||
|
#include "core/announce_multiplayer_session.h"
|
||||||
|
-#include "core/core.h"
|
||||||
|
-#include "core/settings.h"
|
||||||
|
#include "network/network.h"
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
#include "network/room.h"
|
||||||
|
#include "network/verify_user.h"
|
||||||
|
|
||||||
|
@@ -170,9 +168,6 @@ int main(int argc, char** argv) {
|
||||||
|
int option_index = 0;
|
||||||
|
char* endarg;
|
||||||
|
|
||||||
|
- // This is just to be able to link against core
|
||||||
|
- gladLoadGL();
|
||||||
|
-
|
||||||
|
std::string room_name;
|
||||||
|
std::string room_description;
|
||||||
|
std::string password;
|
||||||
|
@@ -300,15 +295,15 @@ int main(int argc, char** argv) {
|
||||||
|
if (announce) {
|
||||||
|
if (username.empty()) {
|
||||||
|
std::cout << "Hosting a public room\n\n";
|
||||||
|
- Settings::values.web_api_url = web_api_url;
|
||||||
|
- Settings::values.citra_username = UsernameFromDisplayToken(token);
|
||||||
|
- username = Settings::values.citra_username;
|
||||||
|
- Settings::values.citra_token = TokenFromDisplayToken(token);
|
||||||
|
+ NetSettings::values.web_api_url = web_api_url;
|
||||||
|
+ NetSettings::values.citra_username = UsernameFromDisplayToken(token);
|
||||||
|
+ username = NetSettings::values.citra_username;
|
||||||
|
+ NetSettings::values.citra_token = TokenFromDisplayToken(token);
|
||||||
|
} else {
|
||||||
|
std::cout << "Hosting a public room\n\n";
|
||||||
|
- Settings::values.web_api_url = web_api_url;
|
||||||
|
- Settings::values.citra_username = username;
|
||||||
|
- Settings::values.citra_token = token;
|
||||||
|
+ NetSettings::values.web_api_url = web_api_url;
|
||||||
|
+ NetSettings::values.citra_username = username;
|
||||||
|
+ NetSettings::values.citra_token = token;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!announce && enable_citra_mods) {
|
||||||
|
@@ -327,7 +322,8 @@ int main(int argc, char** argv) {
|
||||||
|
std::unique_ptr<Network::VerifyUser::Backend> verify_backend;
|
||||||
|
if (announce) {
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
- verify_backend = std::make_unique<WebService::VerifyUserJWT>(Settings::values.web_api_url);
|
||||||
|
+ verify_backend =
|
||||||
|
+ std::make_unique<WebService::VerifyUserJWT>(NetSettings::values.web_api_url);
|
||||||
|
#else
|
||||||
|
std::cout
|
||||||
|
<< "Citra Web Services is not available with this build: validation is disabled.\n\n";
|
||||||
|
diff --git a/src/network/CMakeLists.txt b/src/network/CMakeLists.txt
|
||||||
|
index 1e0eb4bc9b2..cf920d8bc4e 100644
|
||||||
|
--- a/src/network/CMakeLists.txt
|
||||||
|
+++ b/src/network/CMakeLists.txt
|
||||||
|
@@ -1,6 +1,8 @@
|
||||||
|
add_library(network STATIC
|
||||||
|
network.cpp
|
||||||
|
network.h
|
||||||
|
+ network_settings.cpp
|
||||||
|
+ network_settings.h
|
||||||
|
packet.cpp
|
||||||
|
packet.h
|
||||||
|
room.cpp
|
||||||
|
diff --git a/src/network/network_settings.cpp b/src/network/network_settings.cpp
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..62aefcc0454
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/network/network_settings.cpp
|
||||||
|
@@ -0,0 +1,11 @@
|
||||||
|
+// Copyright 2020 Citra Emulator Project
|
||||||
|
+// Licensed under GPLv2 or any later version
|
||||||
|
+// Refer to the license.txt file included.
|
||||||
|
+
|
||||||
|
+#include "network/network_settings.h"
|
||||||
|
+
|
||||||
|
+namespace NetSettings {
|
||||||
|
+
|
||||||
|
+Values values = {};
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
diff --git a/src/network/network_settings.h b/src/network/network_settings.h
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..eed1d56b4a9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/network/network_settings.h
|
||||||
|
@@ -0,0 +1,20 @@
|
||||||
|
+// Copyright 2020 Citra Emulator Project
|
||||||
|
+// Licensed under GPLv2 or any later version
|
||||||
|
+// Refer to the license.txt file included.
|
||||||
|
+
|
||||||
|
+#pragma once
|
||||||
|
+
|
||||||
|
+#include <string>
|
||||||
|
+#include "common/logging/log.h"
|
||||||
|
+
|
||||||
|
+namespace NetSettings {
|
||||||
|
+
|
||||||
|
+struct Values {
|
||||||
|
+ // WebService
|
||||||
|
+ bool enable_telemetry;
|
||||||
|
+ std::string web_api_url;
|
||||||
|
+ std::string citra_username;
|
||||||
|
+ std::string citra_token;
|
||||||
|
+} extern values;
|
||||||
|
+
|
||||||
|
+} // namespace NetSettings
|
||||||
|
|
||||||
|
From 2fb9de92a06857b627f15fe6a1824f33c1525b57 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vitor Kiguchi <vitor-kiguchi@hotmail.com>
|
||||||
|
Date: Thu, 20 Aug 2020 16:54:01 -0300
|
||||||
|
Subject: [PATCH 2/2] remove dedicated_room dependence on core
|
||||||
|
|
||||||
|
---
|
||||||
|
src/citra_qt/multiplayer/chat_room.cpp | 2 +-
|
||||||
|
src/citra_qt/multiplayer/chat_room.h | 2 +-
|
||||||
|
src/citra_qt/multiplayer/client_room.cpp | 2 +-
|
||||||
|
src/citra_qt/multiplayer/host_room.cpp | 4 ++--
|
||||||
|
src/citra_qt/multiplayer/host_room.h | 6 +++---
|
||||||
|
src/citra_qt/multiplayer/lobby.cpp | 2 +-
|
||||||
|
src/citra_qt/multiplayer/lobby.h | 6 +++---
|
||||||
|
src/citra_qt/multiplayer/state.cpp | 2 +-
|
||||||
|
src/citra_qt/multiplayer/state.h | 4 ++--
|
||||||
|
src/core/CMakeLists.txt | 2 --
|
||||||
|
src/dedicated_room/CMakeLists.txt | 4 ++--
|
||||||
|
src/dedicated_room/citra-room.cpp | 4 ++--
|
||||||
|
src/network/CMakeLists.txt | 2 ++
|
||||||
|
src/{core => network}/announce_multiplayer_session.cpp | 4 ++--
|
||||||
|
src/{core => network}/announce_multiplayer_session.h | 6 ++----
|
||||||
|
15 files changed, 25 insertions(+), 27 deletions(-)
|
||||||
|
rename src/{core => network}/announce_multiplayer_session.cpp (99%)
|
||||||
|
rename src/{core => network}/announce_multiplayer_session.h (98%)
|
||||||
|
|
||||||
|
diff --git a/src/citra_qt/multiplayer/chat_room.cpp b/src/citra_qt/multiplayer/chat_room.cpp
|
||||||
|
index 44073697841..6b303bc1e25 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/chat_room.cpp
|
||||||
|
+++ b/src/citra_qt/multiplayer/chat_room.cpp
|
||||||
|
@@ -20,7 +20,7 @@
|
||||||
|
#include "citra_qt/multiplayer/chat_room.h"
|
||||||
|
#include "citra_qt/multiplayer/message.h"
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
-#include "core/announce_multiplayer_session.h"
|
||||||
|
+#include "network/announce_multiplayer_session.h"
|
||||||
|
#include "ui_chat_room.h"
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
#include "web_service/web_backend.h"
|
||||||
|
diff --git a/src/citra_qt/multiplayer/chat_room.h b/src/citra_qt/multiplayer/chat_room.h
|
||||||
|
index a810377f7af..d73f7cf73df 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/chat_room.h
|
||||||
|
+++ b/src/citra_qt/multiplayer/chat_room.h
|
||||||
|
@@ -16,7 +16,7 @@ namespace Ui {
|
||||||
|
class ChatRoom;
|
||||||
|
}
|
||||||
|
|
||||||
|
-namespace Core {
|
||||||
|
+namespace Network {
|
||||||
|
class AnnounceMultiplayerSession;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/citra_qt/multiplayer/client_room.cpp b/src/citra_qt/multiplayer/client_room.cpp
|
||||||
|
index 9ef59c1e008..312090cbe01 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/client_room.cpp
|
||||||
|
+++ b/src/citra_qt/multiplayer/client_room.cpp
|
||||||
|
@@ -16,7 +16,7 @@
|
||||||
|
#include "citra_qt/multiplayer/moderation_dialog.h"
|
||||||
|
#include "citra_qt/multiplayer/state.h"
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
-#include "core/announce_multiplayer_session.h"
|
||||||
|
+#include "network/announce_multiplayer_session.h"
|
||||||
|
#include "ui_client_room.h"
|
||||||
|
|
||||||
|
ClientRoomWindow::ClientRoomWindow(QWidget* parent)
|
||||||
|
diff --git a/src/citra_qt/multiplayer/host_room.cpp b/src/citra_qt/multiplayer/host_room.cpp
|
||||||
|
index b2905c7db51..498ce943b76 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/host_room.cpp
|
||||||
|
+++ b/src/citra_qt/multiplayer/host_room.cpp
|
||||||
|
@@ -19,8 +19,8 @@
|
||||||
|
#include "citra_qt/multiplayer/validation.h"
|
||||||
|
#include "citra_qt/uisettings.h"
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
-#include "core/announce_multiplayer_session.h"
|
||||||
|
#include "core/hle/service/cfg/cfg.h"
|
||||||
|
+#include "network/announce_multiplayer_session.h"
|
||||||
|
#include "network/network_settings.h"
|
||||||
|
#include "ui_host_room.h"
|
||||||
|
#ifdef ENABLE_WEB_SERVICE
|
||||||
|
@@ -28,7 +28,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
HostRoomWindow::HostRoomWindow(QWidget* parent, QStandardItemModel* list,
|
||||||
|
- std::shared_ptr<Core::AnnounceMultiplayerSession> session)
|
||||||
|
+ std::shared_ptr<Network::AnnounceMultiplayerSession> session)
|
||||||
|
: QDialog(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint),
|
||||||
|
ui(std::make_unique<Ui::HostRoom>()), announce_multiplayer_session(session) {
|
||||||
|
ui->setupUi(this);
|
||||||
|
diff --git a/src/citra_qt/multiplayer/host_room.h b/src/citra_qt/multiplayer/host_room.h
|
||||||
|
index 69a36b881e8..b6f84f078b6 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/host_room.h
|
||||||
|
+++ b/src/citra_qt/multiplayer/host_room.h
|
||||||
|
@@ -17,7 +17,7 @@ namespace Ui {
|
||||||
|
class HostRoom;
|
||||||
|
}
|
||||||
|
|
||||||
|
-namespace Core {
|
||||||
|
+namespace Network {
|
||||||
|
class AnnounceMultiplayerSession;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -35,7 +35,7 @@ class HostRoomWindow : public QDialog {
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit HostRoomWindow(QWidget* parent, QStandardItemModel* list,
|
||||||
|
- std::shared_ptr<Core::AnnounceMultiplayerSession> session);
|
||||||
|
+ std::shared_ptr<Network::AnnounceMultiplayerSession> session);
|
||||||
|
~HostRoomWindow();
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -50,7 +50,7 @@ class HostRoomWindow : public QDialog {
|
||||||
|
std::unique_ptr<Network::VerifyUser::Backend> CreateVerifyBackend(bool use_validation) const;
|
||||||
|
|
||||||
|
std::unique_ptr<Ui::HostRoom> ui;
|
||||||
|
- std::weak_ptr<Core::AnnounceMultiplayerSession> announce_multiplayer_session;
|
||||||
|
+ std::weak_ptr<Network::AnnounceMultiplayerSession> announce_multiplayer_session;
|
||||||
|
QStandardItemModel* game_list;
|
||||||
|
ComboBoxProxyModel* proxy;
|
||||||
|
Validation validation;
|
||||||
|
diff --git a/src/citra_qt/multiplayer/lobby.cpp b/src/citra_qt/multiplayer/lobby.cpp
|
||||||
|
index 40c0c1f398a..e335d5f851d 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/lobby.cpp
|
||||||
|
+++ b/src/citra_qt/multiplayer/lobby.cpp
|
||||||
|
@@ -24,7 +24,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Lobby::Lobby(QWidget* parent, QStandardItemModel* list,
|
||||||
|
- std::shared_ptr<Core::AnnounceMultiplayerSession> session)
|
||||||
|
+ std::shared_ptr<Network::AnnounceMultiplayerSession> session)
|
||||||
|
: QDialog(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint),
|
||||||
|
ui(std::make_unique<Ui::Lobby>()), announce_multiplayer_session(session) {
|
||||||
|
ui->setupUi(this);
|
||||||
|
diff --git a/src/citra_qt/multiplayer/lobby.h b/src/citra_qt/multiplayer/lobby.h
|
||||||
|
index 3befb9eae3c..985b82ba714 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/lobby.h
|
||||||
|
+++ b/src/citra_qt/multiplayer/lobby.h
|
||||||
|
@@ -11,7 +11,7 @@
|
||||||
|
#include <QStandardItemModel>
|
||||||
|
#include "citra_qt/multiplayer/validation.h"
|
||||||
|
#include "common/announce_multiplayer_room.h"
|
||||||
|
-#include "core/announce_multiplayer_session.h"
|
||||||
|
+#include "network/announce_multiplayer_session.h"
|
||||||
|
#include "network/network.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
@@ -30,7 +30,7 @@ class Lobby : public QDialog {
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Lobby(QWidget* parent, QStandardItemModel* list,
|
||||||
|
- std::shared_ptr<Core::AnnounceMultiplayerSession> session);
|
||||||
|
+ std::shared_ptr<Network::AnnounceMultiplayerSession> session);
|
||||||
|
~Lobby() override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -91,7 +91,7 @@ private slots:
|
||||||
|
LobbyFilterProxyModel* proxy{};
|
||||||
|
|
||||||
|
QFutureWatcher<AnnounceMultiplayerRoom::RoomList> room_list_watcher;
|
||||||
|
- std::weak_ptr<Core::AnnounceMultiplayerSession> announce_multiplayer_session;
|
||||||
|
+ std::weak_ptr<Network::AnnounceMultiplayerSession> announce_multiplayer_session;
|
||||||
|
QFutureWatcher<void>* watcher;
|
||||||
|
Validation validation;
|
||||||
|
};
|
||||||
|
diff --git a/src/citra_qt/multiplayer/state.cpp b/src/citra_qt/multiplayer/state.cpp
|
||||||
|
index 6fa6d18095b..9484a3eba17 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/state.cpp
|
||||||
|
+++ b/src/citra_qt/multiplayer/state.cpp
|
||||||
|
@@ -37,7 +37,7 @@ MultiplayerState::MultiplayerState(QWidget* parent, QStandardItemModel* game_lis
|
||||||
|
qRegisterMetaType<Network::RoomMember::State>();
|
||||||
|
qRegisterMetaType<Network::RoomMember::Error>();
|
||||||
|
qRegisterMetaType<Common::WebResult>();
|
||||||
|
- announce_multiplayer_session = std::make_shared<Core::AnnounceMultiplayerSession>();
|
||||||
|
+ announce_multiplayer_session = std::make_shared<Network::AnnounceMultiplayerSession>();
|
||||||
|
announce_multiplayer_session->BindErrorCallback(
|
||||||
|
[this](const Common::WebResult& result) { emit AnnounceFailed(result); });
|
||||||
|
connect(this, &MultiplayerState::AnnounceFailed, this, &MultiplayerState::OnAnnounceFailed);
|
||||||
|
diff --git a/src/citra_qt/multiplayer/state.h b/src/citra_qt/multiplayer/state.h
|
||||||
|
index 707efd5a448..3607d97af72 100644
|
||||||
|
--- a/src/citra_qt/multiplayer/state.h
|
||||||
|
+++ b/src/citra_qt/multiplayer/state.h
|
||||||
|
@@ -5,7 +5,7 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
-#include "core/announce_multiplayer_session.h"
|
||||||
|
+#include "network/announce_multiplayer_session.h"
|
||||||
|
#include "network/network.h"
|
||||||
|
|
||||||
|
class QStandardItemModel;
|
||||||
|
@@ -80,7 +80,7 @@ public slots:
|
||||||
|
QStandardItemModel* game_list_model = nullptr;
|
||||||
|
QAction* leave_room;
|
||||||
|
QAction* show_room;
|
||||||
|
- std::shared_ptr<Core::AnnounceMultiplayerSession> announce_multiplayer_session;
|
||||||
|
+ std::shared_ptr<Network::AnnounceMultiplayerSession> announce_multiplayer_session;
|
||||||
|
Network::RoomMember::State current_state = Network::RoomMember::State::Uninitialized;
|
||||||
|
bool has_mod_perms = false;
|
||||||
|
Network::RoomMember::CallbackHandle<Network::RoomMember::State> state_callback_handle;
|
||||||
|
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
|
||||||
|
index 133a33ef2c9..03638659029 100644
|
||||||
|
--- a/src/core/CMakeLists.txt
|
||||||
|
+++ b/src/core/CMakeLists.txt
|
||||||
|
@@ -1,7 +1,5 @@
|
||||||
|
add_library(core STATIC
|
||||||
|
3ds.h
|
||||||
|
- announce_multiplayer_session.cpp
|
||||||
|
- announce_multiplayer_session.h
|
||||||
|
arm/arm_interface.h
|
||||||
|
arm/dyncom/arm_dyncom.cpp
|
||||||
|
arm/dyncom/arm_dyncom.h
|
||||||
|
diff --git a/src/dedicated_room/CMakeLists.txt b/src/dedicated_room/CMakeLists.txt
|
||||||
|
index 2b91daa705f..9dbb6784caa 100644
|
||||||
|
--- a/src/dedicated_room/CMakeLists.txt
|
||||||
|
+++ b/src/dedicated_room/CMakeLists.txt
|
||||||
|
@@ -7,13 +7,13 @@ add_executable(citra-room
|
||||||
|
|
||||||
|
create_target_directory_groups(citra-room)
|
||||||
|
|
||||||
|
-target_link_libraries(citra-room PRIVATE common core network)
|
||||||
|
+target_link_libraries(citra-room PRIVATE common network)
|
||||||
|
if (ENABLE_WEB_SERVICE)
|
||||||
|
target_compile_definitions(citra-room PRIVATE -DENABLE_WEB_SERVICE)
|
||||||
|
target_link_libraries(citra-room PRIVATE web_service)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-target_link_libraries(citra-room PRIVATE cryptopp glad)
|
||||||
|
+target_link_libraries(citra-room PRIVATE cryptopp)
|
||||||
|
if (MSVC)
|
||||||
|
target_link_libraries(citra-room PRIVATE getopt)
|
||||||
|
endif()
|
||||||
|
diff --git a/src/dedicated_room/citra-room.cpp b/src/dedicated_room/citra-room.cpp
|
||||||
|
index 801249206a8..fe0da34c6d2 100644
|
||||||
|
--- a/src/dedicated_room/citra-room.cpp
|
||||||
|
+++ b/src/dedicated_room/citra-room.cpp
|
||||||
|
@@ -26,7 +26,7 @@
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
#include "common/scm_rev.h"
|
||||||
|
#include "common/string_util.h"
|
||||||
|
-#include "core/announce_multiplayer_session.h"
|
||||||
|
+#include "network/announce_multiplayer_session.h"
|
||||||
|
#include "network/network.h"
|
||||||
|
#include "network/network_settings.h"
|
||||||
|
#include "network/room.h"
|
||||||
|
@@ -342,7 +342,7 @@ int main(int argc, char** argv) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
std::cout << "Room is open. Close with Q+Enter...\n\n";
|
||||||
|
- auto announce_session = std::make_unique<Core::AnnounceMultiplayerSession>();
|
||||||
|
+ auto announce_session = std::make_unique<Network::AnnounceMultiplayerSession>();
|
||||||
|
if (announce) {
|
||||||
|
announce_session->Start();
|
||||||
|
}
|
||||||
|
diff --git a/src/network/CMakeLists.txt b/src/network/CMakeLists.txt
|
||||||
|
index cf920d8bc4e..1a9dfe836f6 100644
|
||||||
|
--- a/src/network/CMakeLists.txt
|
||||||
|
+++ b/src/network/CMakeLists.txt
|
||||||
|
@@ -1,4 +1,6 @@
|
||||||
|
add_library(network STATIC
|
||||||
|
+ announce_multiplayer_session.cpp
|
||||||
|
+ announce_multiplayer_session.h
|
||||||
|
network.cpp
|
||||||
|
network.h
|
||||||
|
network_settings.cpp
|
||||||
|
diff --git a/src/core/announce_multiplayer_session.cpp b/src/network/announce_multiplayer_session.cpp
|
||||||
|
similarity index 99%
|
||||||
|
rename from src/core/announce_multiplayer_session.cpp
|
||||||
|
rename to src/network/announce_multiplayer_session.cpp
|
||||||
|
index 9ae373192a3..56c02a041f7 100644
|
||||||
|
--- a/src/core/announce_multiplayer_session.cpp
|
||||||
|
+++ b/src/network/announce_multiplayer_session.cpp
|
||||||
|
@@ -15,7 +15,7 @@
|
||||||
|
#include "web_service/announce_room_json.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-namespace Core {
|
||||||
|
+namespace Network {
|
||||||
|
|
||||||
|
// Time between room is announced to web_service
|
||||||
|
static constexpr std::chrono::seconds announce_time_interval(15);
|
||||||
|
@@ -161,4 +161,4 @@ void AnnounceMultiplayerSession::UpdateCredentials() {
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
-} // namespace Core
|
||||||
|
+} // namespace Network
|
||||||
|
diff --git a/src/core/announce_multiplayer_session.h b/src/network/announce_multiplayer_session.h
|
||||||
|
similarity index 98%
|
||||||
|
rename from src/core/announce_multiplayer_session.h
|
||||||
|
rename to src/network/announce_multiplayer_session.h
|
||||||
|
index 5647972d0d8..97fd1e5b38f 100644
|
||||||
|
--- a/src/core/announce_multiplayer_session.h
|
||||||
|
+++ b/src/network/announce_multiplayer_session.h
|
||||||
|
@@ -15,10 +15,8 @@
|
||||||
|
#include "common/thread.h"
|
||||||
|
|
||||||
|
namespace Network {
|
||||||
|
-class Room;
|
||||||
|
-}
|
||||||
|
|
||||||
|
-namespace Core {
|
||||||
|
+class Room;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instruments AnnounceMultiplayerRoom::Backend.
|
||||||
|
@@ -93,4 +91,4 @@ class AnnounceMultiplayerSession : NonCopyable {
|
||||||
|
void AnnounceMultiplayerLoop();
|
||||||
|
};
|
||||||
|
|
||||||
|
-} // namespace Core
|
||||||
|
+} // namespace Network
|
|
@ -0,0 +1,27 @@
|
||||||
|
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp
|
||||||
|
index 46401bc19..218a0a519 100644
|
||||||
|
--- a/src/common/file_util.cpp
|
||||||
|
+++ b/src/common/file_util.cpp
|
||||||
|
@@ -12,7 +12,6 @@
|
||||||
|
#include "common/common_paths.h"
|
||||||
|
#include "common/file_util.h"
|
||||||
|
#include "common/logging/log.h"
|
||||||
|
-#include "core/settings.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
@@ -718,12 +717,8 @@ void SetUserPath(const std::string& path) {
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
- g_paths.emplace(UserPath::SDMCDir, !Settings::values.sdmc_dir.empty()
|
||||||
|
- ? Settings::values.sdmc_dir
|
||||||
|
- : user_path + SDMC_DIR DIR_SEP);
|
||||||
|
- g_paths.emplace(UserPath::NANDDir, !Settings::values.nand_dir.empty()
|
||||||
|
- ? Settings::values.nand_dir
|
||||||
|
- : user_path + NAND_DIR DIR_SEP);
|
||||||
|
+ g_paths.emplace(UserPath::SDMCDir, user_path + SDMC_DIR DIR_SEP);
|
||||||
|
+ g_paths.emplace(UserPath::NANDDir, user_path + NAND_DIR DIR_SEP);
|
||||||
|
g_paths.emplace(UserPath::SysDataDir, user_path + SYSDATA_DIR DIR_SEP);
|
||||||
|
// TODO: Put the logs in a better location for each OS
|
||||||
|
g_paths.emplace(UserPath::LogDir, user_path + LOG_DIR DIR_SEP);
|
Reference in New Issue