Add generic GameArchiveHandler game feature for non-Bethesda archive support#181
Add generic GameArchiveHandler game feature for non-Bethesda archive support#181LegendMaster03 wants to merge 6 commits into
Conversation
Introduce GameArchiveHandler to delegate game-specific archive handling to game plugins (new header). The class provides an interface for detecting, extracting and optionally creating archives with a progress callback. Update IGameFeatures to include GameArchiveHandler in the base features tuple and add the new header to the src CMakeLists so it gets built. This lets non-Bethesda archives be owned by game plugins instead of uibase/bsatk.
Add build_uibase_only.bat to simplify local builds with VS Build Tools, CMake, Ninja and vcpkg. Move supportedArchiveNameFilters() implementation in GameArchiveHandler after legacy virtuals and add a comment explaining this preserves ABI slot order for supportsArchive()/extractArchive() with existing MO2 binaries. Modify details::BaseGameFeaturesP tuple in igamefeatures.h by removing the GameArchiveHandler* entry and reordering entries (GamePlugins* moved earlier) to reflect the current feature layout.
|
I'm not sure this makes sense as a game feature unless we assume depending on the game, the way we extract the same archive type changes, which I don't think it's true. This may make sense as a plugin type, with a way to access it through organizer core. |
|
The use case here is that archive handling is not always determined reliably by extension alone: XnGine |
This PR adds a generic GameArchiveHandler game feature to modorganizer-uibase so game plugins can provide their own archive extraction and archive creation logic without expanding bsatk with game-specific formats.
What this adds:
Why:
Intended use:
Tested with:
Notes: