Centralise mouse context data

This commit is contained in:
2024-11-10 18:26:30 +00:00
parent f35dfc66bd
commit 713d3e3265
10 changed files with 123 additions and 125 deletions
+11 -14
View File
@@ -6,6 +6,7 @@ Description : Simulation update
-}
module Dodge.Update (updateUniverse) where
import Control.Applicative
import Color
import Control.Monad
import Data.List
@@ -283,8 +284,7 @@ functionalUpdate u =
. over uvWorld updateCloseObjects
. over uvWorld updateWheelEvents
. over uvWorld (updateMouseInventorySelection (u ^. uvConfig))
. over uvWorld (updateMouseOverInventory (u ^. uvConfig))
. over uvWorld (updateMouseOverCombineInventory (u ^. uvConfig))
. over uvWorld (updateMouseContext (u ^. uvConfig))
. over uvWorld zoneClouds
. over uvWorld zoneCreatures
-- . over uvWorld updateInventorySelectionList
@@ -387,24 +387,21 @@ shiftInvItemsDown (_, i) x w = fromMaybe w $ do
f w' i' = swapInvItems g i' w'
g i' m = fst <$> IM.lookupGT i' m
updateMouseOverInventory :: Configuration -> World -> World
updateMouseOverInventory cfig w =
w & hud . hudElement . diMouseOver .~ newmouseover
updateMouseContext :: Configuration -> World -> World
updateMouseContext cfig w =
w & input . mouseContext .~ fromMaybe NoMouseContext
(overinv <|> overcomb <|> overterm)
where
newmouseover = do
overinv = do
sss <- w ^? hud . hudElement . diSections
guard $
ButtonRight `M.notMember` (w ^. input . mouseButtons)
|| not (null $ w ^? hud . hudElement . subInventory . ciSelection)
inverseSelNumPos cfig (invDisplayParams w) sss (w ^. input . mousePos)
updateMouseOverCombineInventory :: Configuration -> World -> World
updateMouseOverCombineInventory cfig w =
w & hud . hudElement . subInventory . ciMouseOver .~ newmouseover
where
newmouseover = do
fmap OverInv $ inverseSelNumPos cfig (invDisplayParams w) sss (w ^. input . mousePos)
overcomb = do
sss <- w ^? hud . hudElement . subInventory . ciSections
inverseSelNumPos cfig secondColumnParams sss (w ^. input . mousePos)
fmap OverCombInv $ inverseSelNumPos cfig secondColumnParams sss (w ^. input . mousePos)
overterm = Nothing
updateWheelEvents :: World -> World
updateWheelEvents w