    {-# 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
      { UIOptions -> [(KM, CmdTriple)]
    uCommands         :: [(K.KM, CmdTriple)]
      , UIOptions -> [(Int, (Text, Text))]
    uHeroNames        :: [(Int, (Text, Text))]
      , UIOptions -> Bool
    uVi               :: Bool
      , UIOptions -> Bool
    uLeftHand         :: Bool
      , UIOptions -> Text
    uChosenFontset    :: Text
      , UIOptions -> Double
    uAllFontsScale    :: Double
      , UIOptions -> FullscreenMode
    uFullscreenMode   :: FullscreenMode
      , UIOptions -> Int
    uhpWarningPercent :: Int
      , UIOptions -> Int
    uMsgWrapColumn    :: X
      , UIOptions -> Int
    uHistoryMax       :: Int
      , UIOptions -> Double
    uMaxFps           :: Double
      , UIOptions -> Bool
    uNoAnim           :: Bool
      , UIOptions -> [String]
    uOverrideCmdline  :: [String]
      , UIOptions -> [(Text, FontDefinition)]
    uFonts            :: [(Text, FontDefinition)]
      , UIOptions -> [(Text, FontSet)]
    uFontsets         :: [(Text, FontSet)]
      , UIOptions -> [(String, Color)]
    uMessageColors    :: [(String, Color.Color)]
      }
      deriving (Int -> UIOptions -> ShowS
    [UIOptions] -> ShowS
    UIOptions -> String
    (Int -> UIOptions -> ShowS)
    -> (UIOptions -> String)
    -> ([UIOptions] -> ShowS)
    -> Show UIOptions
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> UIOptions -> ShowS
    showsPrec :: Int -> UIOptions -> ShowS
    $cshow :: UIOptions -> String
    show :: UIOptions -> String
    $cshowList :: [UIOptions] -> ShowS
    showList :: [UIOptions] -> ShowS
    Show, (forall x. UIOptions -> Rep UIOptions x)
    -> (forall x. Rep UIOptions x -> UIOptions) -> Generic UIOptions
    forall x. Rep UIOptions x -> UIOptions
    forall x. UIOptions -> Rep UIOptions x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cfrom :: forall x. UIOptions -> Rep UIOptions x
    from :: forall x. UIOptions -> Rep UIOptions x
    $cto :: forall x. Rep UIOptions x -> UIOptions
    to :: forall x. Rep UIOptions x -> UIOptions
    Generic)

    instance NFData UIOptions

    instance Binary UIOptions