diff options
| author | Tannin <devnull@localhost> | 2013-10-25 14:49:42 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2013-10-25 14:49:42 +0200 |
| commit | 8c0b309bdee2527fab66b00b34171ef18f5055bf (patch) | |
| tree | 9e0d4000573046df8ae7e060b665365f71ed74a6 /src | |
| parent | bc7c42dbe8dd85a77a2eb8c1d094c77aa5cb7b1f (diff) | |
- Option to choose edition of the game. Currently only relevant for FO3 because FO3 GOTY is its own app
- applications that aren't in the executables list can again be started from the command line
- references to missing categories are now removed from mods
- bugfix: integrated fomod installer didn't update description and picture on some constellations of Windows version and theme
Diffstat (limited to 'src')
| -rw-r--r-- | src/ModOrganizer.pro | 20 | ||||
| -rw-r--r-- | src/main.cpp | 21 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 2 | ||||
| -rw-r--r-- | src/modinfo.cpp | 1 | ||||
| -rw-r--r-- | src/modlist.cpp | 14 | ||||
| -rw-r--r-- | src/settings.cpp | 2 | ||||
| -rw-r--r-- | src/shared/fallout3info.cpp | 11 | ||||
| -rw-r--r-- | src/shared/fallout3info.h | 3 | ||||
| -rw-r--r-- | src/shared/falloutnvinfo.cpp | 2 | ||||
| -rw-r--r-- | src/shared/falloutnvinfo.h | 2 | ||||
| -rw-r--r-- | src/shared/gameinfo.cpp | 6 | ||||
| -rw-r--r-- | src/shared/gameinfo.h | 3 | ||||
| -rw-r--r-- | src/shared/oblivioninfo.cpp | 2 | ||||
| -rw-r--r-- | src/shared/oblivioninfo.h | 2 | ||||
| -rw-r--r-- | src/shared/skyriminfo.cpp | 2 | ||||
| -rw-r--r-- | src/shared/skyriminfo.h | 2 | ||||
| -rw-r--r-- | src/version.rc | 4 |
17 files changed, 70 insertions, 29 deletions
diff --git a/src/ModOrganizer.pro b/src/ModOrganizer.pro index c8bfe6df..f35958f8 100644 --- a/src/ModOrganizer.pro +++ b/src/ModOrganizer.pro @@ -3,21 +3,21 @@ CONFIG += ordered SUBDIRS = bsatk \
- shared \
- uibase \
- organizer \
- hookdll \
- archive \
- helper \
+ shared \
+ uibase \
+ organizer \
+ hookdll \
+ archive \
+ helper \
plugins \
proxydll \
nxmhandler \
- BossDummy \
- pythonRunner \
- esptk
+ BossDummy \
+ pythonRunner \
+ esptk
hookdll.depends = shared
-organizer.depends = shared, uibase, plugins
+organizer.depends = shared uibase plugins
CONFIG(debug, debug|release) {
DESTDIR = outputd
diff --git a/src/main.cpp b/src/main.cpp index 59a4e837..90cf9e0e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -400,6 +400,27 @@ int main(int argc, char *argv[]) settings.setValue("gamePath", gamePath.toUtf8().constData()); } + int edition = 0; + if (settings.contains("game_edition")) { + edition = settings.value("game_edition").toInt(); + } else { + std::vector<std::wstring> editions = GameInfo::instance().getSteamVariants(); + if (editions.size() < 2) { + edition = 0; + } else { + SelectionDialog selection(QObject::tr("Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!)"), NULL); + int index = 0; + for (auto iter = editions.begin(); iter != editions.end(); ++iter) { + selection.addChoice(ToQString(*iter), "", index++); + } + if (selection.exec() == QDialog::Rejected) { + return -1; + } else { + settings.setValue("game_edition", selection.getChoiceData().toInt()); + } + } + } + qDebug("managing game at %s", qPrintable(QDir::toNativeSeparators(gamePath))); ExecutablesList executablesList; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 14bb3b59..cf8e355f 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2134,7 +2134,7 @@ HANDLE MainWindow::startApplication(const QString &executable, const QStringList } } catch (const std::runtime_error&) { qWarning("\"%s\" not set up as executable", executable.toUtf8().constData()); - return INVALID_HANDLE_VALUE; + binary = QFileInfo(executable); } } diff --git a/src/modinfo.cpp b/src/modinfo.cpp index 8d672675..faf8c95b 100644 --- a/src/modinfo.cpp +++ b/src/modinfo.cpp @@ -560,7 +560,6 @@ void ModInfoRegular::addNexusCategory(int categoryID) m_Categories.insert(CategoryFactory::instance().resolveNexusID(categoryID)); } - void ModInfoRegular::setIsEndorsed(bool endorsed) { if (m_EndorsedState != ENDORSED_NEVER) { diff --git a/src/modlist.cpp b/src/modlist.cpp index 18bbfd5a..0fdcf6fa 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -169,10 +169,16 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const int category = modInfo->getPrimaryCategory(); if (category != -1) { CategoryFactory &categoryFactory = CategoryFactory::instance(); - try { - return categoryFactory.getCategoryName(categoryFactory.getCategoryIndex(category)); - } catch (const std::exception &e) { - qCritical("failed to retrieve category name: %s", e.what()); + if (categoryFactory.categoryExists(category)) { + try { + return categoryFactory.getCategoryName(categoryFactory.getCategoryIndex(category)); + } catch (const std::exception &e) { + qCritical("failed to retrieve category name: %s", e.what()); + return QString(); + } + } else { + qWarning("category %d doesn't exist (may have been removed)", category); + modInfo->setCategory(category, false); return QString(); } } else { diff --git a/src/settings.cpp b/src/settings.cpp index 4f301b0c..36a4f1f8 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -159,7 +159,7 @@ bool Settings::automaticLoginEnabled() const QString Settings::getSteamAppID() const { - return m_Settings.value("Settings/app_id", ToQString(GameInfo::instance().getSteamAPPId())).toString(); + return m_Settings.value("Settings/app_id", ToQString(GameInfo::instance().getSteamAPPId(m_Settings.value("game_edition", 0).toInt()))).toString(); } QString Settings::getDownloadDirectory() const diff --git a/src/shared/fallout3info.cpp b/src/shared/fallout3info.cpp index 79dd90c9..c673fa1b 100644 --- a/src/shared/fallout3info.cpp +++ b/src/shared/fallout3info.cpp @@ -133,10 +133,17 @@ std::wstring Fallout3Info::getOMODExt() return L"fomod";
}
+std::vector<std::wstring> Fallout3Info::getSteamVariants() const
+{
+ return boost::assign::list_of(L"Regular")(L"Game Of The Year");
+}
-std::wstring Fallout3Info::getSteamAPPId()
+std::wstring Fallout3Info::getSteamAPPId(int variant) const
{
- return L"22300";
+ switch (variant) {
+ case 1: return L"22370";
+ default: return L"22300";
+ }
}
diff --git a/src/shared/fallout3info.h b/src/shared/fallout3info.h index 95a76471..0fa97d41 100644 --- a/src/shared/fallout3info.h +++ b/src/shared/fallout3info.h @@ -66,7 +66,8 @@ public: virtual std::wstring getReferenceDataFile();
virtual std::wstring getOMODExt();
- virtual std::wstring getSteamAPPId();
+ virtual std::vector<std::wstring> getSteamVariants() const;
+ virtual std::wstring getSteamAPPId(int variant = 0) const;
virtual std::wstring getSEName();
diff --git a/src/shared/falloutnvinfo.cpp b/src/shared/falloutnvinfo.cpp index 6da454ee..7d7f0098 100644 --- a/src/shared/falloutnvinfo.cpp +++ b/src/shared/falloutnvinfo.cpp @@ -136,7 +136,7 @@ std::wstring FalloutNVInfo::getOMODExt() }
-std::wstring FalloutNVInfo::getSteamAPPId()
+std::wstring FalloutNVInfo::getSteamAPPId(int) const
{
return L"22380";
}
diff --git a/src/shared/falloutnvinfo.h b/src/shared/falloutnvinfo.h index 2f6cba7b..3960c951 100644 --- a/src/shared/falloutnvinfo.h +++ b/src/shared/falloutnvinfo.h @@ -68,7 +68,7 @@ public: virtual std::wstring getReferenceDataFile();
virtual std::wstring getOMODExt();
- virtual std::wstring getSteamAPPId();
+ virtual std::wstring getSteamAPPId(int variant = 0) const;
virtual std::wstring getSEName();
diff --git a/src/shared/gameinfo.cpp b/src/shared/gameinfo.cpp index f74e52b4..00bb42fd 100644 --- a/src/shared/gameinfo.cpp +++ b/src/shared/gameinfo.cpp @@ -30,6 +30,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <shlobj.h>
#include <sstream>
#include <cassert>
+#include <boost/assign.hpp>
namespace MOShared {
@@ -184,6 +185,11 @@ bool GameInfo::requiresSteam() const return FileExists(getGameDirectory().append(L"\\steam_api.dll"));
}
+std::vector<std::wstring> GameInfo::getSteamVariants() const
+{
+ return boost::assign::list_of(L"Regular");
+}
+
std::wstring GameInfo::getLocalAppFolder() const
{
diff --git a/src/shared/gameinfo.h b/src/shared/gameinfo.h index 14f52f05..0221dd1b 100644 --- a/src/shared/gameinfo.h +++ b/src/shared/gameinfo.h @@ -137,7 +137,8 @@ public: virtual std::wstring getOMODExt() = 0;
- virtual std::wstring getSteamAPPId() = 0;
+ virtual std::vector<std::wstring> getSteamVariants() const;
+ virtual std::wstring getSteamAPPId(int variant = 0) const = 0;
virtual std::wstring getSEName() = 0;
diff --git a/src/shared/oblivioninfo.cpp b/src/shared/oblivioninfo.cpp index 7c6d5cbb..b3e65e59 100644 --- a/src/shared/oblivioninfo.cpp +++ b/src/shared/oblivioninfo.cpp @@ -243,7 +243,7 @@ std::wstring OblivionInfo::getOMODExt() }
-std::wstring OblivionInfo::getSteamAPPId()
+std::wstring OblivionInfo::getSteamAPPId(int) const
{
return L"22330";
}
diff --git a/src/shared/oblivioninfo.h b/src/shared/oblivioninfo.h index 13374aa3..6a9f56ca 100644 --- a/src/shared/oblivioninfo.h +++ b/src/shared/oblivioninfo.h @@ -64,7 +64,7 @@ public: virtual std::wstring getReferenceDataFile();
virtual std::wstring getOMODExt();
- virtual std::wstring getSteamAPPId();
+ virtual std::wstring getSteamAPPId(int variant = 0) const;
virtual std::wstring getSEName();
diff --git a/src/shared/skyriminfo.cpp b/src/shared/skyriminfo.cpp index 71d791f5..0a0dd98d 100644 --- a/src/shared/skyriminfo.cpp +++ b/src/shared/skyriminfo.cpp @@ -169,7 +169,7 @@ std::wstring SkyrimInfo::getOMODExt() }
-std::wstring SkyrimInfo::getSteamAPPId()
+std::wstring SkyrimInfo::getSteamAPPId(int) const
{
return L"72850";
}
diff --git a/src/shared/skyriminfo.h b/src/shared/skyriminfo.h index c5d31ff0..ae5ab81f 100644 --- a/src/shared/skyriminfo.h +++ b/src/shared/skyriminfo.h @@ -71,7 +71,7 @@ public: virtual std::wstring getReferenceDataFile();
virtual std::wstring getOMODExt();
- virtual std::wstring getSteamAPPId();
+ virtual std::wstring getSteamAPPId(int variant = 0) const;
virtual std::wstring getSEName();
diff --git a/src/version.rc b/src/version.rc index e71bc1b5..55de3798 100644 --- a/src/version.rc +++ b/src/version.rc @@ -1,7 +1,7 @@ #include "Winver.h"
-#define VER_FILEVERSION 1,0,5,0
-#define VER_FILEVERSION_STR "1,0,5,0\0"
+#define VER_FILEVERSION 1,0,7,0
+#define VER_FILEVERSION_STR "1,0,7,0\0"
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
|
