{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Creature.Perception.Data ( Perception (..) , Vigilance (..) , Attention (..) , Awareness (..) , Vision (..) , Audition (..) -- lenses , getAttentiveTo , getFixated , cpAttention , cpVigilance , cpAwareness , cpVision , cpAudition , viFOV , viDist , auDist ) where import Control.Lens import Dodge.Data.FloatFunction import qualified IntMapHelp as IM data Perception = Perception { _cpVigilance :: Vigilance , _cpAttention :: Attention , _cpAwareness :: IM.IntMap Awareness , _cpVision :: Vision , _cpAudition :: Audition } deriving (Eq,Ord,Show,Read) data Vision = Eyes { _viFOV :: FloatFloat , _viDist :: FloatFloat } deriving (Eq,Ord,Show,Read) newtype Audition = Ears { _auDist :: FloatFloat } deriving (Eq,Ord,Show,Read) data Vigilance = Comatose | Asleep | Lethargic | Vigilant | Overstrung deriving (Eq,Ord,Show,Read) data Attention = AttentiveTo {_getAttentiveTo :: IM.IntMap Awareness } | Fixated {_getFixated :: Int } deriving (Eq,Ord,Show,Read) data Awareness = Suspicious Float | Cognizant Float deriving (Eq,Ord,Show,Read) makeLenses ''Attention makeLenses ''Perception makeLenses ''Vision makeLenses ''Audition