-
Notifications
You must be signed in to change notification settings - Fork 149
Add multi-mod install and conflict resolution support #272
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
base: master
Are you sure you want to change the base?
Conversation
Implemented batch installation of Fantome/zip/wad mods, including drag-and-drop and multi-file dialog support. Added conflict detection with user prompt to skip or overwrite existing mods. Updated QML and backend to handle new signals, slots, and dialog for conflict resolution.
moonshadow565
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't test this but it looks sane to me. Cmake version hack i do not like. It also removes functionality of importing extracted .wads which i would prefer not be removed in case someone is using it.
| FetchContent_GetProperties(miniz) | ||
| if(NOT miniz_POPULATED) | ||
| FetchContent_Populate(miniz) | ||
| # Patch the CMakeLists.txt to use a newer minimum version |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure i like this, something like https://stackoverflow.com/a/73725257 would be more acceptable.
Or alternatively maybe bumping miniz version up if this is also fixed upstream ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not quite sure to be very honest, I'm not too professional at this type of coding yet, but will see what I can do.
| const QString filePath = it.next(); | ||
| // If the file is inside a directory named "chromas", skip it. | ||
| // QDirIterator always uses '/', so we only need to check for that separator. | ||
| if (filePath.contains("/chromas/", Qt::CaseInsensitive)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bit more information on this. Where is this directory coming from? Why do we need to remove it? Can there be false positives named chromas that should not be removed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When doing auto import for a whole folder if you have chromas there then the importing process would take a day or two as in my case I had a folder with so many skin mods and chromas so I preferred to do it part manually, so it just looks for folder that contains chroma in the name and exclude it.
| continue; | ||
| } | ||
|
|
||
| QDirIterator it(path, nameFilters, QDir::Files, QDirIterator::Subdirectories); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is missing handling for .wad.client/.wad directories. Those should not be iterated, they should be treated as files and passed to mod-tools as such.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm sure I haven't removed the wad file handling, will have to take a look sound's like I made a mistake and wouldn't show in my end as I was mainly testing with zips
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the inputs will take another look and fix those.
Implemented batch installation of Fantome/zip/wad mods, including drag-and-drop and multi-file dialog support. Added conflict detection with user prompt to skip or overwrite existing mods. Updated QML and backend to handle new signals, slots, and dialog for conflict resolution.