From 03611c6b954d486d3cd213931cba45f26c14ef45 Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 20 May 2023 15:29:46 +0100 Subject: [PATCH] Move towards unifying weapon barrels --- src/Dodge/Data/Item/Params.hs | 7 ++----- src/Dodge/Item/Held/Cane.hs | 11 +++-------- src/Dodge/Item/Held/Cone.hs | 3 ++- src/Dodge/Item/Held/Rod.hs | 7 ++++--- src/Dodge/Item/Held/Stick.hs | 3 ++- src/Dodge/Item/Weapon/TriggerType.hs | 6 +++++- 6 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/Dodge/Data/Item/Params.hs b/src/Dodge/Data/Item/Params.hs index c288f23ea..49ae238c4 100644 --- a/src/Dodge/Data/Item/Params.hs +++ b/src/Dodge/Data/Item/Params.hs @@ -88,12 +88,9 @@ data GunBarrels , _brlNum :: Int , _brlInaccuracy :: Float } - | BarrelList [GunBarrel] - | RotBarrel - { _brlNum :: Int - , _brlInaccuracy :: Float + | BarrelList + { _brlList :: [GunBarrel] } - | SingleBarrel {_brlInaccuracy :: Float} --deriving (Eq, Ord, Show, Read) --Generic, Flat) data Nozzle = Nozzle diff --git a/src/Dodge/Item/Held/Cane.hs b/src/Dodge/Item/Held/Cane.hs index a86dcfc36..a1bcb234f 100644 --- a/src/Dodge/Item/Held/Cane.hs +++ b/src/Dodge/Item/Held/Cane.hs @@ -7,6 +7,7 @@ module Dodge.Item.Held.Cane ( miniGunX, ) where +import Dodge.Item.Held.SingleBarrel import Dodge.Data.Item import Dodge.Default import Dodge.Reloading.Action @@ -21,10 +22,7 @@ defaultBangCane = { _muzVel = 0.8 , _rifling = 0.9 , _bore = 2 - , _gunBarrels = - SingleBarrel - { _brlInaccuracy = 0.01 - } + , _gunBarrels = singleBarrel 0.01 , _recoil = 50 , _torqueAfter = 0.1 , _randomOffset = 0 @@ -56,10 +54,7 @@ volleyGun i = { _muzVel = 0.8 , _rifling = 0.9 , _bore = 2 - , _gunBarrels = - SingleBarrel - { _brlInaccuracy = 0.01 - } + , _gunBarrels = singleBarrel 0.01 , _recoil = 50 , _torqueAfter = 0.1 , _randomOffset = 0 diff --git a/src/Dodge/Item/Held/Cone.hs b/src/Dodge/Item/Held/Cone.hs index d37ead95f..a342047c9 100644 --- a/src/Dodge/Item/Held/Cone.hs +++ b/src/Dodge/Item/Held/Cone.hs @@ -1,5 +1,6 @@ module Dodge.Item.Held.Cone where +import Dodge.Item.Held.SingleBarrel import Dodge.Default.Item import Dodge.Data.Item import Dodge.Reloading.Action @@ -14,7 +15,7 @@ bangCone = { _muzVel = 0.7 , _rifling = 0.8 , _bore = 5 - , _gunBarrels = SingleBarrel 0.5 + , _gunBarrels = singleBarrel 0.5 , _recoil = 150 , _torqueAfter = 0.1 , _randomOffset = 12 diff --git a/src/Dodge/Item/Held/Rod.hs b/src/Dodge/Item/Held/Rod.hs index f614c2588..1a12af7b0 100644 --- a/src/Dodge/Item/Held/Rod.hs +++ b/src/Dodge/Item/Held/Rod.hs @@ -7,6 +7,7 @@ module Dodge.Item.Held.Rod ( machineGun, ) where +import Dodge.Item.Held.SingleBarrel import Dodge.Data.Item import Dodge.Default import Dodge.Item.Weapon.Bullet @@ -22,7 +23,7 @@ bangRod = { _muzVel = 0.8 , _rifling = 1 , _bore = 2 - , _gunBarrels = SingleBarrel 0.1 + , _gunBarrels = singleBarrel 0.1 , _recoil = 50 , _torqueAfter = 0.3 , _randomOffset = 0 @@ -47,7 +48,7 @@ elephantGun = bangRod & itType . iyBase .~ HELD ELEPHANTGUN & itUse . heldAim . aimStance .~ TwoHandTwist - & itParams . gunBarrels .~ SingleBarrel 0.05 + & itParams . gunBarrels .~ singleBarrel 0.05 & itUse . heldMods .~ ElephantGunMod & itParams . recoil .~ 50 & itParams . torqueAfter .~ 0.1 @@ -68,7 +69,7 @@ sniperRifle :: Item sniperRifle = elephantGun & itType . iyBase .~ HELD SNIPERRIFLE - & itParams . gunBarrels .~ SingleBarrel 0 + & itParams . gunBarrels .~ singleBarrel 0 & itUse . heldAim . aimZoom .~ defaultItZoom{_izMax = 0.5, _izMin = 0.5,_izFac = 1} & itUse . heldScroll .~ HeldScrollZoom -- zoomLongGun & itScope .~ ZoomScope (V2 0 0) 1 0.5 False diff --git a/src/Dodge/Item/Held/Stick.hs b/src/Dodge/Item/Held/Stick.hs index 199d76b30..72380843e 100644 --- a/src/Dodge/Item/Held/Stick.hs +++ b/src/Dodge/Item/Held/Stick.hs @@ -8,6 +8,7 @@ module Dodge.Item.Held.Stick ( revolverX, ) where +import Dodge.Item.Held.SingleBarrel import Dodge.Data.Item import Dodge.Default.Item import Dodge.Reloading.Action @@ -70,7 +71,7 @@ pistol = %~ ( (muzVel .~ 0.8) . (rifling .~ 0.8) . (bore .~ 2) - . (gunBarrels .~ SingleBarrel 0.05) + . (gunBarrels .~ singleBarrel 0.05) . (recoil .~ 10) . (torqueAfter .~ 0.2) ) diff --git a/src/Dodge/Item/Weapon/TriggerType.hs b/src/Dodge/Item/Weapon/TriggerType.hs index 50e34c9b7..1c7de4767 100644 --- a/src/Dodge/Item/Weapon/TriggerType.hs +++ b/src/Dodge/Item/Weapon/TriggerType.hs @@ -63,6 +63,7 @@ module Dodge.Item.Weapon.TriggerType ( blCheck, ) where +import Control.Applicative import qualified SDL import Data.Foldable import Data.Maybe @@ -497,7 +498,10 @@ crAtMuzPos f it cr = f it (cr & crPos +.+.~ (aimingMuzzlePos cr it *.* unitVecto applyInaccuracy :: ChainEffect applyInaccuracy f it = withRandomDirI acc f it where - acc = _brlInaccuracy . _gunBarrels $ _itParams it + acc = fromMaybe 0 $ + (it ^? itParams . gunBarrels . brlList . ix 0 . barlInaccuracy) + <|> + (it ^? itParams . gunBarrels . brlInaccuracy) -- | Applies the effect to a randomly rotated creature. withRandomDirI ::