{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Creature.Impulse.Data where import Dodge.Creature.Stance.Data import Geometry.Data import Control.Lens data Impulse = MoveTo Point2 | MoveToFor Point2 Int | MoveFire Point2 Point2 | PathTo Point2 | PathAlong [Point2] | SubPathTo Point2 Int Point2 | Wait | WaitFor Int | WaitForID Int Int | FireAt Point2 | FireAtID Int Point2 | Fire | Reload | IncreaseAlert Int | Guard Point2 Point2 | Search Int | SearchNear Point2 | AimAt Point2 Int | InitGuard | Init | MeleeAttack Int | InitTrackYou | TrackYou | Track Int | TrackFor Int Int | TurnByFor Float Int | TurnTo Point2 | TurnToward Point2 | TurnTowardAngle Float | StrafeLeftAround Int Point2 | StrafeRightAround Int Point2 | StrafeLeftFor Int | StrafeRightFor Int | StrafeLeftForSpeed Int Float | StrafeRightForSpeed Int Float | StrafeLeftFire | StrafeRightFire | MoveForwardFor Int | MoveForwardFire | MoveBackwardFor Int | MoveByFor Point2 Int | MoveBackwardFire | ImpulseID Int Impulse | AtRange Float | AtRanges Float Float | RepeatAction Int Impulse | MakeJudgement | SetPosture Posture deriving (Eq,Show)