{-# LANGUAGE NoImplicitPrelude #-} {-| This module defines the colors of every game element, except animations. -} module Imj.Game.Hamazed.Color ( -- * Ship colors shipColor , shipColors , shipColorSafe , shipColorsSafe -- * Numbers colors , numberColor -- * Materials colors , wallColors , airColors -- * UI colors , worldFrameColors , ammoColor , bracketsColor -- ** Text colors , configColors , messageColor , neutralMessageColor -- * Reexports , module Imj.Graphics.Color ) where import Imj.Prelude import Imj.Game.Hamazed.Level.Types import Imj.Graphics.Color configColors :: LayeredColor configColors = LayeredColor (gray 0) (gray 8) wallColors :: LayeredColor wallColors = LayeredColor (gray 0) (gray 3) airColors :: LayeredColor airColors = LayeredColor black white neutralMessageColor :: LayeredColor neutralMessageColor = onBlack $ gray 10 ammoColor :: Color8 Foreground ammoColor = gray 14 bracketsColor :: Color8 Foreground bracketsColor = worldFrameFgColor messageColor :: GameStops -> LayeredColor messageColor Won = onBlack $ rgb 4 3 1 messageColor (Lost _) = onBlack $ gray 6 shipColors :: LayeredColor shipColors = LayeredColor shipBgColor shipColor shipColorsSafe :: LayeredColor shipColorsSafe = LayeredColor shipBgColorSafe shipColorSafe shipColor :: Color8 Foreground shipColor = rgb 5 4 4 shipColorSafe :: Color8 Foreground shipColorSafe = rgb 5 0 0 shipBgColor :: Color8 Background shipBgColor = black shipBgColorSafe :: Color8 Background shipBgColorSafe = rgb 1 0 0 -- | Cycles through the 6 colors of the cube delimited in RGB space by -- (5,4,1) and (5,5,3). numberColor :: Int -> LayeredColor numberColor i = onBlack $ rgb r g b where r = 5 g = fromIntegral $ 4 + (0 + quot i 2) `mod` 2 -- [0..1] , slow changes b = fromIntegral $ 1 + (0 + quot i 1) `mod` 3 -- [0..2] , 2x faster changes worldFrameFgColor :: Color8 Foreground worldFrameFgColor = rgb 2 1 1 worldFrameColors :: LayeredColor worldFrameColors = LayeredColor black worldFrameFgColor