packages feed

4Blocks-0.2: Rendering/Engine.hs

module Rendering.Engine ( renderOnePlayerScreen,
                          renderIntroScreen )
                         
where

import Core.Colour
import Core.Game
import Rendering.RGB
import Rendering.Game
import Rendering.Status
import Rendering.Intro
import Rendering.Background

import Graphics.Rendering.Cairo

-------------------------------------------------
-- Block Values
blockX :: Double
blockX = 20

blockY :: Double
blockY = 20

block :: (Double,Double)
block = (blockX,blockY)
-------------------------------------------------
-- Well Values
wellOffX :: Double
wellOffX = 20

wellOffY :: Double
wellOffY = 20

wellOff :: (Double,Double)
wellOff = (wellOffX,wellOffY)

wellBlockX :: Double
wellBlockX = 20

wellBlockY :: Double
wellBlockY = 20

wellBlock :: (Double,Double)
wellBlock = (wellBlockX,wellBlockY)
-------------------------------------------------
-- Status Values
statusAreaOffsetX :: Double
statusAreaOffsetX = wellOffX + (12 * blockX)

statusAreaOffsetY :: Double
statusAreaOffsetY = wellOffY

statusAreaOffset :: (Double,Double)
statusAreaOffset = (statusAreaOffsetX,statusAreaOffsetY)

statusAreaBlockX :: Double
statusAreaBlockX = wellBlockX

statusAreaBlockY :: Double
statusAreaBlockY = wellBlockY

statusAreaBlock :: (Double, Double)
statusAreaBlock = (statusAreaBlockX,statusAreaBlockY)

statusAreaSizeX :: Double
statusAreaSizeX = 10

statusAreaSizeY :: Double
statusAreaSizeY = 22

statusAreaSize :: (Double,Double)
statusAreaSize = (statusAreaSizeX,statusAreaSizeY)

statusNextOffsetX :: Double
statusNextOffsetX = wellOffX + (12.25 * blockX)

statusNextOffsetY :: Double
statusNextOffsetY = wellOffY + (19 * blockY)

statusNextOffset :: (Double,Double)
statusNextOffset = (statusNextOffsetX,statusNextOffsetY)

statusNextBlockX :: Double
statusNextBlockX = blockX / 2

statusNextBlockY :: Double
statusNextBlockY = blockY / 2

statusNextBlock :: (Double,Double)
statusNextBlock = (statusNextBlockX,statusNextBlockY)

statusTextOffsetX :: Double
statusTextOffsetX = wellOffX + (11.5 * blockX)

statusTextOffsetY :: Double
statusTextOffsetY = wellOffY + (3 * blockY)

statusTextOffset :: (Double,Double)
statusTextOffset = (statusTextOffsetX,statusTextOffsetY)

statusTextBlockX :: Double
statusTextBlockX = blockX

statusTextBlockY :: Double
statusTextBlockY = blockY

statusTextBlock :: (Double,Double)
statusTextBlock = (statusTextBlockX,statusTextBlockY)

-------------------------------------------------
-- Intro Values
introAreaOffsetX :: Double
introAreaOffsetX = wellOffX

introAreaOffsetY :: Double
introAreaOffsetY = wellOffY

introAreaOffset :: (Double,Double)
introAreaOffset = (introAreaOffsetX,introAreaOffsetY)

introAreaBlockX :: Double
introAreaBlockX = wellBlockX

introAreaBlockY :: Double
introAreaBlockY = wellBlockY

introAreaBlock :: (Double,Double)
introAreaBlock = (introAreaBlockX,introAreaBlockY)

introAreaSizeX :: Double
introAreaSizeX = 22

introAreaSizeY :: Double
introAreaSizeY = 22

introAreaSize :: (Double,Double)
introAreaSize = (introAreaSizeX,introAreaSizeY)

introTextOffsetX :: Double
introTextOffsetX = wellOffX + (1 * blockY)

introTextOffsetY :: Double
introTextOffsetY = wellOffY + (3 * blockY)

introTextOffset :: (Double,Double)
introTextOffset = (introTextOffsetX,introTextOffsetY)

introTextBlockX :: Double
introTextBlockX = blockX

introTextBlockY :: Double
introTextBlockY = blockY

introTextBlock :: (Double,Double)
introTextBlock = (introTextBlockX,introTextBlockY)
-------------------------------------------------
-- Tetris Colours
outlineWellRGB :: RGB
outlineWellRGB = (0.9, 0.9, 0.9)

shadowWellRGB :: RGB
shadowWellRGB = (0, 0, 0)

fillWellColour :: Colour
fillWellColour = Grey_Colour 
-------------------------------------------------
renderOnePlayerScreen :: Game -> Render ()
renderOnePlayerScreen game
  = do save
       renderBackground
       renderGame shadowWellRGB outlineWellRGB wellOff wellBlock game
       renderStatus fillWellColour shadowWellRGB outlineWellRGB statusAreaOffset statusAreaBlock statusAreaSize statusNextOffset statusNextBlock statusTextOffset statusTextBlock game
       restore
       
renderIntroScreen :: Render ()
renderIntroScreen
  = do save
       renderBackground
       renderIntro fillWellColour shadowWellRGB outlineWellRGB introAreaOffset introAreaBlock introAreaSize introTextOffset introTextBlock
       restore