content: {-# LANGUAGE DeriveGeneric #-}
  -- | UI client options specified in the config file.
  module Game.LambdaHack.Client.UI.UIOptions
    ( UIOptions(..)
    ) where
  
  import Prelude ()
  
  import Game.LambdaHack.Core.Prelude
  
  import Control.DeepSeq
  import Data.Binary
  import GHC.Generics (Generic)
  
  import           Game.LambdaHack.Client.UI.HumanCmd
  import qualified Game.LambdaHack.Client.UI.Key as K
  import           Game.LambdaHack.Common.ClientOptions (FullscreenMode)
  import           Game.LambdaHack.Common.Misc
  import qualified Game.LambdaHack.Definition.Color as Color
  import           Game.LambdaHack.Definition.Defs
  
  -- | Options that affect the UI of the client, specified in the config file.
  -- More documentation is in the default config file.
  data UIOptions = UIOptions
    { uCommands         :: [(K.KM, CmdTriple)]
    , uHeroNames        :: [(Int, (Text, Text))]
    , uVi               :: Bool
    , uLeftHand         :: Bool
    , uChosenFontset    :: Text
    , uAllFontsScale    :: Double
    , uFullscreenMode   :: FullscreenMode
    , uhpWarningPercent :: Int
    , uMsgWrapColumn    :: X
    , uHistoryMax       :: Int
    , uMaxFps           :: Double
    , uNoAnim           :: Bool
    , uOverrideCmdline  :: [String]
    , uFonts            :: [(Text, FontDefinition)]
    , uFontsets         :: [(Text, FontSet)]
    , uMessageColors    :: [(String, Color.Color)]
    }
    deriving (Show, Generic)
  
  instance NFData UIOptions
  
  instance Binary UIOptions
  