226 Commits
Author SHA1 Message Date
Oliver Hamlet e9321ae544 Update changelog and version for 0.23.1 release 2024-08-24 11:28:30 +01:00
Oliver Hamlet 945d6b5a7a Throw esplugin errors as system_error exceptions
Instead of FileAccessError, so that callers can use the exception's code to distinguish between different causes.
2024-08-24 10:02:35 +01:00
Oliver Hamlet f3eabb639b Update changelog and version for 0.23.0 release 2024-06-29 22:09:55 +01:00
Oliver Hamlet f6d4cea461 Rename "override plugin" to "update plugin"
To match the terminology used by Starfield's Creation Kit.
2024-06-28 19:21:21 +01:00
Oliver Hamlet 46c19a4a7a Add medium plugin methods to PluginInterface 2024-06-28 19:21:00 +01:00
Oliver Hamlet 03baecec4c Update changelog and version for 0.22.4 release 2024-05-03 07:15:26 +01:00
Oliver Hamlet b23e33144e Update changelog and version for 0.22.3 release 2023-12-06 19:02:23 +00:00
Oliver Hamlet 8463e9ee7c Update changelog and version for 0.22.2 release 2023-11-25 17:05:41 +00:00
Oliver Hamlet 2614e02dbf Update version and changelog for v0.22.1 release 2023-10-06 14:49:16 +01:00
Oliver Hamlet 8a21b8321b Update version and changelogs for v0.22.0 release 2023-09-29 17:15:38 +01:00
Oliver Hamlet b549b00b28 Add support for Starfield
Starfield adds a new type of plugin that I'm calling an override plugin,
which does not use up a load order slot when active, and a plugin cannot
be light and override at the same time. It also increases the BA2
version number, though the differences are not relevant to libloot's
usage, and loads BA2s from plugins differently.

The latest libloadorder distinguishes between plugins that are
implicitly active (i.e. they're active despite not being listed in
plugins.txt) and those that are made to load in certain positions by the
game.
2023-09-28 23:01:15 +01:00
Oliver Hamlet 2408a7b3ba Remove SimpleMessage
It's no longer used by LOOT.
2023-09-12 19:56:53 +01:00
Oliver Hamlet 0a7efcb4d3 Update version and changelogs for v0.21 release 2023-08-30 19:57:06 +01:00
Oliver Hamlet 356eb0243f Don't add .ghost file extensions in plugin class
Instead assume that paths passed in are correct, and then trim the
.ghost extension if present before setting the plugin name.
2023-08-23 19:48:20 +01:00
Oliver Hamlet 46f28eef07 Add Get/SetAdditionalDataPaths to GameInterface 2023-08-23 19:48:20 +01:00
Oliver Hamlet 1a8eec19de Swap some std::string in API with std::filesystem::path
Specifically the functions that were changed in 0.19.4 to accept paths
without changing their type signatures to avoid breaking compatibility.
2023-08-23 19:48:19 +01:00
Oliver Hamlet 6c590381e5 Fix doc comment 2023-08-18 18:40:07 +01:00
Oliver Hamlet 0eee8066b7 Add const GetType and GetDatabase methods to GameInterface 2023-08-18 17:28:39 +01:00
Oliver Hamlet 74805a3bc6 Update version and changelog for v0.19.4 release 2023-05-06 21:19:54 +01:00
Oliver Hamlet d7f5a518e1 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.
2023-05-06 21:16:49 +01:00
Oliver Hamlet c5efd9e5c2 Update version and changelog for v0.19.3 release 2023-03-18 21:56:15 +00:00
Oliver Hamlet 3a070420c8 Update version and changelog for v0.19.2 release 2023-01-13 21:27:03 +00:00
Oliver Hamlet 6c1d7dc57f Update version and changelog for v0.19.1 release 2023-01-09 19:13:26 +00:00
Oliver Hamlet 938d5bce57 Update version and changelog for v0.19.0 release 2023-01-07 19:21:35 +00:00
Oliver Hamlet 614a8d306c Add missing doxygen doc comment 2023-01-07 19:21:34 +00:00