{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} module Dodge.Config.Data where import Data.Aeson import GHC.Generics import Control.Lens data Configuration = Configuration { _volume_master :: Float , _volume_sound :: Float , _volume_music :: Float , _wall_textured :: Bool , _cloud_shadows :: Bool , _resolution_factor :: Int -- ^ Higher values divide screen size, i.e. make the resolution worse , _windowX :: Float , _windowY :: Float , _windowPosX :: Int , _windowPosY :: Int , _rotate_to_wall :: Bool , _show_sound :: Bool , _debug_seconds_frame :: Bool , _debug_noclip :: Bool , _debug_cr_status :: Bool , _debug_view_boundaries :: Bool , _debug_pathing :: Bool } deriving (Generic, Show) makeLenses ''Configuration instance ToJSON Configuration where toEncoding = genericToEncoding defaultOptions instance FromJSON Configuration defaultConfig :: Configuration defaultConfig = Configuration { _volume_master = 1 , _volume_sound = 1 , _volume_music = 1 , _wall_textured = True , _cloud_shadows = True , _resolution_factor = 1 , _windowX = 800 , _windowY = 600 , _windowPosX = 0 , _windowPosY = 0 , _rotate_to_wall = True , _show_sound = False , _debug_seconds_frame = True , _debug_noclip = False , _debug_cr_status = False , _debug_view_boundaries = False , _debug_pathing = False }