-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for MS Store's Fallout 4 DLC
The Microsoft Store installs Fallout 4 DLC to separate directories outside of the game's install path. The relative paths are fixed: users cannot customise the install paths (aside from the folder within which all games are installed on a drive), and renaming the DLC's path or its Content directory causes an error when trying to launch the game. The game scans these additional data paths similarly to how it scans the main data path: it doesn't only load the DLC plugins from their data paths, it will find non-DLC plugins in them, and DLC plugins can be moved between them and still be detected. The same is true for BA2 files and other resources. To support these separate directories: - GameInterface::IsValidPlugin, GameInterface::LoadPlugins and GameInterface::SortPlugins() now take plugin paths instead of plugin filenames. Relative paths are interpreted as relative to the data path, so the change is backwards-compatible, and absolute paths are used as given. - LoadPlugins now checks that all filenames in the given paths are unique, which was previously required but not enforced. - When scanning for archives, LOOT now scans the DLC data paths before scanning the game data path. - libloadorder and loot-condition-interpreter have been updated to support the MS Store Fallout 4 DLC paths. libloadorder has built-in support for the Fallout 4 DLCs specifically, so does not need to be initialised, while loot-condition-interpreter's support is not specific and so it's now passed a list of data paths that includes the Fallout 4 DLC paths when appropriate. When listing the DLC paths together with the game's main data path, the order they're listed in matches the order in which the game scans them for plugins, with the game stopping at the first directory in which it finds a file it's looking for. This introduces detection of whether or not a game install comes from the Microsoft Store: like LOOT and libloadorder, libloot detects this by looking for an appxmanifest.xml file in the install path. The new Game::SetAdditionalDataPaths() method may be added to GameInterface in the future: that hasn't been done yet because adding it will break the ABI.
- Loading branch information
Showing
12 changed files
with
397 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.