packages feed

4Blocks-0.2: Rendering/StatusArea.hs

module Rendering.StatusArea ( renderStatusArea )

where 

import Core.Colour
import Core.ColouredPoint
import Core.Game

import Rendering.RGB
import Rendering.Point
import Rendering.Block

import Graphics.Rendering.Cairo

renderStatusArea :: Colour -> RGB -> RGB -> Point -> Point -> Point -> Render ()
renderStatusArea fillWellColour shadowWellRGB outlineWellRGB offset blockSize (areaSizeX,areaSizeY)
  = do mapM_ (renderStatusAreaBlock shadowWellRGB outlineWellRGB offset blockSize (areaSizeX,areaSizeY)) statusAreaBlocks
    where statusAreaBlocksBottom = [(x,areaSizeY,fillWellColour) | x <- [0..areaSizeX]]
          statusAreaBlocksTop    = [(x,0,fillWellColour) | x <- [0..areaSizeX]]
          statusAreaBlocksRight  = [(areaSizeX,y,fillWellColour) | y <- [1..areaSizeY-1]]
          statusAreaBlocks = statusAreaBlocksBottom ++ 
                             statusAreaBlocksTop ++ 
                             statusAreaBlocksRight
  
renderStatusAreaBlock :: RGB -> RGB -> Point -> Point -> Point -> ColouredPoint -> Render ()
renderStatusAreaBlock shadowWellRGB outlineWellRGB (offsetX,offsetY) (blockSizeX,blockSizeY) (areaSizeX,areaSizeY) (x,y,c)
  = renderBlock (colourToRGB c) shadowWellRGB outlineWellRGB (actualX,actualY) (blockSizeX,blockSizeY)
    where actualX = renderingStatusAreaX x blockSizeX offsetX
          actualY = renderingStatusAreaY y blockSizeY offsetY
          
renderingStatusAreaX ::  Double -> Double -> Double -> Double
renderingStatusAreaX rawX blockSizeX offsetX = offsetX + (blockSizeX * rawX)

renderingStatusAreaY ::  Double -> Double -> Double -> Double
renderingStatusAreaY rawY blockSizeY offsetY = offsetY + (blockSizeY * rawY)