Fix the server loading and the client receiving invalid requirements #2086
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This makes the server fail to load the ruleset when an invalid enum-based requirement is specified. The LT79 and LeagueB2 rulesets have one and will stop loading. Since this is the server doing more error checking instead of ignoring invalid values, this is acceptable. We should remove the offending reqs from the games repo.
A client counterpart of the server-side checks is also implemented (duplicating a lot of code in the process...), so the client can now detect when the server sends invalid requirements. It prints a warning and sets the requirement to an invalid value that it won't attempt to interpret later on. This allows forward compatibility with future server versions.
Tested by trying to load the LT79 ruleset, loading the
classic
ruleset successfully, and connecting to broken LeagueB2 where the server has loaded a couple invalid requirements.Closes #2032.