summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/fallout3info.cpp10
-rw-r--r--src/shared/fallout3info.h1
-rw-r--r--src/shared/falloutnvinfo.cpp15
-rw-r--r--src/shared/falloutnvinfo.h1
-rw-r--r--src/shared/gameinfo.cpp8
-rw-r--r--src/shared/gameinfo.h3
-rw-r--r--src/shared/oblivioninfo.cpp16
-rw-r--r--src/shared/oblivioninfo.h1
-rw-r--r--src/shared/skyriminfo.cpp16
-rw-r--r--src/shared/skyriminfo.h1
10 files changed, 70 insertions, 2 deletions
diff --git a/src/shared/fallout3info.cpp b/src/shared/fallout3info.cpp
index 1808d1d9..68fd515e 100644
--- a/src/shared/fallout3info.cpp
+++ b/src/shared/fallout3info.cpp
@@ -112,6 +112,16 @@ std::vector<std::wstring> Fallout3Info::getVanillaBSAs()
(L"Fallout - Misc.bsa");
}
+std::vector<std::wstring> Fallout3Info::getDLCPlugins()
+{
+ return boost::assign::list_of (L"ThePitt.esm")
+ (L"Anchorage.esm")
+ (L"BrokenSteel.esm")
+ (L"PointLookout.esm")
+ (L"Zeta.esm")
+ ;
+}
+
std::vector<std::wstring> Fallout3Info::getIniFileNames()
{
return boost::assign::list_of(L"fallout.ini")(L"falloutprefs.ini");
diff --git a/src/shared/fallout3info.h b/src/shared/fallout3info.h
index 9575103b..e9a818e2 100644
--- a/src/shared/fallout3info.h
+++ b/src/shared/fallout3info.h
@@ -58,6 +58,7 @@ public:
virtual std::vector<std::wstring> getPrimaryPlugins();
virtual std::vector<std::wstring> getVanillaBSAs();
+ virtual std::vector<std::wstring> getDLCPlugins();
// file name of this games ini (no path)
virtual std::vector<std::wstring> getIniFileNames();
diff --git a/src/shared/falloutnvinfo.cpp b/src/shared/falloutnvinfo.cpp
index e7e747e2..366c72c3 100644
--- a/src/shared/falloutnvinfo.cpp
+++ b/src/shared/falloutnvinfo.cpp
@@ -113,6 +113,21 @@ std::vector<std::wstring> FalloutNVInfo::getVanillaBSAs()
(L"Fallout - Misc.bsa");
}
+std::vector<std::wstring> FalloutNVInfo::getDLCPlugins()
+{
+ return boost::assign::list_of (L"DeadMoney.esm")
+ (L"HonestHearts.esm")
+ (L"OldWorldBlues.esm")
+ (L"LonesomeRoad.esm")
+ (L"GunRunnersArsenal.esm")
+ (L"CaravanPack.esm")
+ (L"ClassicPack.esm")
+ (L"MercenaryPack.esm")
+ (L"TribalPack.esm")
+ ;
+}
+
+
std::vector<std::wstring> FalloutNVInfo::getIniFileNames()
{
return boost::assign::list_of(L"fallout.ini")(L"falloutprefs.ini");
diff --git a/src/shared/falloutnvinfo.h b/src/shared/falloutnvinfo.h
index 8767fdb0..e6f6b5d0 100644
--- a/src/shared/falloutnvinfo.h
+++ b/src/shared/falloutnvinfo.h
@@ -60,6 +60,7 @@ public:
virtual std::vector<std::wstring> getPrimaryPlugins();
virtual std::vector<std::wstring> getVanillaBSAs();
+ virtual std::vector<std::wstring> getDLCPlugins();
// file name of this games ini (no path)
virtual std::vector<std::wstring> getIniFileNames();
diff --git a/src/shared/gameinfo.cpp b/src/shared/gameinfo.cpp
index b580a226..ebeff55a 100644
--- a/src/shared/gameinfo.cpp
+++ b/src/shared/gameinfo.cpp
@@ -222,7 +222,13 @@ std::wstring GameInfo::getSpecialPath(LPCWSTR name) const
throw windows_error("failed to look up special folder", errorcode);
}
- return temp;
+ WCHAR temp2[MAX_PATH];
+ // try to expand variables in the path, if any
+ if (::ExpandEnvironmentStringsW(temp, temp2, MAX_PATH) != 0) {
+ return temp2;
+ } else {
+ return temp;
+ }
}
} // namespace MOShared
diff --git a/src/shared/gameinfo.h b/src/shared/gameinfo.h
index 89c9402d..69cd38f6 100644
--- a/src/shared/gameinfo.h
+++ b/src/shared/gameinfo.h
@@ -130,6 +130,9 @@ public:
virtual std::vector<std::wstring> getVanillaBSAs() = 0;
+ // get a set of esp/esm files that are part of known dlcs
+ virtual std::vector<std::wstring> getDLCPlugins() = 0;
+
// file name of this games ini file(s)
virtual std::vector<std::wstring> getIniFileNames() = 0;
diff --git a/src/shared/oblivioninfo.cpp b/src/shared/oblivioninfo.cpp
index d8daa0f7..85f31042 100644
--- a/src/shared/oblivioninfo.cpp
+++ b/src/shared/oblivioninfo.cpp
@@ -117,6 +117,22 @@ std::vector<std::wstring> OblivionInfo::getVanillaBSAs()
}
+std::vector<std::wstring> OblivionInfo::getDLCPlugins()
+{
+ return boost::assign::list_of (L"DLCShiveringIsles.esp")
+ (L"Knights.esp")
+ (L"DLCFrostcrag.esp")
+ (L"DLCSpellTomes.esp")
+ (L"DLCMehrunesRazor.esp")
+ (L"DLCOrrery.esp")
+ (L"DLCSpellTomes.esp")
+ (L"DLCThievesDen.esp")
+ (L"DLCVileLair.esp")
+ (L"DLCHorseArmor.esp")
+ ;
+}
+
+
std::vector<std::wstring> OblivionInfo::getIniFileNames()
{
return boost::assign::list_of(L"oblivion.ini")(L"oblivionprefs.ini");
diff --git a/src/shared/oblivioninfo.h b/src/shared/oblivioninfo.h
index ba27aa40..f9c8fa47 100644
--- a/src/shared/oblivioninfo.h
+++ b/src/shared/oblivioninfo.h
@@ -56,6 +56,7 @@ public:
virtual std::vector<std::wstring> getPrimaryPlugins();
virtual std::vector<std::wstring> getVanillaBSAs();
+ virtual std::vector<std::wstring> getDLCPlugins();
// file name of this games ini (no path)
virtual std::vector<std::wstring> getIniFileNames();
diff --git a/src/shared/skyriminfo.cpp b/src/shared/skyriminfo.cpp
index bf7500e6..00cdd4d0 100644
--- a/src/shared/skyriminfo.cpp
+++ b/src/shared/skyriminfo.cpp
@@ -144,7 +144,18 @@ std::vector<std::wstring> SkyrimInfo::getVanillaBSAs()
(L"Skyrim - Meshes.bsa")
(L"Skyrim - Sounds.bsa")
(L"Skyrim - Voices.bsa")
- (L"Skyrim - VoicesExtra.bsa");
+ (L"Skyrim - VoicesExtra.bsa");
+}
+
+std::vector<std::wstring> SkyrimInfo::getDLCPlugins()
+{
+ return boost::assign::list_of (L"Dawnguard.esm")
+ (L"Dragonborn.esm")
+ (L"HearthFires.esm")
+ (L"HighResTexturePack01.esp")
+ (L"HighResTexturePack02.esp")
+ (L"HighResTexturePack03.esp")
+ ;
}
std::vector<std::wstring> SkyrimInfo::getIniFileNames()
@@ -210,7 +221,9 @@ void SkyrimInfo::createProfile(const std::wstring &directory, bool useDefaults)
if (!FileExists(target)) {
std::wostringstream source;
source << getLocalAppFolder() << "\\Skyrim\\plugins.txt";
+printf("copy %ls -> %ls\n", source.str().c_str(), target.c_str());
if (!::CopyFileW(source.str().c_str(), target.c_str(), true)) {
+printf("failed to copy plugins.txt!");
HANDLE file = ::CreateFileW(target.c_str(), GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
::CloseHandle(file);
}
@@ -305,4 +318,5 @@ std::vector<ExecutableInfo> SkyrimInfo::getExecutables()
return result;
}
+
} // namespace MOShared
diff --git a/src/shared/skyriminfo.h b/src/shared/skyriminfo.h
index 438beb41..61fb3fa2 100644
--- a/src/shared/skyriminfo.h
+++ b/src/shared/skyriminfo.h
@@ -63,6 +63,7 @@ public:
virtual std::vector<std::wstring> getPrimaryPlugins();
virtual std::vector<std::wstring> getVanillaBSAs();
+ virtual std::vector<std::wstring> getDLCPlugins();
// file name of this games ini (no path)
virtual std::vector<std::wstring> getIniFileNames();