refactor: pass creature to weapon use function, as opposed to just id

This commit is contained in:
2021-05-23 22:07:46 +02:00
parent 3ae454acf4
commit cda035b1d1
11 changed files with 235 additions and 219 deletions
+10 -9
View File
@@ -8,29 +8,30 @@ import Control.Lens
--import Data.Maybe (maybe)
useItem :: Int -> World -> World
useItem n w = itemEffect n it w
useItem n w = itemEffect c it w
where
c = _creatures w IM.! n
it = _crInv c IM.! _crInvSel c
-- TODO this needs sorting out and possibly removing
crUseItem :: Creature -> World -> World
--crUseItem cr = itemEffect (_crID cr) (_crInv cr IM.! _crInvSel cr)
crUseItem cr = tryUseItem (_crID cr)
crUseItem cr = tryUseItem cr
tryUseItem
:: Int -- ^ Creature id
:: Creature
-> World
-> World
tryUseItem cid w = case w ^? creatures . ix cid of
Just cr -> itemEffect cid (_crInv cr IM.! _crInvSel cr) w
tryUseItem cr' w = case w ^? creatures . ix (_crID cr') of
Just cr -> itemEffect cr (_crInv cr IM.! _crInvSel cr) w
Nothing -> w
itemEffect
:: Int -- ^ Creature id (I am almost certain)
:: Creature
-> Item
-> World
-> World
itemEffect n Consumable{_cnEffect=eff } w = maybe w (rmSelectedInvItem n) (eff n w)
itemEffect n Weapon{_wpFire=eff} w = eff n w
itemEffect n Throwable{_twFire = eff} w = eff n w
itemEffect cr Consumable{_cnEffect=eff } w = maybe w (rmSelectedInvItem (_crID cr)) (eff (_crID cr) w)
itemEffect cr Weapon{_itUse=eff} w = eff cr w
itemEffect cr Throwable{_itUse = eff} w = eff cr w
itemEffect _ _ w = w