41 lines
1.3 KiB
Haskell
41 lines
1.3 KiB
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
{-# LANGUAGE StrictData #-}
|
|
module Dodge.Data.Sensor where
|
|
import GHC.Generics
|
|
import Data.Aeson
|
|
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,Generic)
|
|
instance ToJSON Sensor where
|
|
toEncoding = genericToEncoding defaultOptions
|
|
instance FromJSON Sensor
|
|
data ProximityRequirement
|
|
= RequireHealth {_proxReqMinHealth :: Int}
|
|
| RequireEquipment {_proxReqEquipment :: ItemBaseType}
|
|
| RequireImpossible
|
|
deriving (Eq,Ord,Show,Read,Generic)
|
|
instance ToJSON ProximityRequirement where
|
|
toEncoding = genericToEncoding defaultOptions
|
|
instance FromJSON ProximityRequirement
|
|
data CloseToggle = NotClose | IsClose
|
|
deriving (Eq,Ord,Show,Read,Generic)
|
|
instance ToJSON CloseToggle where
|
|
toEncoding = genericToEncoding defaultOptions
|
|
instance FromJSON CloseToggle
|
|
makeLenses ''Sensor
|
|
makeLenses ''ProximityRequirement
|