Plan for full UI color customization

Jump to: navigation, search
  1. identify all colors used in the ui (done)
  2. create constants for those colors (done, see
  3. add a level of abstraction (done, uilook() array)
  4. populate uilook() with defaults matching the old hard-code ui colors (done, see getui sub in common.bas)
  5. replace all hard-coded colors with uilook() access (done)
    • This is important not just for game, but also for custom, because of master palette replacement
    • How many subs and functions accept colors for their arguments? (textcolor, edgeprint, rectangle, fuzzyrect, edgebox)
    • An easy way to find the many places where uilook() is not used is to import a new master palette, and the browse around through various menus looking for things with unexpected colors
  6. define a lump, something like UICOLORS.BIN to store customized colors. Each record would define all the ui colors, and the number of records would always be the same as the number of 256 color palettes (1 by default, but you can add more) (done)
  7. write code to save and load uilook to and from uicolors.bin, and update master palette loading to load it too (done)
  8. Write an editor in custom that lets you change colors. (done)
    • Add previews for (reasonably) most of the UI colors (nearly done)
  9. write code that can automatically search for best possible matches for your currently selected ui colors whenever you import a new master palette. (done)
    • write code that lets you copy a set of ui colors from one 256 color palette to another (for synchronizing changes to your ui color scheme between multiple already-imported palettes) (done)
  10. (Maybe) Write a plotscript interface for getting and (temporarily) setting uicolors

See Also[edit]