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 , _brlNum :: Int
, _brlInaccuracy :: Float , _brlInaccuracy :: Float
} }
| BarrelList [GunBarrel] | BarrelList
| RotBarrel { _brlList :: [GunBarrel]
{ _brlNum :: Int
, _brlInaccuracy :: Float
} }
| SingleBarrel {_brlInaccuracy :: Float}
--deriving (Eq, Ord, Show, Read) --Generic, Flat) --deriving (Eq, Ord, Show, Read) --Generic, Flat)
data Nozzle = Nozzle data Nozzle = Nozzle
+3 -8
View File
@@ -7,6 +7,7 @@ module Dodge.Item.Held.Cane (
miniGunX, miniGunX,
) where ) where
import Dodge.Item.Held.SingleBarrel
import Dodge.Data.Item import Dodge.Data.Item
import Dodge.Default import Dodge.Default
import Dodge.Reloading.Action import Dodge.Reloading.Action
@@ -21,10 +22,7 @@ defaultBangCane =
{ _muzVel = 0.8 { _muzVel = 0.8
, _rifling = 0.9 , _rifling = 0.9
, _bore = 2 , _bore = 2
, _gunBarrels = , _gunBarrels = singleBarrel 0.01
SingleBarrel
{ _brlInaccuracy = 0.01
}
, _recoil = 50 , _recoil = 50
, _torqueAfter = 0.1 , _torqueAfter = 0.1
, _randomOffset = 0 , _randomOffset = 0
@@ -56,10 +54,7 @@ volleyGun i =
{ _muzVel = 0.8 { _muzVel = 0.8
, _rifling = 0.9 , _rifling = 0.9
, _bore = 2 , _bore = 2
, _gunBarrels = , _gunBarrels = singleBarrel 0.01
SingleBarrel
{ _brlInaccuracy = 0.01
}
, _recoil = 50 , _recoil = 50
, _torqueAfter = 0.1 , _torqueAfter = 0.1
, _randomOffset = 0 , _randomOffset = 0
+2 -1
View File
@@ -1,5 +1,6 @@
module Dodge.Item.Held.Cone module Dodge.Item.Held.Cone
where where
import Dodge.Item.Held.SingleBarrel
import Dodge.Default.Item import Dodge.Default.Item
import Dodge.Data.Item import Dodge.Data.Item
import Dodge.Reloading.Action import Dodge.Reloading.Action
@@ -14,7 +15,7 @@ bangCone =
{ _muzVel = 0.7 { _muzVel = 0.7
, _rifling = 0.8 , _rifling = 0.8
, _bore = 5 , _bore = 5
, _gunBarrels = SingleBarrel 0.5 , _gunBarrels = singleBarrel 0.5
, _recoil = 150 , _recoil = 150
, _torqueAfter = 0.1 , _torqueAfter = 0.1
, _randomOffset = 12 , _randomOffset = 12
+4 -3
View File
@@ -7,6 +7,7 @@ module Dodge.Item.Held.Rod (
machineGun, machineGun,
) where ) where
import Dodge.Item.Held.SingleBarrel
import Dodge.Data.Item import Dodge.Data.Item
import Dodge.Default import Dodge.Default
import Dodge.Item.Weapon.Bullet import Dodge.Item.Weapon.Bullet
@@ -22,7 +23,7 @@ bangRod =
{ _muzVel = 0.8 { _muzVel = 0.8
, _rifling = 1 , _rifling = 1
, _bore = 2 , _bore = 2
, _gunBarrels = SingleBarrel 0.1 , _gunBarrels = singleBarrel 0.1
, _recoil = 50 , _recoil = 50
, _torqueAfter = 0.3 , _torqueAfter = 0.3
, _randomOffset = 0 , _randomOffset = 0
@@ -47,7 +48,7 @@ elephantGun =
bangRod bangRod
& itType . iyBase .~ HELD ELEPHANTGUN & itType . iyBase .~ HELD ELEPHANTGUN
& itUse . heldAim . aimStance .~ TwoHandTwist & itUse . heldAim . aimStance .~ TwoHandTwist
& itParams . gunBarrels .~ SingleBarrel 0.05 & itParams . gunBarrels .~ singleBarrel 0.05
& itUse . heldMods .~ ElephantGunMod & itUse . heldMods .~ ElephantGunMod
& itParams . recoil .~ 50 & itParams . recoil .~ 50
& itParams . torqueAfter .~ 0.1 & itParams . torqueAfter .~ 0.1
@@ -68,7 +69,7 @@ sniperRifle :: Item
sniperRifle = sniperRifle =
elephantGun elephantGun
& itType . iyBase .~ HELD SNIPERRIFLE & 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 . heldAim . aimZoom .~ defaultItZoom{_izMax = 0.5, _izMin = 0.5,_izFac = 1}
& itUse . heldScroll .~ HeldScrollZoom -- zoomLongGun & itUse . heldScroll .~ HeldScrollZoom -- zoomLongGun
& itScope .~ ZoomScope (V2 0 0) 1 0.5 False & itScope .~ ZoomScope (V2 0 0) 1 0.5 False
+2 -1
View File
@@ -8,6 +8,7 @@ module Dodge.Item.Held.Stick (
revolverX, revolverX,
) where ) where
import Dodge.Item.Held.SingleBarrel
import Dodge.Data.Item import Dodge.Data.Item
import Dodge.Default.Item import Dodge.Default.Item
import Dodge.Reloading.Action import Dodge.Reloading.Action
@@ -70,7 +71,7 @@ pistol =
%~ ( (muzVel .~ 0.8) %~ ( (muzVel .~ 0.8)
. (rifling .~ 0.8) . (rifling .~ 0.8)
. (bore .~ 2) . (bore .~ 2)
. (gunBarrels .~ SingleBarrel 0.05) . (gunBarrels .~ singleBarrel 0.05)
. (recoil .~ 10) . (recoil .~ 10)
. (torqueAfter .~ 0.2) . (torqueAfter .~ 0.2)
) )
+5 -1
View File
@@ -63,6 +63,7 @@ module Dodge.Item.Weapon.TriggerType (
blCheck, blCheck,
) where ) where
import Control.Applicative
import qualified SDL import qualified SDL
import Data.Foldable import Data.Foldable
import Data.Maybe import Data.Maybe
@@ -497,7 +498,10 @@ crAtMuzPos f it cr = f it (cr & crPos +.+.~ (aimingMuzzlePos cr it *.* unitVecto
applyInaccuracy :: ChainEffect applyInaccuracy :: ChainEffect
applyInaccuracy f it = withRandomDirI acc f it applyInaccuracy f it = withRandomDirI acc f it
where 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. -- | Applies the effect to a randomly rotated creature.
withRandomDirI :: withRandomDirI ::