{-# LANGUAGE DeriveGeneric #-} -- | Options that affect the behaviour of the client. module Game.LambdaHack.Client.ClientOptions ( ClientOptions(..), defClientOptions ) where import Prelude () import Game.LambdaHack.Core.Prelude import Data.Binary import GHC.Generics (Generic) -- | Options that affect the behaviour of the client (but not game rules). data ClientOptions = ClientOptions { sgtkFontFamily :: Maybe Text -- ^ Font family to use for the GTK main game window. , sdlFontFile :: Maybe Text -- ^ Font file to use for the SDL2 main game window. , sdlScalableSizeAdd :: Maybe Int -- ^ Pixels to add to map cells on top of scalable font max glyph height. -- To get symmetric padding, add an even number. , sdlBitmapSizeAdd :: Maybe Int -- ^ Pixels to add to map cells on top of fixed font max glyph height. -- To get symmetric padding, add an even number. , sscalableFontSize :: Maybe Int -- ^ Font size to use for the main game window. , slogPriority :: Maybe Int -- ^ How much to log (e.g., from SDL). 1 is all, 5 is errors, the default. , smaxFps :: Maybe Int -- ^ Maximal frames per second. -- This is better low and fixed, to avoid jerkiness and delays -- that tell the player there are many intelligent enemies on the level. -- That's better than scaling AI sofistication down based -- on the FPS setting and machine speed. , sdisableAutoYes :: Bool -- ^ Never auto-answer all prompts, even if under AI control. , snoAnim :: Maybe Bool -- ^ Don't show any animations. , snewGameCli :: Bool -- ^ Start a new game, overwriting the save file. , sbenchmark :: Bool -- ^ Don't create directories and files and show time stats. , stitle :: Maybe Text , sfontDir :: Maybe FilePath , ssavePrefixCli :: String -- ^ Prefix of the save game file name. , sfrontendTeletype :: Bool -- ^ Whether to use the stdout/stdin frontend. , sfrontendNull :: Bool -- ^ Whether to use null (no input/output) frontend. , sfrontendLazy :: Bool -- ^ Whether to use lazy (output not even calculated) frontend. , sdbgMsgCli :: Bool -- ^ Show clients' internal debug messages. , sstopAfterSeconds :: Maybe Int , sstopAfterFrames :: Maybe Int , sprintEachScreen :: Bool , sexposePlaces :: Bool , sexposeItems :: Bool , sexposeActors :: Bool } deriving (Show, Eq, Generic) instance Binary ClientOptions -- | Default value of client options. defClientOptions :: ClientOptions defClientOptions = ClientOptions { sgtkFontFamily = Nothing , sdlFontFile = Nothing , sdlScalableSizeAdd = Nothing , sdlBitmapSizeAdd = Nothing , sscalableFontSize = Nothing , slogPriority = Nothing , smaxFps = Nothing , sdisableAutoYes = False , snoAnim = Nothing , snewGameCli = False , sbenchmark = False , stitle = Nothing , sfontDir = Nothing , ssavePrefixCli = "" , sfrontendTeletype = False , sfrontendNull = False , sfrontendLazy = False , sdbgMsgCli = False , sstopAfterSeconds = Nothing , sstopAfterFrames = Nothing , sprintEachScreen = False , sexposePlaces = False , sexposeItems = False , sexposeActors = False }