Files
minecraft-launcher/main.cpp
T

44 lines
1.8 KiB
C++

#include "localization.h"
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickStyle>
#ifdef LAUNCHER_HAS_WEBENGINE
#include <QtWebEngineQuick>
#endif
int main(int argc, char *argv[])
{
#ifdef LAUNCHER_HAS_WEBENGINE
// Вход в аккаунт Microsoft показывается встроенным окном браузера.
// Инициализация обязана идти до QGuiApplication: она выставляет общий
// контекст OpenGL, а после создания приложения это уже не действует.
QtWebEngineQuick::initialize();
#endif
QGuiApplication app(argc, argv);
// Язык интерфейса нужно знать до того, как QML вычислит первую привязку,
// поэтому каталог читается здесь, а не в LauncherBackend: тот появляется
// только вместе с движком. Каталог лежит в ресурсах — не прочитался, значит
// сломана сборка, и запускаться дальше незачем.
if (!Localization::instance().load())
return -1;
// Нативный стиль Windows игнорирует пользовательские contentItem/background
// и сыплет предупреждениями, а всё окно стилизовано вручную — берём Basic.
QQuickStyle::setStyle("Basic");
QQmlApplicationEngine engine;
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.loadFromModule("Minecraft_launcher", "Main");
return app.exec();
}