diff --git a/install/bitmaps/package.png b/install/bitmaps/package.png new file mode 100644 index 0000000000..2cdc043681 Binary files /dev/null and b/install/bitmaps/package.png differ diff --git a/radiantcore/settings/GameManager.cpp b/radiantcore/settings/GameManager.cpp index 93cd8a3f5e..c94e5240c8 100644 --- a/radiantcore/settings/GameManager.cpp +++ b/radiantcore/settings/GameManager.cpp @@ -4,6 +4,7 @@ #include "iregistry.h" #include "iradiant.h" #include "imessagebus.h" +#include "ifiletypes.h" #include "icommandsystem.h" #include "itextstream.h" #include "ifilesystem.h" @@ -24,6 +25,7 @@ #include "messages/GameConfigNeededMessage.h" #include +#include #include @@ -34,6 +36,7 @@ namespace { const char* const GKEY_PREFAB_FOLDER = "/mapFormat/prefabFolder"; const char* const GKEY_MAPS_FOLDER = "/mapFormat/mapFolder"; + const char* const PAK_ICON = "package.png"; } Manager::Manager() @@ -302,6 +305,13 @@ void Manager::initialiseVfs() vfs::VirtualFileSystem::ExtensionSet extensions; string::split(extensions, currentGame()->getKeyValue("archivetypes"), " "); + for (const auto& extension : extensions) + { + auto extLower = string::to_lower_copy(extension); + GlobalFiletypes().registerPattern(filetype::TYPE_PAK, + FileTypePattern(fmt::format(_("{0} File"), string::to_upper_copy(extension)), extLower, "*." + extLower, PAK_ICON)); + } + if (!_config.modPath.empty()) { // We have a MOD, register this directory first