Fix blinking bug, shrinker and shield broken
This commit is contained in:
@@ -2,8 +2,7 @@ module Dodge.Creature.Impulse.UseItem
|
||||
( useItem
|
||||
, tryUseItem
|
||||
, useLeftItem
|
||||
)
|
||||
where
|
||||
) where
|
||||
import Dodge.Data
|
||||
import Dodge.Inventory
|
||||
|
||||
@@ -12,28 +11,21 @@ import Control.Lens
|
||||
import Data.Maybe
|
||||
|
||||
useItem :: Int -> World -> World
|
||||
useItem n w = itemEffect c it w
|
||||
useItem cid w = itemEffect cr it w
|
||||
where
|
||||
c = _creatures w IM.! n
|
||||
it = _crInv c IM.! _crInvSel c
|
||||
cr = _creatures w IM.! cid
|
||||
it = _crInv cr IM.! _crInvSel cr
|
||||
|
||||
tryUseItem
|
||||
:: Creature
|
||||
-> World
|
||||
-> World
|
||||
tryUseItem :: Creature -> World -> World
|
||||
tryUseItem cr' w = case w ^? creatures . ix (_crID cr') of
|
||||
Just cr -> itemEffect cr (_crInv cr IM.! _crInvSel cr) w
|
||||
Nothing -> w
|
||||
|
||||
itemEffect
|
||||
:: Creature
|
||||
-> Item
|
||||
-> World
|
||||
-> World
|
||||
itemEffect :: Creature -> Item -> World -> World
|
||||
itemEffect cr Consumable{_cnEffect=eff } w = maybe w (rmSelectedInvItem (_crID cr)) (eff (_crID cr) w)
|
||||
itemEffect cr it w = case it ^? itUse of
|
||||
Just (RightUse {_rUse = eff,_useMods = usemods}) -> foldr ($) eff usemods it cr w
|
||||
Just (LeftUse {}) -> w & creatures . ix (_crID cr) . crLeftInvSel ?~ _crInvSel cr
|
||||
Just RightUse {_rUse = eff,_useMods = usemods} -> foldr ($) eff usemods it cr w
|
||||
Just LeftUse {} -> w & creatures . ix (_crID cr) . crLeftInvSel ?~ _crInvSel cr
|
||||
_ -> w
|
||||
|
||||
--this is ugly
|
||||
|
||||
@@ -121,13 +121,14 @@ heldItemUpdate :: Item -> Item
|
||||
heldItemUpdate = invItemUpdate
|
||||
. (itUse %~ useupdate)
|
||||
where
|
||||
useupdate = (useDelay . rateTime %~ decreaseToZero)
|
||||
useupdate = id
|
||||
|
||||
invItemUpdate :: Item -> Item
|
||||
invItemUpdate = itUse %~ useupdate
|
||||
where
|
||||
useupdate = (useHammer . hammerPosition %~ moveHammerUp)
|
||||
. (useDelay . warmTime %~ decreaseToZero)
|
||||
. (useDelay . rateTime %~ decreaseToZero)
|
||||
moveHammerUp HammerDown = HammerReleased
|
||||
moveHammerUp HammerReleased = HammerUp
|
||||
moveHammerUp HammerUp = HammerUp
|
||||
|
||||
Reference in New Issue
Block a user