Cleanup, split CWorld into separate file
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Creature.Perception
|
||||
( Perception (..)
|
||||
, Vigilance (..)
|
||||
, Attention (..)
|
||||
, Awareness (..)
|
||||
, Vision (..)
|
||||
, Audition (..)
|
||||
-- lenses
|
||||
, getAttentiveTo
|
||||
, getFixated
|
||||
, cpAttention
|
||||
, cpVigilance
|
||||
, cpAwareness
|
||||
, cpVision
|
||||
, cpAudition
|
||||
, viFOV
|
||||
, viDist
|
||||
, auDist
|
||||
)
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
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,Generic)
|
||||
instance ToJSON Perception where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Perception
|
||||
data Vision = Eyes
|
||||
{ _viFOV :: FloatFloat
|
||||
, _viDist :: FloatFloat
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Vision where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Vision
|
||||
newtype Audition = Ears
|
||||
{ _auDist :: FloatFloat
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Audition where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Audition
|
||||
data Vigilance
|
||||
= Comatose
|
||||
| Asleep
|
||||
| Lethargic
|
||||
| Vigilant
|
||||
| Overstrung
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Vigilance where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Vigilance
|
||||
data Attention
|
||||
= AttentiveTo {_getAttentiveTo :: IM.IntMap Awareness }
|
||||
| Fixated {_getFixated :: Int }
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Attention where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Attention
|
||||
data Awareness
|
||||
= Suspicious Float
|
||||
| Cognizant Float
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Awareness where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Awareness
|
||||
makeLenses ''Perception
|
||||
makeLenses ''Vision
|
||||
makeLenses ''Audition
|
||||
makeLenses ''Attention
|
||||
Reference in New Issue
Block a user