Fix blinking bug, shrinker and shield broken

This commit is contained in:
2021-11-28 00:34:16 +00:00
parent fe02739621
commit 3e64e33232
10 changed files with 36 additions and 42 deletions
+8 -16
View File
@@ -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