69 lines
1.4 KiB
Haskell
69 lines
1.4 KiB
Haskell
{-# 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
|