Settings interface
This is a rather early draft, although it mostly works.
Things to change/improve before this is ready:
-
Currently multiple events rely on the storage synchronization happening before they arrive. I doubt we can guarantee that long term in multiplayer, we should probably have an explicit way to handle storage changes (which is more efficient than a :wasChanged check in onUpdate). -
The names and descriptions are set once in a global script, which prevents localizing them per-player. Maybe we should pass the localization file path and keys instead. -
storage sections return table keys as read only by default, which forces some inefficient :asCopy() and :set() calls. I'm not sure if there is a better solution here. -
Rendering of the setting list is hacky for now, blocked by #6646 (closed) -
Setting groups should have display names and descriptions as well, rather than just keys. Settings names and keys should be different concepts as well, probably. -
Better rendering styles (blocked by !1702 (merged))
Edited by uramer