-
Notifications
You must be signed in to change notification settings - Fork 126
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
fix: Multiple mod versions #758
base: main
Are you sure you want to change the base?
Conversation
…ove NSGetModDescription function
The two PRs are now ready for review, I'll gladly take any feedback. |
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.
Github is absolutely butchering this diff but I think code looks ok? Really hard to tell which code is actually new or not though.
Note: merging #826 first should ease reviewing this PR. |
Is any additional testing required? I should be available tomorrow at around 6:00 PM CDT |
Testing is necessary at all, yep! |
Associated mods PR: R2Northstar/NorthstarMods#824
Problem
Whether through manual installation or through mod auto-downloading, several versions of the same mod can be installed in Northstar, which currently does not handle this:
main_status.webm
This video was recorded using a profile with two Parkour mod versions,
v0.1.2
andv0.2.1
: note how the client does not distinguish between the two versions (version displayed in the UI is the same for both mods), and is not capable of (de)activating any of them.Description
New
enabledmods.json
formatSince the current
enabledmods.json
format does not allow for multiple mod versions, it has been reworked.With this PR, if "old" file format is detected,
enabledmods.json
will automatically be converted to "new" format.Old format
New format
(new
enabledmods.json
format also means mod managers will have to adapt)Squirrel-exposed functions
NSIsModEnabled(string modName)
is nowNSIsModEnabled(string modName, string modVersion)
;NSSetModEnabled(string modName, bool enabled)
is nowNSSetModEnabled(string modName, string modVersion, bool enabled)
;NSIsModRemote(string modName)
is nowNSIsModRemote(string modName, string modVersion)
;NSGetModVersionByModName(string modName)
is nowNSGetModVersions(string modName)
;NSGetModsInformation
method, that returns a list of mods with all associated information at once (and not only names likeNSGetModNames
currently does it);NSGetModsInformation
, the following functions were removed:NSGetModDescriptionByModName
,NSGetModDownloadLinkByModName
,NSGetModLoadPriority
,NSIsModRequiredOnClient
,NSGetModConvarsByModName
Result
multiple_versions_handling.webm
This video was recorded using a profile with two Parkour mod versions,
v0.1.2
andv0.2.1
: the client now differentiate the two versions (they both appear correctly on the UI), and is capable (de)activating any of them.Closes #670.
Closes #757.
Testing (manifesto format)
As this PR modifies your
enabledmods.json
file, you might want to copy it somewhere safe before testing.Test scenarios
Launch game:
with no
enabledmods.json
file at allenabledmods.json
should be created using new formatwith an invalid
enabledmods.json
file (not following JSON format)enabledmods.json
should be renamed intoenabledmods.json.old
enabledmods.json
should be created using new formatwith
enabledmods.json
using old formatenabledmods.json
file should be renamed intoenabledmods.json.old
enabledmods.json
should be recreated using new formatwith
enabledmods.json
using new formatenabledmods.json
configuration (you can check that in the Mods menu)TODOs
UnloadMods
methodGenerateModsConfigurationFile
method (since mod entries are already created ~L667)NSSetModEnabled(name,bool
toNSSetModEnabled(name,ver,bool
)