Add file
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
module Dodge.Inventory.CheckSlots where
|
||||||
|
import Dodge.Data
|
||||||
|
import Dodge.Base.You
|
||||||
|
|
||||||
|
--import Control.Lens
|
||||||
|
import qualified Data.IntMap.Strict as IM
|
||||||
|
|
||||||
|
-- | checks whether or not an item will fit in your inventory
|
||||||
|
-- if so return Just the next slot to be used
|
||||||
|
checkInvSlotsYou :: Item -> World -> Maybe Int
|
||||||
|
checkInvSlotsYou it w
|
||||||
|
| crNumFreeSlots ycr >= _itInvSize it
|
||||||
|
= Just $ maybe 0 ((+1) . fst) $ IM.lookupMax inv
|
||||||
|
| otherwise = Nothing
|
||||||
|
where
|
||||||
|
ycr = you w
|
||||||
|
inv = _crInv ycr
|
||||||
|
|
||||||
|
crNumFreeSlots :: Creature -> Int
|
||||||
|
crNumFreeSlots cr = _crInvCapacity cr - invSize (_crInv cr)
|
||||||
|
|
||||||
|
crInvSize :: Creature -> Int
|
||||||
|
crInvSize = invSize . _crInv
|
||||||
|
|
||||||
|
invSize :: IM.IntMap Item -> Int
|
||||||
|
invSize = sum . fmap _itInvSize
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
module Dodge.Inventory.PickUp where
|
||||||
|
import Dodge.Data
|
||||||
|
import Dodge.Inventory.CheckSlots
|
||||||
|
|
||||||
|
import Control.Lens
|
||||||
|
import qualified Data.IntMap.Strict as IM
|
||||||
|
|
||||||
|
putItemInInvID :: Int -> Int -> World -> World
|
||||||
|
putItemInInvID cid flid w = putItemInInv cid (_floorItems w IM.! flid) w
|
||||||
|
|
||||||
|
|
||||||
|
{- | Pick up a specific item. -}
|
||||||
|
putItemInInv :: Int -> FloorItem -> World -> World
|
||||||
|
putItemInInv cid flit w = case maybeInvSlot of
|
||||||
|
Nothing -> w
|
||||||
|
Just i -> w
|
||||||
|
& updateItLocation i
|
||||||
|
& floorItems %~ IM.delete (_flItID flit)
|
||||||
|
& creatures . ix cid . crInv %~ IM.insertWith (const $ itAmount +~ 1) i it
|
||||||
|
where
|
||||||
|
it = _flIt flit
|
||||||
|
maybeInvSlot = checkInvSlotsYou it w
|
||||||
|
updateItLocation invid w' = case _itID it of
|
||||||
|
Nothing -> w'
|
||||||
|
Just j -> w' & itemPositions . ix j .~ InInv 0 invid
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
module Dodge.Item.Instance
|
||||||
|
( module Dodge.Item.Weapon
|
||||||
|
, module Dodge.Item.Craftable
|
||||||
|
) where
|
||||||
|
import Dodge.Item.Weapon
|
||||||
|
import Dodge.Item.Craftable
|
||||||
Reference in New Issue
Block a user