39 lines
1.2 KiB
Haskell
39 lines
1.2 KiB
Haskell
module SelectorRenderer
|
|
( renderSelector
|
|
, renderSelected
|
|
) where
|
|
|
|
import Selector
|
|
import PNGRenderer
|
|
|
|
----------------------------- Constants ------------------------------
|
|
|
|
selectorFilePath :: FilePath
|
|
selectorFilePath = "./lib/assets/selector.png"
|
|
|
|
selectedFilePath :: FilePath
|
|
selectedFilePath = "./lib/assets/selected.png"
|
|
|
|
selectorRenders :: (Picture, Picture)
|
|
selectorRenders = (
|
|
renderPNG selectorFilePath,
|
|
renderPNG selectedFilePath
|
|
)
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
-- Render the outline of the selector. The offset for every value 1
|
|
-- in the coordinate must be given.
|
|
renderSelector :: Float -> Float -> Selector -> Picture
|
|
renderSelector a b Selector{ position = (x,y) } = translate fx fy render
|
|
where fx = fromIntegral x * a
|
|
fy = fromIntegral y * b
|
|
render = fst selectorRenders
|
|
|
|
-- Render the selected piece if any.
|
|
renderSelected :: Float -> Float -> Selector -> Picture
|
|
renderSelected a b Selector{ selected = Just (x, y) } = translate fx fy render
|
|
where fx = fromIntegral x * a
|
|
fy = fromIntegral y * b
|
|
render = snd selectorRenders
|
|
renderSelected _ _ _ = blank
|