Add mod selection mod.
Includes some contributions by rada and sanderd17.
Add mod selection mod.
Description
Details
Event TimelineComment Actions See discussion in rP20552.
Comment Actions
Thanks for cleaning this up, breaking parts of it, not caring about invalidating possibly not obvious parts of the design instead of figuring out or even just asking to clarify that, then being smug about having done so. Have fun mainta^W breaking this more.
Comment Actions Enabling a mod when a filter is active does not remove the mod from the list of unenabled mods, thus misleads the user into believing the mod is not activated. Then after some multiple clicks on enabling it will trigger a debug breakpoint in the engine complaining about OOB access. Comment Actions Sadly won't be able to "request verification" on this one. For the time being I'm removed elexis from the auditor list to take this out of the queue, feel free to raise again if there are outstanding issues. Comment Actions GetAvailableMods is too slow (see rP21823), but in a way that's rather subtle, and only on release copies. We create a new Vfs, and populate it with mods. There are two major features of the Vfs that contribute to making this bad:
In this case, we'll load the mod mod, then the public mod to the same path, loading a bunch of mod stuff, but it's light enough to mostly not matter, then the user mod (from rP13472), which will populate the root of public, which finds the .zip (in Releases, which is why we missed A23's lag before the release), loads it up entirely, and takes too long. I don't think we actually needed a VFS for this. We're trying to read a single json file. However, that .json file doesn't always exist physically, since it's sometimes in the .zip. _but_, because of an unrelated bug that I can't find a trace of (see #4027), we install a mod.json on windows. So we could just generalise that. IMO the simplest solution would be to work VFS-less and open the mod.json that's on the side, since we need it on windows for an unknown bug. Then this should go back to always taking a relatively trivial amount of time. |