module Game.LambdaHack.Content.CaveKind
( CaveKind(..), cvalidate
) where
import qualified Data.List as L
import Game.LambdaHack.PointXY
import Game.LambdaHack.Random
import Game.LambdaHack.Misc
data CaveKind = CaveKind
{ csymbol :: Char
, cname :: String
, cfreq :: Freqs
, cxsize :: X
, cysize :: Y
, cgrid :: RollDiceXY
, cminPlaceSize :: RollDiceXY
, cdarkChance :: RollDeep
, cauxConnects :: Rational
, cvoidChance :: Chance
, cnonVoidMin :: Int
, cminStairDist :: Int
, cdoorChance :: Chance
, copenChance :: Chance
, chiddenChance :: Chance
, citemNum :: RollDice
, cdefaultTile :: String
, ccorridorTile :: String
, cfillerTile :: String
, cdarkLegendTile :: String
, clitLegendTile :: String
, chiddenTile :: String
}
deriving Show
cvalidate :: [CaveKind] -> [CaveKind]
cvalidate = L.filter (\ CaveKind{ cgrid = RollDiceXY (gx, gy)
, cminPlaceSize = RollDiceXY (mx, my)
, ..
} ->
let (maxGridX, maxGridY) = (maxDice gx, maxDice gy)
(maxPlaceSizeX, maxPlaceSizeY) = (maxDice mx, maxDice my)
xborder = if maxGridX == 1 then 5 else 3
yborder = if maxGridX == 1 then 5 else 3
in length cname <= 25
&& (maxGridX * (xborder + maxPlaceSizeX) + 1 > cxsize ||
maxGridY * (yborder + maxPlaceSizeY) + 1 > cysize))