Fix failed registration of SyncWorkers for MultiplayerCompat#4509
Closed
perkinslr wants to merge 8 commits intoDevelopmentfrom
Closed
Fix failed registration of SyncWorkers for MultiplayerCompat#4509perkinslr wants to merge 8 commits intoDevelopmentfrom
perkinslr wants to merge 8 commits intoDevelopmentfrom
Conversation
|
You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-23265505660.zip |
|
You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-23266134629.zip |
|
You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-23276884057.zip |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Changes
Use templated registration of sync workers.
Use nullable types.
References
Covers the first half of #4505
Reasoning
The new mono runtime included with Rimworld is stricter about argument type matching with automatic delegate construction. This entirely breaks automatic SyncWorker registration via the
[SyncWorker]attribute, so we make that explicit.Additionally, the multiplayer API and internal representation use nullable types for the comps, which implies the method might get called with the ref parameter holding a
null. Enabling#nullablefor that section ensures all accesses must be checked.Alternatives
#4505 has a slightly alternative implementation, which explicitly passes the target type as an extra parameter. This is not required when using the templated version, but would be harmless to include. It also doesn't use nullable parameters.
Testing
Check tests you have performed: