{-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Creature.Stance ( module Dodge.Data.Creature.Stance, module Dodge.Data.AimStance, ) where import Control.Lens import Data.Aeson import Data.Aeson.TH import Dodge.Data.AimStance import Geometry.Data data Stance = Stance { _carriage :: Carriage , _posture :: Posture } deriving (Eq, Ord, Show, Read) --Generic, Flat) data Carriage = Walking {_strideAmount :: Float, _footForward :: FootForward} | Floating | Flying {_zSpeed :: Float, _flyInertia :: Float, _oldOldPos :: Point2} | Boosting Point2 | Falling {_fallFlail :: Float, _fallFoot :: FootForward} deriving (Eq, Ord, Show, Read) --Generic, Flat) data FootForward = LeftForward | RightForward deriving (Eq, Ord, Show, Read) --Generic, Flat) data Posture = Aiming | AtEase deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Stance makeLenses ''Carriage makeLenses ''Posture deriveJSON defaultOptions ''FootForward deriveJSON defaultOptions ''Posture deriveJSON defaultOptions ''Carriage deriveJSON defaultOptions ''Stance