{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Data.Sensor where import Dodge.Combine.Data import Dodge.Data.Damage.Type import Control.Lens data Sensor = NoSensor | DamageSensor { _sensToggle :: Bool , _sensAmount :: Int , _sensType :: DamageType } | ProximitySensor { _proxStatus :: CloseToggle , _proxDist :: Float , _proxRequirement :: ProximityRequirement , _sensToggle :: Bool } deriving (Eq,Ord,Show,Read) data ProximityRequirement = RequireHealth {_proxReqMinHealth :: Int} | RequireEquipment {_proxReqEquipment :: ItemBaseType} | RequireImpossible deriving (Eq,Ord,Show,Read) data CloseToggle = NotClose | IsClose deriving (Eq,Ord,Show,Read) makeLenses ''Sensor makeLenses ''ProximityRequirement