1
Fork 0
This commit is contained in:
Tibo De Peuter 2022-11-15 23:29:58 +01:00
parent 7dc72ee211
commit 425bb6eee2
3 changed files with 44 additions and 44 deletions

View file

@ -3,6 +3,7 @@ module PatienceRenderer
, getWindow
) where
import CardDeck
import PatienceBoard
import Selector
@ -32,16 +33,6 @@ stackDistance = 10
zoneDistance :: Float
zoneDistance = 25
----------------------------------------------------------------------
-- Render the GameStacks zone.
renderGS :: Board -> Picture
renderGS = renderStacks stackDistance (negate cardDistance) . gameStacks
-- Render the EndingStacks zone.
renderES :: Board -> Picture
renderES = renderStacks stackDistance 0 . endingStacks
-- X axis render difference for EndingStacks
esXDiff :: Float
esXDiff = fromIntegral esX * cardDistance
@ -53,10 +44,6 @@ esYDiff :: Float
esYDiff = fromIntegral esY * (zoneDistance + cardHeight)
where (_, esY) = endingStacksCoord
-- Render the Pile zone.
renderPile :: Board -> Picture
renderPile = renderStack 0 . pile
-- X axis render difference for Pile
pileXDiff :: Float
pileXDiff = 0
@ -65,6 +52,20 @@ pileXDiff = 0
pileYDiff :: Float
pileYDiff = esYDiff
----------------------------------------------------------------------
-- Render the GameStacks zone.
renderGS :: Board -> Picture
renderGS = renderStacks stackDistance (negate cardDistance) . gameStacks
-- Render the EndingStacks zone.
renderES :: Board -> Picture
renderES = renderStacks stackDistance 0 . endingStacks
-- Render the Pile zone.
renderPile :: Board -> Picture
renderPile = renderStack 0 . pile
-- Get the diff based on a coordinate because different 'zones' have
-- different offsets.
getDiff :: Coordinate -> (Float, Float)
@ -100,17 +101,14 @@ renderPSelector ps = compose [
(xd1, yd1) = getDiff (position ps)
(xd2, yd2) = getDiff $ getSelected ps
getSelected :: Selector -> Coordinate
getSelected s@Selector{ selected = Just c } = c
getSelected s@Selector{ selected = Nothing } = (0,0)
-- Render the patience game.
render :: Game -> Picture
render game = translate centerX centerY $ compose [
renderBoard $ board game,
renderPSelector $ selector game
]
where centerX = negate $ (cardWidth + stackDistance) * (fromIntegral amountOfGameStacks - 1) / 2
centerY = 0 -- TODO Different center
centerY = 0
-- The default window to play patience.
getWindow :: Display