module Game.LambdaHack.Flavour
(
Flavour
,
zipPlain, zipFancy, darkCol, brightCol, stdCol, stdFlav
,
flavourToColor, flavourToName
) where
import qualified Data.List as L
import Data.Binary
import Game.LambdaHack.Color
data Flavour = Flavour
{ fancyName :: Bool
, baseColor :: Color
}
deriving (Show, Eq, Ord)
instance Binary Flavour where
put Flavour{..} = do
put fancyName
put baseColor
get = do
fancyName <- get
baseColor <- get
return Flavour{..}
zipPlain, zipFancy :: [Color] -> [Flavour]
zipPlain = L.map (Flavour False)
zipFancy = L.map (Flavour True)
darkCol, brightCol, stdCol :: [Color]
darkCol = [Red .. Cyan]
brightCol = [BrRed .. BrCyan]
stdCol = darkCol ++ brightCol
stdFlav :: [Flavour]
stdFlav = zipPlain stdCol ++ zipFancy stdCol
flavourToColor :: Flavour -> Color
flavourToColor Flavour{baseColor} = baseColor
flavourToName :: Flavour -> String
flavourToName Flavour{..} | fancyName = colorToFancyName baseColor
flavourToName Flavour{..} = colorToPlainName baseColor
colorToPlainName :: Color -> String
colorToPlainName Black = "black"
colorToPlainName Red = "red"
colorToPlainName Green = "green"
colorToPlainName Brown = "brown"
colorToPlainName Blue = "blue"
colorToPlainName Magenta = "purple"
colorToPlainName Cyan = "cyan"
colorToPlainName White = "ivory"
colorToPlainName BrBlack = "gray"
colorToPlainName BrRed = "coral"
colorToPlainName BrGreen = "lime"
colorToPlainName BrYellow = "yellow"
colorToPlainName BrBlue = "azure"
colorToPlainName BrMagenta = "pink"
colorToPlainName BrCyan = "aquamarine"
colorToPlainName BrWhite = "white"
colorToFancyName :: Color -> String
colorToFancyName Black = "smoky black"
colorToFancyName Red = "apple red"
colorToFancyName Green = "forest green"
colorToFancyName Brown = "mahogany"
colorToFancyName Blue = "royal blue"
colorToFancyName Magenta = "indigo"
colorToFancyName Cyan = "teal"
colorToFancyName White = "silver gray"
colorToFancyName BrBlack = "charcoal"
colorToFancyName BrRed = "salmon"
colorToFancyName BrGreen = "emerald"
colorToFancyName BrYellow = "amber"
colorToFancyName BrBlue = "sky blue"
colorToFancyName BrMagenta = "magenta"
colorToFancyName BrCyan = "turquoise"
colorToFancyName BrWhite = "ghost white"