From 4b11859d046b470a87d73edc8447ed73a3f7a6da Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Wed, 24 Nov 2021 17:10:47 -0500 Subject: feat(gs/xanthous): Allow generating creatures with items Add an `equippedItems` field to the CreatureType raw, which provides a chance for generating that creature with an item equipped, which goes into a new `inventory` field on the creature entity itself. Currently the creature doesn't actually *use* this equipped item, but it's a step. This commit also adds a broken-dagger equipped 90% of the time to the "husk" creature. Change-Id: I6416c0678ba7bc1b002c5ce6119f7dc97dd86437 --- users/grfn/xanthous/src/Xanthous/Entities/Common.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'users/grfn/xanthous/src/Xanthous/Entities/Common.hs') 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 ,)) -- cgit 1.4.1