Draft: Protobuf-based plugin format
Initial implementation of #5929.
Only the BirthSign record is included for simplicity. The plan is to introduce the other records incrementally, but that will take significantly more time.
I decided to go with converting old-style records into new-style records on the fly during loading, as it simplified a few things.
Note that some of the changes made to the Store
and related classes are more complicated than they would be if this was fully implemented (due to the split between the StoreProto and the StoreESM structures (not to be confused with the ESMStore...)), and could eventually be cleaned up.
The new plugin format has been set up to use the omw2
file extension to work with the GameContentLoader
interface. I'm not great with names, and this, along with many of the other new names introduced, could certainly be renamed.
I've included a couple of example plugins in json format, as well as a short python script for converting them into the binary format (just something I threw together quickly. It would be useful to eventually include an proper tool to do such conversions).
I've also been keeping some notes (included in a markdown file. See here. Unfortunately there's no consistent way of linking to it in the diff for the MR) on additional changes which may need to be made, both for individual records, and for more complicated systems (identifiers, localization) which I haven't started tackling yet. This information could go into a collection of issues, but I wasn't sure that creating a bunch of issues discussing low-level details is a good idea while so much of this is still up in the air.