71 lines
1.7 KiB
Haskell
71 lines
1.7 KiB
Haskell
{-# LANGUAGE StrictData #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
module Dodge.Data.Muzzle where
|
|
|
|
import Dodge.Data.GenFloat
|
|
import Linear
|
|
import Control.Lens
|
|
|
|
data Muzzle = Muzzle
|
|
{ _mzPos :: V2 Float
|
|
, _mzRot :: Float
|
|
, _mzInaccuracy :: Float
|
|
, _mzAmmoSlot :: AmmoExtractPosition
|
|
, _mzFlareType :: FlareType
|
|
, _mzEffect :: MuzzleEffect
|
|
-- , _mzAmmoPerShot :: AmmoPerShot
|
|
, _mzRandomOffset :: Float
|
|
}
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data AmmoExtractPosition
|
|
= MagBelow {_magBelowID :: Int, _aps :: AmmoPerShot}
|
|
| CapacitorBelow {_aps :: AmmoPerShot}
|
|
| CapacitorSelf {_aps :: AmmoPerShot}
|
|
| NoAmmoRequired
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data FlareType
|
|
= NoFlare
|
|
| BasicFlare
|
|
| NoLightFlare
|
|
| MiniGunFlare
|
|
| HeavySmokeFlare
|
|
| LasGunFlare
|
|
| TeslaGunFlare
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data MuzzleEffect
|
|
= MuzzleShootBullet
|
|
| MuzzleLaser
|
|
| MuzzlePulseLaser
|
|
| MuzzlePulseBall
|
|
| MuzzlePlasmaBall
|
|
| MuzzleTesla
|
|
| MuzzleTractor
|
|
| MuzzleRLauncher
|
|
| MuzzleGLauncher
|
|
| MuzzleNozzle
|
|
{ _nzPressure :: GenFloat
|
|
, _nzMaxWalkAngle :: Float
|
|
, _nzWalkSpeed :: Float
|
|
}
|
|
| MuzzleShatter
|
|
| MuzzleDetector
|
|
| MuzzleBlink
|
|
| MuzzleUnsafeBlink
|
|
| MuzzleRewind
|
|
| MuzzleStopper
|
|
| MuzzleScroller
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
data AmmoPerShot
|
|
= UseExactly {_useExactly :: Int}
|
|
| UseUpTo {_useUpTo :: Int}
|
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
|
|
|
makeLenses ''Muzzle
|
|
makeLenses ''MuzzleEffect
|
|
makeLenses ''AmmoPerShot
|
|
makeLenses ''AmmoExtractPosition
|