Fold aiming parameters into item use datatype

This commit is contained in:
2021-11-27 18:10:05 +00:00
parent 8639b2d428
commit 652af6b0a9
24 changed files with 135 additions and 155 deletions
+17 -11
View File
@@ -10,6 +10,8 @@ import Shape
import Geometry.Vector3D
import Geometry
import Control.Lens
defaultAmmo :: ItemAmmo
defaultAmmo = LoadableAmmo
{ _aoType = GenericAmmo
@@ -33,6 +35,7 @@ ruseRate i f ht usemods = RightUse
}
, _useMods = usemods
, _useHammer = ht
, _useAim = defaultAimParams
}
ruseInstant
@@ -45,6 +48,7 @@ ruseInstant f ht usemods = RightUse
, _useDelay = NoDelay
, _useMods = usemods
, _useHammer = ht
, _useAim = defaultAimParams
}
defaultrUse :: ItemUse
@@ -53,19 +57,27 @@ defaultrUse = RightUse
, _useDelay = DelayRate {_rateMax = 8, _rateTime = 0}
, _useMods = []
, _useHammer = HasHammer HammerUp
, _useAim = defaultAimParams
}
defaultlUse :: ItemUse
defaultlUse = LeftUse
{ _lUse = \_ _ -> id
, _itUseDelay = DelayRate {_rateMax = 8, _rateTime = 0}
, _itHammer = NoHammer
, _useDelay = DelayRate {_rateMax = 8, _rateTime = 0}
, _useHammer = NoHammer
}
luseInstantNoH :: (Creature -> Int -> World -> World) -> ItemUse
luseInstantNoH f = LeftUse
{ _lUse = f
, _itUseDelay = NoDelay
, _itHammer = NoHammer
, _useDelay = NoDelay
, _useHammer = NoHammer
}
defaultAimParams :: AimParams
defaultAimParams = AimParams
{ _aimSpeed = 1
, _aimRange = 0
, _aimZoom = ItZoom 20 0.2 1
, _aimStance = OneHand
}
defaultGun :: Item
@@ -85,10 +97,7 @@ defaultGun = Weapon
(map (addZ 3) $ rectNESW 3 3 (-3) (-3))
(map (addZ 0) $ rectNESW 5 3 (-5) (-7))
)
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itZoom = ItZoom 20 0.2 1
, _itAimZoom = ItZoom 20 0.2 1
, _itEquipPict = pictureWeaponOnAim
, _itScroll = \_ _ -> id
, _itAttachment = NoItAttachment
@@ -98,7 +107,6 @@ defaultGun = Weapon
, _itInvColor = white
, _itTargeting = Nothing
, _itWorldTrigger = Nothing
, _itAimStance = OneHand
, _wpNumBarrels = 1
, _itDimension = defaultItemDimension
}
@@ -113,9 +121,7 @@ defaultItemDimension = ItemDimension
defaultAutoGun :: Item
defaultAutoGun = defaultGun
{ _itInvDisplay = basicWeaponDisplay
, _itAimStance = TwoHandTwist
}
& itUse . useAim . aimStance .~ TwoHandTwist
defaultShellAmmo :: AmmoType
defaultShellAmmo = ShellAmmo
{ _amPayload = const id