Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coalesced XML Patching support in Alternates #255

Closed
lawliet89 opened this issue Jul 26, 2021 · 5 comments
Closed

Coalesced XML Patching support in Alternates #255

lawliet89 opened this issue Jul 26, 2021 · 5 comments
Labels
enhancement New feature or request Needs validation Feature is implemented and needs testing and/or feedback
Milestone

Comments

@lawliet89
Copy link

lawliet89 commented Jul 26, 2021

This is a feature request to add some kind of patching support for Coalesced XML files when definining alternates in altfile or altdlc.

A simple use case might be to allow users to opt in/out of installing a whole bunch of outfits/armor in a mod pack that has many of these available. (The UI in ME 2/3 might be painful to navigate when you have a lot of armor installed). In this case, the patch instruction would be useful to add/remove lines from BioGame.xml.

The current way to acheive this is to create a small finite number of possible combination and to generate mutually exclusive BioGame.xml files to be installed according to the user's selection.

This might require the creation of a bespoke file patching format/DSL. There's RFC7351 for XML files but it looks terrible and I don't think there's good library support. A more "generic" format might be the diff format that Git and friends use but that might be very unwieldly.

@Mgamerz
Copy link
Member

Mgamerz commented Sep 13, 2021

Sorry for no reply, have been taking a break for some time.

Might be able to leverage the ME3Tweaks ModMaker format for LE3, since they're identical. As for LE1/LE2... that's more difficult, but not impossible. Since it would be against a file already being installed, it'd be more RCW Mod Manager (install vanilla, then apply changes), rather than stack changes, which avoids the issue of conflicts.

Will look into this for the next version of Mod Manager.

@Mgamerz
Copy link
Member

Mgamerz commented Mar 10, 2022

While this won't make it into Mod Manager 8, it's still on the roadmap, some of the work has been done in the randomizer projects to help unify coalesced handling, which will be useful for these so I don't have to duplicate code for different games.

@Mgamerz Mgamerz added this to the 8.1 milestone Mar 10, 2022
@mirh
Copy link

mirh commented Mar 10, 2022

TIL LE uses xmls.
Also TIL xml is conceivably different from plain text.
https://github.com/Shoobx/xmldiff
https://github.com/amouat/diffxml
https://github.com/tkorenko/xdiff-c
https://stackoverflow.com/questions/7033020/xml-comparison-details-with-xdiff-and-net

Though I wonder if you couldn't just canonicalize them, and then use normal diffing formats/tools.
https://superuser.com/questions/79920/how-can-i-diff-two-xml-files/#81036

@Mgamerz
Copy link
Member

Mgamerz commented Apr 17, 2023

This feature request has been implemented and is now available for testing in Mod Manager 8.1 beta. The implementation is described on https://github.com/ME3Tweaks/ME3TweaksModManager/blob/staticfiles/documentation/configmerge.md. I'm leaving this issue open until it moves to stable. There was a ton of stuff that needed to be implemented to support this system properly.

@Mgamerz Mgamerz added enhancement New feature or request Needs validation Feature is implemented and needs testing and/or feedback labels Apr 25, 2023
@Mgamerz
Copy link
Member

Mgamerz commented May 11, 2023

Implemented into Mod Manager 8.1 Build 128

@Mgamerz Mgamerz closed this as completed May 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Needs validation Feature is implemented and needs testing and/or feedback
Projects
None yet
Development

No branches or pull requests

3 participants