Move towards unifying weapon barrels

This commit is contained in:
2023-05-20 15:29:46 +01:00
parent f2183e9954
commit 03611c6b95
6 changed files with 18 additions and 19 deletions
+2 -5
View File
@@ -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
+3 -8
View File
@@ -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
+2 -1
View File
@@ -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
+4 -3
View File
@@ -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
+2 -1
View File
@@ -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)
)
+5 -1
View File
@@ -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 ::