3655 Commits
Author SHA1 Message Date
Oliver Hamlet 59901d2318 Update changelog and version for 0.25.4 0.25.4 2025-03-04 19:22:51 +00:00
Oliver Hamlet 2b46b92fa7 Fix group edges not getting added
When a vertex is unfinishable during a groups graph DFS, that means all the plugins in the path leading up to it are also unfinishable, and the comment I'd written in the code acknowledged that but the impl didn't.
2025-03-04 18:32:17 +00:00
Oliver Hamlet 55b341fc6c Fix misleading log message 2025-03-02 22:40:47 +00:00
Oliver Hamlet 3e6828dbde Simplify load order handling during sorting
The old approach made sense once, when the load order was the current load order and not the order that the plugins are given in, but that was a long time ago.
2025-03-02 22:40:47 +00:00
Oliver Hamlet 89a6dd8bb5 Make Game reference a const reference 2025-03-02 22:40:47 +00:00
Oliver Hamlet 49fc7910ea Cache plugins only after resolving record IDs
This means that if there's an issue while doing that you won't be left with half-loaded plugins.
2025-03-02 22:40:47 +00:00
Oliver Hamlet ccd4e41a99 Improve game cache locking
The mutex in the game cache wasn't very effective, instead move the
mutex out to the only place that concurrently writes to the cache.

This does mean that there isn't protection against calling
GameInterface::LoadPlugins() concurrently from multiple threads, but
no effort has been made to make libloot's public API thread-safe anyway.
2025-03-02 22:40:47 +00:00
Oliver Hamlet 3365a880e0 Remove some unused functions and variables 2025-03-02 22:40:26 +00:00
Oliver Hamlet d8997849d4 Fix Plugin::version_ field never being used 2025-03-02 22:40:08 +00:00
Oliver Hamlet 50aa0bbb55 Fix incorrect doc comment for SetLoggingCallback() 2025-03-02 22:39:55 +00:00
Oliver Hamlet db6d39bd93 Update changelog and version for 0.25.3 0.25.3 2025-02-23 16:10:35 +00:00
Oliver Hamlet 08f2544929 Update loot-condition-interpreter to v5.2.0 2025-02-20 18:03:52 +00:00
Oliver Hamlet a49075aaa9 Update changelog and version for 0.25.2 0.25.2 2025-02-10 09:48:32 +00:00
Oliver Hamlet 7b255f5329 Update libloadorder to 18.2.2 2025-02-10 09:48:32 +00:00
Oliver Hamlet f865167997 Update changelog and version for 0.25.1 0.25.1 2025-02-03 21:19:07 +00:00
Oliver Hamlet 50bd3ae35e Fix Plugin::IsValid() for .omwscripts plugins
Treat them as always valid when the game is OpenMW, because libloot doesn't care about their contents.
2025-02-03 21:08:09 +00:00
Oliver Hamlet 06937ffc83 Update changelog and version for 0.25.0 0.25.0 2025-02-02 21:32:30 +00:00
Oliver Hamlet c26b495c03 Update libloadorder to 18.2.1 2025-02-02 21:32:06 +00:00
Oliver Hamlet c8381617a8 Make plugin loading and sorting more granular
- Don't clear the cache in LoadPlugins()
- Don't load plugins in SortPlugins(), and make it take a vector of strings, not paths.
- Add a ClearLoadedPlugins() method to clear the loaded plugins cache.
- Remove IdentifyMainMasterFile()

Instead of calling IdentifyMainMasterFile(), callers can use LoadPlugins() to initially load all plugin headers only, then omit the main master file when calling LoadPlugins() to fully load plugins.
2025-02-02 18:01:19 +00:00
Oliver Hamlet d8a3604b0c Update changelog 2025-02-01 22:00:00 +00:00
Oliver Hamlet 52aa53c391 Make GameInterface::IdentifyMainMasterFile() take a path
This is a breaking change, but avoids the need for libloot to know anything about how to find the master file for OpenMW.
2025-02-01 21:54:35 +00:00
Oliver Hamlet 84c0cca534 Implement support for OpenMW
Most of the complexity is handled by libloadorder, but it's worth noting that:

- The game path is OpenMW's install path, not Morrowind's
- OpenMW doesn't force master-flagged plugins to load before others
- OpenMW doesn't provide a way to record the load order of inactive plugins
- .omwgame and .omwaddon plugins are equivalent to .esm and .esp respectively, while .omwscripts plugins have a completely different format with none of the metadata that libloot uses.
- OpenMW effectively relies on additional data paths to load Morrowind's (and mods') files, and the last directory listed that contains a given filename is used to load a file with that filename, with the main data path effectively being the first listed.
- I've disabled support for ghosted plugins for OpenMW because it makes the multi-path stuff more confusing and may not provide any benefit.
2025-02-01 21:36:03 +00:00
Oliver Hamlet 2d3192683f Update loot-condition-interpreter to 5.0.0 2025-02-01 19:25:48 +00:00
Oliver Hamlet b18b70f36a Update libloadorder to 18.2.0 2025-02-01 19:25:38 +00:00
Oliver Hamlet 2fa7b919ec Update spdlog to 1.15.1 2025-02-01 19:25:19 +00:00