module Dodge.Render.InfoBox ( renderInfoListAt , renderInfoListsAt ) where import Dodge.Data.CardinalPoint -- this should be imported implicitly import Dodge.Base import Dodge.Data.Camera import Dodge.Data.Config import Dodge.Render.Connectors import Dodge.Render.List import Geometry import Picture renderInfoListAt :: Float -> Float -> Configuration -> Camera -> (Point2, [String]) -> Picture renderInfoListAt x y cfig cam (p, ss) = toTopLeft cfig (renderListAt x y (zip ss (repeat white))) <> color white (lConnect (V2 (x - hw) (hh -25 - y)) (worldPosToScreen cam p)) <> toTopLeft cfig (translate x (-y) $ listCursorChooseBorderScale 0 1 [North,South] 0 0 white 19 (length ss)) where hw = halfWidth cfig hh = halfHeight cfig renderInfoListsAt :: Float -> Float -> Configuration -> Camera -> [(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) )