Use the built-in XML parser to parse Arma profile files, this gives us much better access to the properties of the mods, making determining mod names and ids much easier. Part of this also means we can use a utility for comparing mod names, this allows mods with functionally-equivalent names to be interchangeable (Ex: "@CBA" == "CBA").
I also added the ability some basic logic for selecting a folder containing mods, this isn't perfect, but it means you can load multiple mods at once. The logic for this is really "dumb" for now, it just checks if the folder you selected contains at least one folder that starts with "@". It then assumes the folder you selected contains folders of mods, rather than being a mod folder itself.
Also added the ability to delete all mods, this isn't really necessary but was helpful when developing this 😅.
Dev Environment Change
Don't optimize Debug build, optimize Release build. This doesn't affect Debug really, but for Release it means you can run the app with the VS debugger and it won't crash attempting to load non-existent debug symbols (this is a bug in VS).
Motivation and Context
People (myself included) want the ability to load multiple mods at once. Personally, I also wanted the profile file parsing to be a bit smarter so I could use a single folder to contain my mods for both my dedicated server and my client, the smarter parsing and name compare allows for this.
How Has This Been Tested?
I've been using these changes for the last few months with no issues and have been able to iron-out things that were wrong over that time.
I've also added a unit test for testing the profile file parsing and the compare name functions.
Types of changes
[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
Checklist:
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation. (Maybe, not sure if the whole "the folder you select must have a least one mod folder that starts with the "@" character" should be documented...)
App Changes
Use the built-in XML parser to parse Arma profile files, this gives us much better access to the properties of the mods, making determining mod names and ids much easier. Part of this also means we can use a utility for comparing mod names, this allows mods with functionally-equivalent names to be interchangeable (Ex:
"@CBA" == "CBA"
).I also added the ability some basic logic for selecting a folder containing mods, this isn't perfect, but it means you can load multiple mods at once. The logic for this is really "dumb" for now, it just checks if the folder you selected contains at least one folder that starts with "@". It then assumes the folder you selected contains folders of mods, rather than being a mod folder itself.
Also added the ability to delete all mods, this isn't really necessary but was helpful when developing this 😅.
Dev Environment Change
Don't optimize Debug build, optimize Release build. This doesn't affect Debug really, but for Release it means you can run the app with the VS debugger and it won't crash attempting to load non-existent debug symbols (this is a bug in VS).
Motivation and Context
People (myself included) want the ability to load multiple mods at once. Personally, I also wanted the profile file parsing to be a bit smarter so I could use a single folder to contain my mods for both my dedicated server and my client, the smarter parsing and name compare allows for this.
How Has This Been Tested?
I've been using these changes for the last few months with no issues and have been able to iron-out things that were wrong over that time. I've also added a unit test for testing the profile file parsing and the compare name functions.
Types of changes
Checklist: