1
Fork 0

#18 Optimes rendering by caching PNGs

This commit is contained in:
Tibo De Peuter 2022-11-15 22:38:00 +01:00
parent 7e2448c8b9
commit 91770a48fb
2 changed files with 125 additions and 0 deletions

39
lib/SelectorRenderer.hs Normal file
View file

@ -0,0 +1,39 @@
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