From 8ab4d172d61b7a24cab5019cf053021850a0f709 Mon Sep 17 00:00:00 2001 From: Collecting Date: Fri, 16 Jan 2026 08:29:34 +0000 Subject: [PATCH] create: mod_service.h Signed-off-by: Collecting --- src/citron/mod_manager/mod_service.h | 49 ++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/citron/mod_manager/mod_service.h diff --git a/src/citron/mod_manager/mod_service.h b/src/citron/mod_manager/mod_service.h new file mode 100644 index 000000000..23d7619bc --- /dev/null +++ b/src/citron/mod_manager/mod_service.h @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: Copyright 2026 citron Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include +#include +#include +#include +#include +#include + +class QNetworkAccessManager; + +namespace ModManager { + +struct ModPatch { + QString name; + QString type; // "exefs" or "romfs" + QString rel_path; + QStringList files; +}; + +struct ModUpdateInfo { + QString title_id; + // Maps Version String (e.g. "2.0.0") to its list of patches + std::map> version_patches; +}; + +class ModService : public QObject { + Q_OBJECT +public: + explicit ModService(QObject* parent = nullptr); + ~ModService(); + + // Removed the version parameter so it fetches everything + void FetchAvailableMods(const QString& title_id); + +signals: + void ModsAvailable(const ModUpdateInfo& info); + void Error(const QString& message); + +private: + std::unique_ptr network_manager; + const QString MANIFEST_URL = QStringLiteral("https://raw.githubusercontent.com/CollectingW/Citron-Mods/main/manifest.json"); +}; + +} // namespace ModManager