3645 Commits
Author SHA1 Message Date
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
Oliver Hamlet 1a8f1a0e0a Update fmt to 11.1.3 2025-02-01 19:25:19 +00:00
Oliver Hamlet afdafa492e Fix typo in doc comment 2025-02-01 19:25:19 +00:00
Oliver Hamlet 0fd1b82fb4 Remove test for a logging callback that goes out of scope
I've never understood why this appeared to work, but I've seen this test fail twice due to SEH exceptions in the past week, so it's better off removed. Nothing should be relying on this working (and LOOT doesn't).
2025-01-31 18:06:17 +00:00
Oliver Hamlet 6a32b63c6d Add a gamePath field to CommonGameTestFixture 2025-01-29 20:43:30 +00:00
Oliver Hamlet 553a189b9a Replace mention of BOOST_ROOT 2025-01-26 16:16:02 +00:00
Oliver Hamlet 794e796de8 Fix initialising GroupsPathVisitor::finishedVertices_ 2025-01-21 20:54:35 +00:00
Oliver Hamlet af28706210 Introduce ComparableFilename abstraction
It's a typedef that's std::wstring on Windows and icu::UnicodeString on Linux, to simplify calling CompareFilenames() with cached pre-converted strings.
2025-01-21 20:54:35 +00:00
Oliver Hamlet c3921497e6 Minor refactor of group edge code 2025-01-21 19:56:25 +00:00
Oliver Hamlet 1532c932af Update sorting doc to reflect groups changes 2025-01-18 22:29:50 +00:00
Oliver Hamlet 858a82ba50 Prioritise DFSes from the group graph roots with the longest paths
This means that when there's a potential cycle, it's more likely that an earlier group will have its effect applied than a later group.
2025-01-18 22:28:14 +00:00