[WIP] Dependency Checker

Started by scuba156, July 13, 2017, 08:48:44 AM

Previous topic - Next topic

scuba156

I'm currently working on a dependency checker which checks for dependencies that are not enabled/installed and shows a dialog to help the user fix the issues.

The mod is a self contained DLL that gets bundled into any mod that requires other mods that are specified in a xml file in the about folder. There will be a Windows dotNet 3.5 application to help create the xml file easily for modders. Translations are available without any additional files, I will upload what needs translating soon, hopefully the community can help me with those.

I'm looking for a bit of help with the UI. I've attached a screenshot of what I have so far. I need to find some way to give the user a method to disable all the dependent mods for a single dependency. Currently I have a tooltip on the "Required by X mod(s)" text which shows all the mods that requires that dependency with text at the bottom of the tooltip saying "Click to disable the above mods" but that feels too hidden. I thought about giving the text a checkbox but I'm not sure on how intuitive it would be.

If anyone has any thoughts, suggestion, feedback, or can come up with a better design, I would love to hear it. Thanks!

[attachment deleted by admin due to age]

PixelBitZombie

So from the sounds of it, it would check if you enabled "X" mod and if X mod had X amount of extras to it, it would say hey add these or you may have problems? Or does it check incompatibility and tell you hey! These mods don't play nicely, might be wise to disable both or one of them? Maybe both? Either way it sounds nice, probably be a mod you'd want to have enabled all the time.
"When logic and proportion have fallen sloppy dead
And the White Knight is talking backwards
And the Red Queen's off with her head"


scuba156

Quote from: PixelBitZombie on July 13, 2017, 04:06:54 PM
So from the sounds of it, it would check if you enabled "X" mod and if X mod had X amount of extras to it, it would say hey add these or you may have problems? Or does it check incompatibility and tell you hey! These mods don't play nicely, might be wise to disable both or one of them? Maybe both? Either way it sounds nice, probably be a mod you'd want to have enabled all the time.
I've never been good at explaining things clearly. Option A. Option B would require a database of mods that I don't want to maintain. It's basically HugsLibChecker but can work with any mod. The problem with it being a standalone mod is it would then depend on the user having it enabled, bundling it with the mod that needs it makes sure that it always runs.

I need to finish this dependency checker asap for other mods of mine.

PixelBitZombie

Quote from: scuba156 on July 13, 2017, 04:33:12 PM
Option A. Option B would require a database of mods that I don't want to maintain.
Ah, well that is still useful either way.

B.) would be really nice but of course I don't know how difficult that is. Sounds maybe not difficult, just annoying and frustrating mixed with time consuming. Still would use this mod though. The latest Disease Mod doesn't describe load order or even tell you if you can add and not add some. The post for Disease describes this but I haven't played in a week so I forgot the order in which they needed to be added. Didn't want to go onto the internet lol.

(I realize this won't tell me the load order)
"When logic and proportion have fallen sloppy dead
And the White Knight is talking backwards
And the Red Queen's off with her head"



scuba156

Quote from: PixelBitZombie on July 13, 2017, 07:52:06 PM
Ah, well that is still useful either way.

B.) would be really nice but of course I don't know how difficult that is. Sounds maybe not difficult, just annoying and frustrating mixed with time consuming. Still would use this mod though. The latest Disease Mod doesn't describe load order or even tell you if you can add and not add some. The post for Disease describes this but I haven't played in a week so I forgot the order in which they needed to be added. Didn't want to go onto the internet lol.

(I realize this won't tell me the load order)
It can be done without a database of mods but it would add quite a bit of time to RimWorld's startup time IMO, not too long but long enough to be annoying to wait for every time. It's probably best to use an external tool for incompatibilities like the one Devon_v posted.

I have thought about adding loadBefore and loadAfter attributes in the xml to help modders with load order. Load order is a tricky one to fix automatically because not every mod can load in the same spot.

I've updated the UI. I've moved the "missing" label to the top right and the "required by" label to the bottom left. I've also made a unified fix button which will show a floatmenu with options like "subscribe", "enable mod" and "disable all mods required by this".

[attachment deleted by admin due to age]

UnlimitedHugs

I would turn the label into a button- "2 dependent mods"- or something like that. When clicked, it could show a small dialog that lists the mods and has two buttons: "Disable these mods" and "Close".

Also, it's not entirely obvious what the "Find" and "Fix" buttons do at first glance- perhaps some tooltips or more descriptive labels are in order.

Other than that, nice work :)
HugsLib - AllowTool - Remote Tech - Map Reroll - Defensive Positions: Github, Steam

scuba156

Quote from: UnlimitedHugs on July 14, 2017, 12:25:10 PM
I would turn the label into a button- "2 dependent mods"- or something like that. When clicked, it could show a small dialog that lists the mods and has two buttons: "Disable these mods" and "Close".
It *is* a button, just without the background being drawn. The idea was to list the mods in a tooltip and clicking the text would show a float menu with the option to disable them, but I like the dialog idea better. Then I could give each mod a separate checkbox for its active state in case a mod gets disabled by another dependency.

QuoteAlso, it's not entirely obvious what the "Find" and "Fix" buttons do at first glance- perhaps some tooltips or more descriptive labels are in order.

Other than that, nice work :)
Yeah I agree, I've struggled to find a good label for the "Find" button, maybe "Websites" would be better. And I think I will revert the "Fix" button to the way I had it in the first post, It's clearer to what it does and adds a bit of colour. I've put tooltips on all the buttons.