diff options
Diffstat (limited to 'users/grfn/xanthous/src/Xanthous/Entities/Common.hs')
-rw-r--r-- | users/grfn/xanthous/src/Xanthous/Entities/Common.hs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/users/grfn/xanthous/src/Xanthous/Entities/Common.hs b/users/grfn/xanthous/src/Xanthous/Entities/Common.hs index 1444f3ce1639..becd1b1ef62e 100644 --- a/users/grfn/xanthous/src/Xanthous/Entities/Common.hs +++ b/users/grfn/xanthous/src/Xanthous/Entities/Common.hs @@ -8,6 +8,7 @@ module Xanthous.Entities.Common ( -- * Inventory Inventory(..) + , HasInventory(..) , backpack , wielded , items @@ -191,6 +192,10 @@ instance Semigroup Inventory where instance Monoid Inventory where mempty = Inventory mempty $ Hands Nothing Nothing +class HasInventory s a | s -> a where + inventory :: Lens' s a + {-# MINIMAL inventory #-} + -- | Representation for where in the inventory an item might be data InventoryPosition = Backpack @@ -224,7 +229,7 @@ itemsWithPosition :: Fold Inventory (InventoryPosition, Item) itemsWithPosition = folding $ (<>) <$> backpackItems <*> handItems where backpackItems = toListOf $ backpack . folded . to (Backpack ,) - handItems inventory = case inventory ^. wielded of + handItems inv = case inv ^. wielded of DoubleHanded i -> pure (BothHands, i ^. wieldedItem) Hands l r -> (l ^.. folded . wieldedItem . to (LeftHand ,)) <> (r ^.. folded . wieldedItem . to (RightHand ,)) |