4Blocks-0.2: Rendering/Brick.hs
module Rendering.Brick ( renderBrick )
where
import Rendering.RGB
import Rendering.Block
import Rendering.Point
import Core.ColouredPoint
import Core.Brick
import Core.Well
import Core.Game
import Graphics.Rendering.Cairo
renderBrick :: RGB -> RGB -> Point -> Point -> Game -> Render ()
renderBrick shadowWellRGB outlineWellRGB offset blockSize game
= do mapM_ (renderBrickBlock shadowWellRGB outlineWellRGB offset blockSize wellSize) brickBlocks
where brick = getBrickFromGame game
well = getWellFromGame game
brickBlocks = getBlocksFromBrick brick
wellSize = getSizeFromWell well
renderBrickBlock :: RGB -> RGB -> Point -> Point -> Point -> ColouredPoint -> Render ()
renderBrickBlock shadowWellRGB outlineWellRGB (offsetX,offsetY) (blockSizeX,blockSizeY) (wellSizeX,wellSizeY) (x,y,c)
= if ((y >= 0) && (y <= (wellSizeY - 3)))
then renderBlock (colourToRGB c) shadowWellRGB outlineWellRGB (actualX,actualY) (blockSizeX,blockSizeY)
else return ()
where actualX = renderingBrickX x blockSizeX offsetX
actualY = renderingBrickY y blockSizeY offsetY wellSizeY
renderingBrickX :: Double -> Double -> Double -> Double
renderingBrickX rawX blockSizeX offsetX = offsetX + (blockSizeX * rawX)
renderingBrickY :: Double -> Double -> Double -> Double -> Double
renderingBrickY rawY blockSizeY offsetY wellSizeY = offsetY + (blockSizeY * (wellSizeY-3)) - (blockSizeY * rawY)