From 7c6247f4991db7ba021515294c5333dd16427f07 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Sat, 15 Apr 2023 20:02:10 +0300 Subject: [PATCH 1/3] Be less strict in detecting languages to catch different versions of H3 --- launcher/languages.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/languages.cpp b/launcher/languages.cpp index cf8e1b4dc..0009ac158 100644 --- a/launcher/languages.cpp +++ b/launcher/languages.cpp @@ -44,7 +44,7 @@ QString Languages::getHeroesDataLanguage() QString language = QString::fromStdString(settings["session"]["language"].String()); double deviation = settings["session"]["languageDeviation"].Float(); - if(deviation > 0.05) + if(deviation > 0.1) return QString(); return language; } From 49538b6e2d6a8dcfcede4c0ca408eceb8bb941af Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Sat, 15 Apr 2023 20:02:59 +0300 Subject: [PATCH 2/3] Handle case of user selecting "Data" folder of H3 install After all, we do ask user to select location of Heroes III data... --- launcher/firstLaunch/firstlaunch_moc.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/launcher/firstLaunch/firstlaunch_moc.cpp b/launcher/firstLaunch/firstlaunch_moc.cpp index 52aebfe1b..4f371cc54 100644 --- a/launcher/firstLaunch/firstlaunch_moc.cpp +++ b/launcher/firstLaunch/firstlaunch_moc.cpp @@ -264,6 +264,18 @@ void FirstLaunchView::copyHeroesData() if(!sourceRoot.exists()) return; + if (sourceRoot.dirName().compare("data", Qt::CaseInsensitive) == 0) + { + // We got Data folder. Possibly user selected "Data" folder of Heroes III install. Check whether valid data might exist 1 level above + + QStringList dirData = sourceRoot.entryList({"data"}, QDir::Filter::Dirs); + if (dirData.empty()) + { + // This is "Data" folder without any "Data" folders inside. Try to check for data 1 level above + sourceRoot.cdUp(); + } + } + QStringList dirData = sourceRoot.entryList({"data"}, QDir::Filter::Dirs); QStringList dirMaps = sourceRoot.entryList({"maps"}, QDir::Filter::Dirs); QStringList dirMp3 = sourceRoot.entryList({"mp3"}, QDir::Filter::Dirs); From f9173b556b30205bce3ac49e941691b41087a86e Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Sat, 15 Apr 2023 20:04:00 +0300 Subject: [PATCH 3/3] Do not block setup if language detection failed --- launcher/firstLaunch/firstlaunch_moc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/firstLaunch/firstlaunch_moc.cpp b/launcher/firstLaunch/firstlaunch_moc.cpp index 4f371cc54..10253d26e 100644 --- a/launcher/firstLaunch/firstlaunch_moc.cpp +++ b/launcher/firstLaunch/firstlaunch_moc.cpp @@ -190,6 +190,7 @@ void FirstLaunchView::heroesDataMissing() ui->labelDataCopy->setVisible(true); ui->labelDataFound->setVisible(false); + ui->pushButtonDataNext->setEnabled(true); if(hasVCMIBuilderScript) { @@ -218,6 +219,7 @@ void FirstLaunchView::heroesDataDetected() } ui->labelDataFound->setVisible(true); + ui->pushButtonDataNext->setEnabled(true); heroesLanguageUpdate(); } @@ -247,7 +249,6 @@ void FirstLaunchView::heroesLanguageUpdate() ui->labelDataFailure->setVisible(!success); ui->labelDataSuccess->setVisible(success); - ui->pushButtonDataNext->setEnabled(success); } void FirstLaunchView::forceHeroesLanguage(const QString & language)