Save and Read Warnings With Correct Subclass, not "Other" #2727
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.
The Warning class has five subclasses: LargeAOA, HighSpeedDeployment, EventAfterLanding, MissingMotor, and Other.
At present, when a Warning is saved to a .ork file, only its descriptive text, UUID, and priority are saved (regardless of subclass). When it is read, the text is used to create a Warning.Other containing this text. The basic problem with #2694 was that if two warnings with identical text were saved in a .ork, one could be lost when reading it back.
This PR saves Warnings from each subclass as that subclass, and then reconstructs it when reading the .ork. The <warning> element is replaced with a <warning type="LargeAOA"> or other subclass type; those that have parameters save the parameters as well.
There are also several fixes to adding warnings to the WarningSet.
Note: after merging this PR, all 23.09 (and earlier) .ork files can be read without error. Some files saved by 24.12 beta 01 that contain warnings will have warnings about unknown attributes as an "id" attribute has been renamed "warnid". It seems to me this minor breakage (remember, it actually successfully reads it just with the warning) is acceptable for files saved by a beta.
Note 2: MissingMotor Warnings are never saved to the .ork file, so reading and writing them is not supported by this PR.
Fixes #2694