{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Creature.Stance.Data
  where
import Geometry.Data

import Control.Lens
data Stance = Stance 
    {_carriage     :: Carriage
    ,_posture      :: Posture
    ,_strideLength :: Int
    }
  deriving (Eq,Show)
data Carriage 
    = Walking 
        { _strideAmount :: Int 
        , _currentFoot :: FootForward
        }
    | Standing
    | Floating
    | Flying
    | Boosting Point2
  deriving (Eq,Show)
data FootForward
    = LeftForward
    | RightForward
    | WasLeftForward
    | WasRightForward
  deriving
    (Eq,Ord,Show)
data Posture = Aiming 
    | AtEase
  deriving 
    (Eq,Ord,Show)

makeLenses ''Stance
makeLenses ''Carriage
makeLenses ''Posture
