{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE TemplateHaskell #-} module Monomer.Dragboard.DragboardModel ( DragboardModel(..) , boardState , selectedSquare , animationSources , initDragboardModel ) where import Control.Lens import Data.Map (Map) import Monomer.Common.BasicTypes import qualified Data.Map as Map data DragboardModel a = DragboardModel { forall a. DragboardModel a -> [[a]] _dmBoardState :: [[a]] , forall a. DragboardModel a -> Maybe Int _dmSelectedSquare :: Maybe Int , forall a. DragboardModel a -> Map Int Rect _dmAnimationSources :: Map Int Rect } deriving (DragboardModel a -> DragboardModel a -> Bool forall a. Eq a => DragboardModel a -> DragboardModel a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: DragboardModel a -> DragboardModel a -> Bool $c/= :: forall a. Eq a => DragboardModel a -> DragboardModel a -> Bool == :: DragboardModel a -> DragboardModel a -> Bool $c== :: forall a. Eq a => DragboardModel a -> DragboardModel a -> Bool Eq, Int -> DragboardModel a -> ShowS forall a. Show a => Int -> DragboardModel a -> ShowS forall a. Show a => [DragboardModel a] -> ShowS forall a. Show a => DragboardModel a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [DragboardModel a] -> ShowS $cshowList :: forall a. Show a => [DragboardModel a] -> ShowS show :: DragboardModel a -> String $cshow :: forall a. Show a => DragboardModel a -> String showsPrec :: Int -> DragboardModel a -> ShowS $cshowsPrec :: forall a. Show a => Int -> DragboardModel a -> ShowS Show) makeLensesWith abbreviatedFields 'DragboardModel initDragboardModel :: DragboardModel a initDragboardModel :: forall a. DragboardModel a initDragboardModel = DragboardModel { _dmBoardState :: [[a]] _dmBoardState = [] , _dmSelectedSquare :: Maybe Int _dmSelectedSquare = forall a. Maybe a Nothing , _dmAnimationSources :: Map Int Rect _dmAnimationSources = forall k a. Map k a Map.empty }