Move nozzle walk into item params, cleanup
This commit is contained in:
@@ -12,9 +12,7 @@ import Control.Lens
|
||||
--import Dodge.Data.Item.Use.Consumption.Ammo
|
||||
|
||||
data CumulativeMuzzleEffect = CME
|
||||
{ _cmeRecoil :: Float
|
||||
, _cmeTorque :: Float
|
||||
, _cmeSound :: Bool
|
||||
{ _cmeSound :: Bool
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
+7
-14
@@ -138,7 +138,7 @@ heldEffectMuzzles :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -
|
||||
heldEffectMuzzles t cr w =
|
||||
doHeldUseEffect t cr .
|
||||
uncurry (applyCME (_ldtValue t) cr) .
|
||||
foldl' (useLoadedAmmo t cr) (CME 0 0 False, w) $ zip [0 ..] loadedmuzzles
|
||||
foldl' (useLoadedAmmo t cr) (CME False, w) $ loadedmuzzles
|
||||
where
|
||||
-- & doWeaponRepetitions upitm cr
|
||||
|
||||
@@ -558,10 +558,10 @@ useLoadedAmmo ::
|
||||
LabelDoubleTree ComposeLinkType Item ->
|
||||
Creature ->
|
||||
(CumulativeMuzzleEffect, World) ->
|
||||
(Int, Maybe (Muzzle, Int, LabelDoubleTree ComposeLinkType Item)) ->
|
||||
Maybe (Muzzle, Int, LabelDoubleTree ComposeLinkType Item) ->
|
||||
(CumulativeMuzzleEffect, World)
|
||||
useLoadedAmmo _ _ (cme, w) (_, Nothing) = (cme, w)
|
||||
useLoadedAmmo itmtree cr (cme, w) (mzid, Just (mz, x, magtree)) = (,) (cme & cmeSound .~ True) $
|
||||
useLoadedAmmo _ _ (cme, w) Nothing = (cme, w)
|
||||
useLoadedAmmo itmtree cr (cme, w) (Just (mz, x, magtree)) = (,) (cme & cmeSound .~ True) $
|
||||
removeAmmoFromMag x mid cr . makeMuzzleFlare mz itmtree cr $ case _mzEffect mz of
|
||||
MuzzleShootBullet -> shootBullet itmtree cr (mz, x, magtree) w
|
||||
MuzzleLaser -> creatureShootLaser itmtree cr mz w
|
||||
@@ -576,7 +576,7 @@ useLoadedAmmo itmtree cr (cme, w) (mzid, Just (mz, x, magtree)) = (,) (cme & cme
|
||||
mz
|
||||
cr
|
||||
w
|
||||
MuzzleNozzle{} -> useGasParams mid mz itm cr $ walkNozzle mzid mz itm cr w
|
||||
MuzzleNozzle{} -> useGasParams mid mz itm cr $ walkNozzle mz itm cr w
|
||||
MuzzleShatter -> shootShatter itm cr w
|
||||
MuzzleDetector ->
|
||||
itemDetectorEffect
|
||||
@@ -615,20 +615,14 @@ itemDetectorEffect itm mitid armitid cr w = fromMaybe w $ do
|
||||
f CREATUREDETECTOR = ObCreature
|
||||
f WALLDETECTOR = ObWall
|
||||
|
||||
walkNozzle :: Int -> Muzzle -> Item -> Creature -> World -> World
|
||||
walkNozzle mzid mz itm cr w = fromMaybe w $ do
|
||||
walkNozzle :: Muzzle -> Item -> Creature -> World -> World
|
||||
walkNozzle mz itm cr w = fromMaybe w $ do
|
||||
invid <- itm ^? itLocation . ilInvID
|
||||
return $
|
||||
w
|
||||
& cWorld . lWorld . creatures . ix (_crID cr) . crInv
|
||||
. ix invid
|
||||
. itParams . nzAngle %~ f
|
||||
-- . itUse
|
||||
-- . heldMuzzles
|
||||
-- . ix mzid
|
||||
-- . mzEffect
|
||||
-- . nzCurrentWalkAngle
|
||||
-- .~ wa
|
||||
& randGen .~ g
|
||||
where
|
||||
nz = _mzEffect mz
|
||||
@@ -636,7 +630,6 @@ walkNozzle mzid mz itm cr w = fromMaybe w $ do
|
||||
aspeed = _nzWalkSpeed nz
|
||||
maxa = _nzMaxWalkAngle nz
|
||||
f x = min maxa $ max (negate maxa) (x + walkamount)
|
||||
-- wa = min maxa $ max (negate maxa) (_nzCurrentWalkAngle nz + walkamount)
|
||||
|
||||
shootTractorBeam :: Creature -> World -> World
|
||||
shootTractorBeam cr w =
|
||||
|
||||
Reference in New Issue
Block a user