{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Hammer where import Control.Lens import Data.Aeson import Data.Aeson.TH data HammerType = NoHammer | HasHammer {_hammerPosition :: HammerPosition} deriving (Eq, Ord, Show, Read) --Generic, Flat) data HammerPosition = HammerDown | HammerReleased | HammerUp deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''HammerType deriveJSON defaultOptions ''HammerPosition deriveJSON defaultOptions ''HammerType