{-# LANGUAGE TemplateHaskell #-}

module Logic.Types where

import Linear
import Control.Lens
import Graphics.Gloss
import qualified Data.IntMap as I

data Shape = CircleShape Float | RectShape Float Float
    deriving (Eq,Show)
makePrisms ''Shape

data MobImage = Wall | Player
    deriving (Eq,Show)

data Mob = Mob {
      _position :: V2 Float
    , _size :: Shape
    , _picture :: MobImage
    , _facing :: V2 Float
    } deriving (Show,Eq)
makeLenses ''Mob

data World = World {
      _walls :: [Mob]
    , _players :: [Mob]
    } deriving (Eq,Show)
makeLenses ''World
