(Re)Implement nozzle walking

This commit is contained in:
2024-09-21 19:42:28 +01:00
parent 241f6fdf10
commit 86d8e3a98a
7 changed files with 329 additions and 362 deletions
-9
View File
@@ -44,11 +44,6 @@ data ItemParams
, _dbGap :: Float
}
| Attracting {_attractionPower :: Point2}
| AngleWalk
{ _maxWalkAngle :: Float
, _currentWalkAngle :: Float
, _walkSpeed :: Float
}
| Arcing
{ _currentArc :: Maybe [ArcStep]
, _arcSize :: Float
@@ -77,12 +72,8 @@ data PreviousArcEffect = NoPreviousArcEffect | PerturbTillBreakPreviousArc
-- }
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
data Nozzle = Nozzle
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
makeLenses ''ItemParams
makeLenses ''Nozzle
deriveJSON defaultOptions ''ShrinkGunStatus
deriveJSON defaultOptions ''PreviousArcEffect
deriveJSON defaultOptions ''Nozzle
deriveJSON defaultOptions ''ItemParams
+43 -45
View File
@@ -1,5 +1,5 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
@@ -11,28 +11,28 @@ module Dodge.Data.Item.Use (
module Dodge.Data.Item.Use.Consumption,
module Dodge.Data.Hammer,
module Dodge.Data.Item.Targeting,
module Dodge.Data.GenFloat
module Dodge.Data.GenFloat,
) where
import Dodge.Data.GenFloat
import Sound.Data
import qualified Data.IntMap.Strict as IM
import Geometry.Data
import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import qualified Data.IntMap.Strict as IM
import Dodge.Data.GenFloat
--import qualified Data.Sequence as Seq
import Dodge.Data.Hammer
import Dodge.Data.Item.HeldDelay
import Dodge.Data.Item.HeldUse
import Dodge.Data.Item.Targeting
import Dodge.Data.Item.Use.Consumption
import Dodge.Data.Item.Use.Equipment
import Dodge.Data.Item.HeldDelay
import Dodge.Data.Item.Targeting
import Geometry.Data
import Sound.Data
data ItemUse
= HeldUse
{ -- _heldUse :: Huse
_heldDelay :: UseDelay
_heldDelay :: UseDelay
, _heldMods :: HeldMod
, _heldHammer :: HammerPosition
, _heldAim :: AimParams
@@ -40,7 +40,7 @@ data ItemUse
, _heldParams :: HeldParams
, _heldTriggerType :: TriggerType
, _heldUsageTime :: Int -- this is not yet implemented
-- , _useTargeting :: Maybe TargetType
-- , _useTargeting :: Maybe TargetType
}
| LeftUse
{ _leftUse :: Luse
@@ -51,44 +51,45 @@ data ItemUse
}
| ConsumeUse
{ _cUse :: Cuse
-- , _useAmount :: ItAmount
-- , _useAmount :: ItAmount
}
| EquipUse
{ _equipEffect :: EquipEffect
, _equipTargeting :: Maybe TargetType
}
| CraftUse
-- {_useAmount :: ItAmount}
| AttachUse
-- {_attachParams :: AttachParams}
| AmmoMagUse
| -- {_useAmount :: ItAmount}
AttachUse
| -- {_attachParams :: AttachParams}
AmmoMagUse
{ _amagLoadStatus :: ReloadStatus
, _amagParams :: AmmoParams
, _amagParams :: AmmoParams
, _amagType :: AmmoType
}
deriving (Eq, Show, Read) --Generic, Flat)
data TriggerType = AutoTrigger
data TriggerType
= AutoTrigger
| HammerTrigger
deriving (Eq, Show, Read) --Generic, Flat)
data HeldParams
= DefaultHeldParams
| GasSprayParams
{_gasCreation :: GasCreate
{ _gasCreation :: GasCreate
, _recoil :: Float
, _torqueAfter :: Float
, _randomOffset :: Float
, _sidePush :: Float
, _bulGunSound :: Maybe (SoundID, Int) -- if the int is 0, play sound on new channel
-- if >0, continue playing sound for
-- given time
-- if >0, continue playing sound for
-- given time
, _weaponInvLock :: Int
, _weaponRepeat :: [Int]
}
| BeamShooterParams
{ _bulGunSound :: Maybe (SoundID, Int) -- if the int is 0, play sound on new channel
-- TODO remove duplicate
-- TODO remove duplicate
}
| BulletShooterParams
{ _muzVel :: GenFloat
@@ -98,20 +99,15 @@ data HeldParams
, _randomOffset :: Float
, _sidePush :: Float
, _bulGunSound :: Maybe (SoundID, Int) -- if the int is 0, play sound on new channel
-- if >0, continue playing sound for
-- given time
-- if >0, continue playing sound for
-- given time
, _weaponInvLock :: Int
, _weaponRepeat :: [Int]
}
deriving (Eq, Show, Read) --Generic, Flat)
--data AttachParams
-- = ScrollAttachParams {_scrollAttachParams :: ScrollAttachParams}
-- | TargetAttachParams
-- | NoAttachParams
-- deriving (Eq, Show, Read) --Generic, Flat)
data AmmoParams = BulletParams {_ampBullet :: Bullet}
data AmmoParams
= BulletParams {_ampBullet :: Bullet}
| ProjectileParams
{ _ampPayload :: Payload
, _ampPjDraw :: ProjectileDraw
@@ -136,14 +132,15 @@ data AimParams = AimParams
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data FlareType = DefaultFlareType
data FlareType
= DefaultFlareType
| PistolFlare
| MiniGunFlare
| HeavySmokeFlare
| LasGunFlare
| TeslaGunFlare
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data MuzzleEffect
= MuzzleShootBullet
| MuzzleLaser
@@ -156,9 +153,9 @@ data MuzzleEffect
, _nzCurrentWalkAngle :: Float
, _nzWalkSpeed :: Float
}
| MuzzleShatter
| MuzzleForceField
| MuzzleDetector
| MuzzleShatter
| MuzzleForceField
| MuzzleDetector
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data Muzzle = Muzzle
@@ -169,24 +166,23 @@ data Muzzle = Muzzle
, _mzFlareType :: FlareType
, _mzEffect :: MuzzleEffect
, _mzChargeRequirement :: Maybe Int
-- , _mzRecoil :: Float
-- , _mzTorque :: Float
-- , _mzSidePush :: Float
-- , _mzRandomOffset :: Float
-- , _mzVel :: Float
-- , _mzRifling :: Float
-- , _mzAmmoSlot :: Either Int
-- , _mzAmmoPerShot :: Int
-- , _mzRecoil :: Float
-- , _mzTorque :: Float
-- , _mzSidePush :: Float
-- , _mzRandomOffset :: Float
-- , _mzVel :: Float
-- , _mzRifling :: Float
-- , _mzAmmoSlot :: Either Int
-- , _mzAmmoPerShot :: Int
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data AimStance
= TwoHandUnder
| TwoHandOver
| TwoHandFlat
| OneHand
-- | LeaveHolstered
-- | LeaveHolstered
deriving (Eq, Ord, Show, Read) --Generic, Flat)
--deriving (Eq, Show, Ord, Enum, Read) --Generic, Flat)
@@ -202,6 +198,7 @@ makeLenses ''AimParams
makeLenses ''ItZoom
makeLenses ''Muzzle
makeLenses ''HeldParams
--makeLenses ''AttachParams
--makeLenses ''ScrollAttachParams
makeLenses ''AmmoParams
@@ -213,6 +210,7 @@ deriveJSON defaultOptions ''AmmoParams
deriveJSON defaultOptions ''HeldParams
deriveJSON defaultOptions ''Muzzle
deriveJSON defaultOptions ''AimStance
--deriveJSON defaultOptions ''ScrollAttachParams
--deriveJSON defaultOptions ''AttachParams
deriveJSON defaultOptions ''ItZoom