98 lines
2.0 KiB
Haskell
98 lines
2.0 KiB
Haskell
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
module Dodge.Item.Data where
|
|
import Control.Lens
|
|
data HammerType
|
|
= NoHammer
|
|
| HasHammer {_hammerPosition :: HammerPosition}
|
|
deriving
|
|
(Eq, Ord, Show)
|
|
data HammerPosition
|
|
= HammerDown
|
|
| HammerReleased
|
|
| HammerUp
|
|
deriving
|
|
(Eq, Ord, Show)
|
|
--data ItemIdentity
|
|
-- = Pistol
|
|
-- | SpreadGun
|
|
-- | MultGun
|
|
-- | HvAutoGun
|
|
-- | AutoGun
|
|
-- | LtAutoGun
|
|
-- | MiniGun
|
|
-- | Medkit25
|
|
-- | MagShield
|
|
-- | FrontArmour
|
|
-- | JetPack
|
|
-- | FlameShield
|
|
-- | Generic
|
|
-- | SparkGun
|
|
-- | ShatterGun
|
|
-- | LongGun
|
|
-- | Flamethrower
|
|
-- | Blinker
|
|
-- | Rewinder
|
|
-- | Grenade
|
|
-- | RemoteBomb
|
|
-- | TeslaGun
|
|
-- | LasGun
|
|
-- | ForceFieldGun
|
|
-- | GrapGun
|
|
-- | TractorGun
|
|
-- | Launcher
|
|
-- | RemoteLauncher
|
|
-- | LightningGun
|
|
-- | PoisonSprayer
|
|
-- | FlatShield
|
|
-- deriving
|
|
-- (Eq,Show,Ord,Enum)
|
|
data AimStance
|
|
= TwoHandTwist
|
|
| TwoHandFlat
|
|
| OneHand
|
|
| LeaveHolstered
|
|
deriving
|
|
(Eq,Show,Ord,Enum)
|
|
-- TODO check how much of this is necessary
|
|
data ItZoom = ItZoom
|
|
{ _itZoomMax :: Float
|
|
, _itZoomMin :: Float
|
|
, _itZoomFac :: Float
|
|
}
|
|
data CurseStatus
|
|
= Uncursed
|
|
| UndroppableIdentified
|
|
| UndroppableUnidentified
|
|
data AimParams = AimParams
|
|
{ _aimWeight :: Int
|
|
, _aimRange :: Float
|
|
, _aimZoom :: ItZoom
|
|
, _aimStance :: AimStance
|
|
}
|
|
data UseDelay -- should just be Delay
|
|
= NoDelay
|
|
| FixedRate
|
|
{_rateMax :: Int
|
|
,_rateTime :: Int
|
|
}
|
|
| VariableRate
|
|
{_rateMax :: Int
|
|
,_rateTime :: Int
|
|
,_rateMaxMax :: Int
|
|
,_rateMinMax :: Int
|
|
}
|
|
| WarmUpNoDelay
|
|
{_warmTime :: Int
|
|
,_warmMax :: Int
|
|
}
|
|
data BarrelSpread
|
|
= AlignedBarrels
|
|
| SpreadBarrels {_spreadAngle :: Float}
|
|
| RotatingBarrels {_rotatingBarrelInaccuracy :: Float}
|
|
makeLenses ''BarrelSpread
|
|
makeLenses ''HammerType
|
|
makeLenses ''ItZoom
|
|
makeLenses ''AimParams
|
|
makeLenses ''UseDelay
|