Files
loop/src/Dodge/Render/InfoBox.hs
T
2022-10-28 23:13:36 +01:00

31 lines
967 B
Haskell

module Dodge.Render.InfoBox
( renderInfoListAt
, renderInfoListsAt
) where
import Dodge.Base
import Dodge.Data.CamPos
import Dodge.Data.Config
import Dodge.Render.Connectors
import Dodge.Render.List
import Geometry
import Picture
renderInfoListAt :: Float -> Float -> Configuration -> CamPos -> (Point2, [String]) -> Picture
renderInfoListAt x y cfig cam (p, ss) =
renderListAt x y cfig (zip ss (repeat white))
<> winScale cfig (color white $ lConnect (V2 (x - hw) (hh -25 - y)) (worldPosToScreen cam p))
<> listCursorNSW x y cfig 0 white 19 (length ss)
where
hw = halfWidth cfig
hh = halfHeight cfig
renderInfoListsAt :: Float -> Float -> Configuration -> CamPos -> [(Point2, [String])] -> Picture
renderInfoListsAt x y cfig w =
fst . foldr f (mempty, 0)
where
f (p, ss) (pic, offset) =
( pic <> renderInfoListAt x (y + offset) cfig w (p, ss)
, offset + 20 * fromIntegral (length ss)
)