diff --git a/LauncherWindow.cpp b/LauncherWindow.cpp deleted file mode 100644 index f195140..0000000 --- a/LauncherWindow.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include "LauncherWindow.h" -#include -#include -#include -#include -#include -#include -#include - -LauncherWindow::LauncherWindow(QWidget *parent) - : QMainWindow(parent) -{ - setupUI(); - networkManager = new QNetworkAccessManager(this); - connect(networkManager, &QNetworkAccessManager::finished, this, &LauncherWindow::onDownloadFinished); -} - -LauncherWindow::~LauncherWindow() -{ -} - -void LauncherWindow::setupUI() -{ - QWidget *centralWidget = new QWidget(this); - setCentralWidget(centralWidget); - - QVBoxLayout *layout = new QVBoxLayout(centralWidget); - - usernameLineEdit = new QLineEdit(this); - usernameLineEdit->setPlaceholderText("Введите ваш никнейм"); - layout->addWidget(usernameLineEdit); - - launchButton = new QPushButton("Запустить Minecraft", this); - connect(launchButton, &QPushButton::clicked, this, &LauncherWindow::launchMinecraft); - layout->addWidget(launchButton); - - modsFolderButton = new QPushButton("Открыть папку с модами", this); - connect(modsFolderButton, &QPushButton::clicked, this, &LauncherWindow::openModsFolder); - layout->addWidget(modsFolderButton); - - downloadModsButton = new QPushButton("Загрузить моды с GitHub", this); - connect(downloadModsButton, &QPushButton::clicked, this, &LauncherWindow::downloadMods); - layout->addWidget(downloadModsButton); - - setWindowTitle("Minecraft Launcher"); - resize(300, 200); -} - -QString LauncherWindow::getMinecraftPath() -{ -#ifdef Q_OS_WIN - return QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/.minecraft"; -#elif defined(Q_OS_MAC) - return QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/Library/Application Support/minecraft"; -#else - return QStandardPaths::writableLocation(QStandardPaths::HomeLocation) + "/.minecraft"; -#endif -} - -void LauncherWindow::launchMinecraft() -{ - QString username = usernameLineEdit->text(); - if (username.isEmpty()) { - QMessageBox::warning(this, "Ошибка", "Пожалуйста, введите никнейм."); - return; - } - - // Это упрощенная команда запуска. Для современных версий Minecraft - // может потребоваться более сложная команда с указанием версии, - // аутентификацией и путями к библиотекам. - // Здесь мы используем гипотетическую команду для демонстрации. - QString command = "java -jar \"" + getMinecraftPath() + "/versions/1.19.2/1.19.2.jar\" --username " + username; - - QProcess *process = new QProcess(this); - process->startDetached(command); -} - -void LauncherWindow::openModsFolder() -{ - QString modsPath = getMinecraftPath() + "/mods"; - QDir modsDir(modsPath); - if (!modsDir.exists()) { - modsDir.mkpath("."); - } - QDesktopServices::openUrl(QUrl::fromLocalFile(modsPath)); -} - -void LauncherWindow::downloadMods() -{ - // URL для загрузки ZIP-архива с модами из репозитория GitHub - // Замените на URL вашего репозитория - QUrl url("https://github.com/user/repo/archive/refs/heads/main.zip"); - QNetworkRequest request(url); - networkManager->get(request); -} - -void LauncherWindow::onDownloadFinished(QNetworkReply *reply) -{ - if (reply->error()) { - QMessageBox::critical(this, "Ошибка загрузки", "Не удалось загрузить моды: " + reply->errorString()); - return; - } - - QFile *file = new QFile(getMinecraftPath() + "/mods/mods.zip"); - if (file->open(QIODevice::WriteOnly)) { - file->write(reply->readAll()); - file->close(); - QMessageBox::information(this, "Загрузка завершена", "Моды успешно загружены в папку mods. Распакуйте архив."); - } else { - QMessageBox::critical(this, "Ошибка", "Не удалось сохранить архив с модами."); - } - delete file; - reply->deleteLater(); -} \ No newline at end of file