#18 Optimes rendering by caching PNGs
This commit is contained in:
parent
7e2448c8b9
commit
91770a48fb
2 changed files with 125 additions and 0 deletions
39
lib/SelectorRenderer.hs
Normal file
39
lib/SelectorRenderer.hs
Normal 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
|
Reference in a new issue