all-is-cubes icon indicating copy to clipboard operation
all-is-cubes copied to clipboard

Preferences system

Open kpreid opened this issue 3 years ago • 3 comments

We need a preferences system; an abstraction which persists, to config directory or browser storage, all the usual things:

  • graphics options
  • audio options when those exist
  • keybindings and other input options like look sensitivity
  • et cetera for all-is-cubes
  • platform-specific or library-user-defined extensions that work in the same style

Note that it is not sufficient to just serialize the GraphicsOptions and so on, because GraphicsOptions contains several enums which have numeric parameters (such as ExposureOption::Fixed) which should be remembered in a preferences system even if they're not currently active. The GraphicsOptions schema is optimized for unambiguously telling the renderer what to do, which is not aligned with editability. I expect that non-graphics options will have similar considerations.

(Despite this consideration, all-is-cubes-desktop currently does serialize GraphicsOptions. But it also doesn't persist edits yet — just creates a config file you can edit on disk. And web has no corresponding feature.)

kpreid avatar Oct 17 '22 04:10 kpreid

A thought: perhaps extensibility of what kinds of settings can be passed around should work via Provider? — oh, never mind, still unstable.

kpreid avatar Nov 28 '22 15:11 kpreid