refactor: pass creature to weapon use function, as opposed to just id
This commit is contained in:
@@ -30,11 +30,11 @@ import System.Random
|
||||
--import qualified Data.Map as M
|
||||
|
||||
startReloadingWeapon
|
||||
:: Int -- ^ Creature id
|
||||
:: Creature
|
||||
-> World
|
||||
-> Maybe World
|
||||
startReloadingWeapon cid w =
|
||||
let cr = _creatures w IM.! cid
|
||||
startReloadingWeapon cr w =
|
||||
let cid = _crID cr
|
||||
it = _crInv cr IM.! _crInvSel cr
|
||||
itRef = creatures . ix cid . crInv . ix (_crInvSel cr)
|
||||
in case it of
|
||||
@@ -54,15 +54,16 @@ crAutoReload cr = case cr ^? crInv . ix (_crInvSel cr) . wpLoadedAmmo of
|
||||
maxA = cr ^? crInv . ix (_crInvSel cr) . wpMaxAmmo
|
||||
{- | Teleport a creature to the mouse position -}
|
||||
blinkAction
|
||||
:: Int -- ^ Creature id
|
||||
:: Creature
|
||||
-> World
|
||||
-> World
|
||||
blinkAction n w
|
||||
blinkAction cr w
|
||||
= soundOnce teleSound
|
||||
. set (creatures . ix n . crPos) p3
|
||||
. blinkShockwave n p3
|
||||
$ inverseShockwaveAt cp 40 2 2 2 w
|
||||
where
|
||||
n = _crID cr
|
||||
p1 = _cameraCenter w +.+ (1 / _cameraZoom w) *.* rotateV (_cameraRot w) (_mousePos w)
|
||||
cp = _crPos $ _creatures w IM.! n
|
||||
p2 = reflectPointWalls cp p1 $ wallsAlongLine cp p1 w
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user