diff options
author | Griffin Smith <grfn@gws.fyi> | 2022-04-16T20·01-0400 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2022-04-16T20·30+0000 |
commit | 632c4280b5c8ad717a7ce7b08c49ad93630c8db4 (patch) | |
tree | bbad01ebd150802dd400caccb2afedfdd6e8a4fd /users/grfn/xanthous/src/Xanthous/App.hs | |
parent | 8da2fce9ef93ae78855338c0917eea65dd4c45d7 (diff) |
feat(xanthous): Allow selecting hand for wielding r/3962
When wielding items, allow selecting which hand the item should be wielded in. Currently this has no actual effect on the mechanics of combat - that'll come next. Change-Id: Ic289ca2d8fa6f5fc0ad5bd0b012818a3acd8599e Reviewed-on: https://cl.tvl.fyi/c/depot/+/5470 Reviewed-by: grfn <grfn@gws.fyi> Autosubmit: grfn <grfn@gws.fyi> Tested-by: BuildkiteCI
Diffstat (limited to 'users/grfn/xanthous/src/Xanthous/App.hs')
-rw-r--r-- | users/grfn/xanthous/src/Xanthous/App.hs | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/users/grfn/xanthous/src/Xanthous/App.hs b/users/grfn/xanthous/src/Xanthous/App.hs index d4ffb226305a..fdc648dda42e 100644 --- a/users/grfn/xanthous/src/Xanthous/App.hs +++ b/users/grfn/xanthous/src/Xanthous/App.hs @@ -54,12 +54,12 @@ import Xanthous.Physics (throwDistance, bluntThrowDamage) import Xanthous.Data.EntityMap.Graphics (lineOfSight) import Xanthous.Data.EntityMap (EntityID) -------------------------------------------------------------------------------- --------------------------------------------------------------------------------- import Xanthous.Entities.Common ( InventoryPosition, describeInventoryPosition, backpack , wieldableItem, wieldedItems, wielded, itemsWithPosition - , removeItemFromPosition, asWieldedItem, inRightHand - , wieldedItem, items + , removeItemFromPosition, asWieldedItem + , wieldedItem, items, Hand (..), describeHand, wieldInHand + , WieldedItem ) import qualified Xanthous.Entities.Character as Character import Xanthous.Entities.Character hiding (pickUpItem) @@ -296,14 +296,30 @@ handleCommand DescribeInventory = do handleCommand Wield = do - takeItemFromInventory_ ["wield", "menu"] Cancellable asWieldedItem - (say_ ["wield", "nothing"]) - $ \(MenuResult item) -> do - prevItems <- character . inventory . wielded <<.= inRightHand item + selectItem $ \(MenuResult (item :: WieldedItem)) -> do + selectHand $ \(MenuResult hand) -> do + prevItems <- character . inventory . wielded %%= wieldInHand hand item character . inventory . backpack - <>= fromList (prevItems ^.. wieldedItems . wieldedItem) - say ["wield", "wielded"] item + <>= fromList (map (view wieldedItem) prevItems) + say ["wield", "wielded"] $ object [ "item" A..= item + , "hand" A..= describeHand hand + ] continue + where + selectItem = + takeItemFromInventory_ ["wield", "menu"] Cancellable asWieldedItem + (say_ ["wield", "nothing"]) + selectHand + = menu_ + ["wield", "hand"] + Cancellable + handsMenu + handsMenu = mapFromList + . map (second $ MenuOption =<< describeHand) + $ [ ('l', LeftHand) + , ('r', RightHand) + , ('b', BothHands) + ] handleCommand Fire = do selectItemFromInventory_ ["fire", "menu"] Cancellable id |