{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} {- Datatypes describing the type of damage effects that are to be applied to creatures. -} module Dodge.Data.Damage ( module Dodge.Data.Damage , module Dodge.Data.Damage.Type ) where import Dodge.Data.Damage.Type import Geometry.Data import Control.Lens data DamageEffect = PushDamage { _dePush :: Float , _dePushExp :: Float , _dePushRadius :: Float } | TorqueDamage { _deTorque :: Float } | PushBackDamage {_dePushBack :: Float } | NoDamageEffect deriving (Eq,Ord,Show,Read) data Damage = Damage { _dmType :: DamageType , _dmAmount :: Int , _dmFrom :: Point2 , _dmAt :: Point2 , _dmTo :: Point2 , _dmEffect :: DamageEffect } deriving (Eq,Ord,Show,Read) isElectrical :: Damage -> Bool isElectrical dm = case _dmType dm of ELECTRICAL -> True _ -> False isMovementDam :: Damage -> Bool isMovementDam dm = case _dmType dm of TORQUEDAM -> True PUSHDAM -> True _ -> False makeLenses ''Damage makeLenses ''DamageEffect