module Game.LambdaHack.Content.RuleKind
( RuleContent(..), emptyRuleContent, makeData
#ifdef EXPOSE_INTERNAL
, validateSingle
#endif
) where
import Prelude ()
import Game.LambdaHack.Core.Prelude
import Data.Version
import Game.LambdaHack.Definition.Defs
data RuleContent = RuleContent
{ rtitle :: Text
, rXmax :: X
, rYmax :: Y
, rfontDir :: FilePath
, rexeVersion :: Version
, rcfgUIName :: FilePath
, rcfgUIDefault :: String
, rwriteSaveClips :: Int
, rleadLevelClips :: Int
, rscoresFile :: FilePath
, rnearby :: Int
, rstairWordCarried :: [Text]
, rsymbolProjectile :: Char
}
emptyRuleContent :: RuleContent
emptyRuleContent = RuleContent
{ rtitle = ""
, rXmax = 0
, rYmax = 0
, rfontDir = ""
, rexeVersion = makeVersion []
, rcfgUIName = ""
, rcfgUIDefault = ""
, rwriteSaveClips = 0
, rleadLevelClips = 0
, rscoresFile = ""
, rnearby = 0
, rstairWordCarried = []
, rsymbolProjectile = '0'
}
validateSingle :: RuleContent -> [Text]
validateSingle _ = []
makeData :: RuleContent -> RuleContent
makeData rc =
let singleOffenders = validateSingle rc
in assert (null singleOffenders
`blame` "Rule Content not valid"
`swith` singleOffenders)
rc