Cleanup, stop assigning hotkeys to unequipped items
This commit is contained in:
@@ -2,8 +2,10 @@ module Dodge.Creature.Impulse.UseItem (
|
||||
useItem,
|
||||
doTopInvLeftClick,
|
||||
itemEffect,
|
||||
tryUseL,
|
||||
) where
|
||||
|
||||
import Dodge.Hotkey
|
||||
import Control.Lens
|
||||
import Control.Monad
|
||||
import Data.Foldable
|
||||
@@ -50,7 +52,6 @@ itemEffect cr it w = case it ^. itUse of
|
||||
setuhamdown $
|
||||
hammerTest
|
||||
( toggleEquipmentAt (_rbOptions w) itRef cr
|
||||
. activateEquipmentAt (_rbOptions w) cr
|
||||
)
|
||||
|
||||
tryReload :: Creature -> Item -> Input -> (World -> World) -> World -> World
|
||||
@@ -68,13 +69,6 @@ itNeedsLoading it = _laLoaded ic == 0 || not (_laPrimed ic)
|
||||
where
|
||||
ic = _heldConsumption (_itUse it)
|
||||
|
||||
activateEquipmentAt :: RightButtonOptions -> Creature -> World -> World
|
||||
activateEquipmentAt rbo cr =
|
||||
cWorld . lWorld . creatures . ix (_crID cr) %~ case (rbo ^? opActivateEquipment . activateEquipment, rbo ^? opActivateEquipment . deactivateEquipment) of
|
||||
(Just i, _) -> crLeftInvSel . lisMPos ?~ i
|
||||
(_, Just _) -> crLeftInvSel . lisMPos .~ Nothing
|
||||
_ -> id
|
||||
|
||||
toggleEquipmentAt :: RightButtonOptions -> Int -> Creature -> World -> World
|
||||
toggleEquipmentAt rbops invid cr w = case rbops ^? opAllocateEquipment of
|
||||
Just DoNotMoveEquipment -> w
|
||||
@@ -83,6 +77,7 @@ toggleEquipmentAt rbops invid cr w = case rbops ^? opAllocateEquipment of
|
||||
& crpoint . crEquipment . at newp ?~ invid
|
||||
& crpoint . crInvEquipped . at invid ?~ newp
|
||||
& onequip itm cr
|
||||
& assignNewHotkey invid
|
||||
Just MoveEquipment{_allocNewPos = newp, _allocOldPos = oldp} ->
|
||||
w
|
||||
& crpoint . crEquipment . at newp ?~ invid
|
||||
@@ -101,11 +96,14 @@ toggleEquipmentAt rbops invid cr w = case rbops ^? opAllocateEquipment of
|
||||
& crpoint . crInvEquipped . at rid .~ Nothing
|
||||
& onremove (itmat rid) cr
|
||||
& onequip itm cr
|
||||
& crpoint %~ removeHotkey rid
|
||||
& assignNewHotkey invid
|
||||
Just RemoveEquipment{_allocOldPos = oldp} ->
|
||||
w
|
||||
& crpoint . crEquipment . at oldp .~ Nothing
|
||||
& crpoint . crInvEquipped . at invid .~ Nothing
|
||||
& onremove itm cr
|
||||
& crpoint %~ removeHotkey invid
|
||||
Nothing -> error "tried to toggle equipment when not prepared"
|
||||
where
|
||||
crpoint = cWorld . lWorld . creatures . ix (_crID cr)
|
||||
@@ -118,10 +116,6 @@ toggleEquipmentAt rbops invid cr w = case rbops ^? opAllocateEquipment of
|
||||
doTopInvLeftClick :: Creature -> World -> World
|
||||
doTopInvLeftClick cr w = fromMaybe w $ do
|
||||
guard . not $ _crInvLock cr
|
||||
return $ doTopInvLeftClick' cr w
|
||||
|
||||
doTopInvLeftClick' :: Creature -> World -> World
|
||||
doTopInvLeftClick' cr w = fromMaybe (doTopInvLeftClickSearch cr w) $ do
|
||||
invid <- cr ^? crManipulation . manObject . inInventory . ispItem
|
||||
ituse <- cr ^? crInv . ix invid . itUse
|
||||
case ituse of
|
||||
@@ -136,11 +130,6 @@ equipAndUse useonequip invid cr w = case cr ^? crInvEquipped . ix invid of
|
||||
| otherwise -> useItem cr w
|
||||
_ -> tryUseL (_crID cr) invid w
|
||||
|
||||
doTopInvLeftClickSearch :: Creature -> World -> World
|
||||
doTopInvLeftClickSearch cr w = fromMaybe w $ do
|
||||
invid <- cr ^. crLeftInvSel . lisMPos
|
||||
return $ tryUseL (_crID cr) invid w
|
||||
|
||||
tryUseL :: Int -> Int -> World -> World
|
||||
tryUseL crid invid w = fromMaybe w $ do
|
||||
cr <- w ^? cWorld . lWorld . creatures . ix crid
|
||||
|
||||
Reference in New Issue
Block a user