diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index cb1df4f2b..e8b280e82 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -188,8 +188,8 @@ dropItem cr invid w' = itid <- cr ^? crInv . ix (NInt invid) w' ^? cWorld . lWorld . items . ix itid maybeshiftseldown w = fromMaybe w $ do - 3 <- w ^? hud . hudElement . diSelection . _Just . _1 - return $ w & hud . hudElement . diSelection . _Just . _2 +~ 1 + 3 <- w ^? hud . diSelection . _Just . _1 + return $ w & hud . diSelection . _Just . _2 +~ 1 -- | Get your creature to drop the item under the cursor. youDropItem :: World -> World diff --git a/src/Dodge/Creature/Impulse/UseItem.hs b/src/Dodge/Creature/Impulse/UseItem.hs index f61e73b36..3dcb972e3 100644 --- a/src/Dodge/Creature/Impulse/UseItem.hs +++ b/src/Dodge/Creature/Impulse/UseItem.hs @@ -106,11 +106,11 @@ toggleEquipmentAt invid cr w = case getEquipmentAllocation invid w of onremove itm' = effectOnRemove itm' toggleExamineInv :: World -> World -toggleExamineInv w = case w ^? hud . hudElement . subInventory of - Just ExamineInventory{} -> w & hud . hudElement . subInventory .~ NoSubInventory - _ -> w & hud . hudElement . subInventory .~ ExamineInventory +toggleExamineInv w = case w ^? hud . subInventory of + Just ExamineInventory{} -> w & hud . subInventory .~ NoSubInventory + _ -> w & hud . subInventory .~ ExamineInventory toggleMapperInv :: Item -> World -> World -toggleMapperInv itm w = case w ^? hud . hudElement . subInventory of - Just MapperInventory{} -> w & hud . hudElement . subInventory .~ NoSubInventory - _ -> w & hud . hudElement . subInventory .~ MapperInventory 0 1 (_itID itm) +toggleMapperInv itm w = case w ^? hud . subInventory of + Just MapperInventory{} -> w & hud . subInventory .~ NoSubInventory + _ -> w & hud . subInventory .~ MapperInventory 0 1 (_itID itm) diff --git a/src/Dodge/Creature/YourControl.hs b/src/Dodge/Creature/YourControl.hs index c880b1ff1..63fbe2e01 100644 --- a/src/Dodge/Creature/YourControl.hs +++ b/src/Dodge/Creature/YourControl.hs @@ -29,7 +29,7 @@ import qualified SDL yourControl :: Creature -> World -> World yourControl _ w | inTextInputFocus w = w - | Just x <- w ^? hud . hudElement . subInventory + | Just x <- w ^? hud . subInventory , f x = w & cWorld . lWorld . creatures . ix 0 %~ wasdWithAiming w diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index bdbebfee3..f6b53e326 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -5,42 +5,36 @@ module Dodge.Data.HUD where -import qualified Data.IntSet as IS -import Dodge.Data.Item.Location -import NewInt import Control.Lens -import Data.IntMap import Data.IntSet (IntSet) +import qualified Data.IntSet as IS import Dodge.Data.Combine +import Dodge.Data.Item.Location import Dodge.Data.SelectionList import Geometry.Data - -data HUDElement - = DisplayInventory - { _subInventory :: SubInventory - , _diSections :: IMSS () - , _diSelection :: Maybe (Int, Int, IntSet) - , _diInvFilter :: Maybe String - , _diCloseFilter :: Maybe String - } +import NewInt data SubInventory = NoSubInventory | ExamineInventory - | MapperInventory - {_mapInvOffset :: Point2 + | MapperInventory + { _mapInvOffset :: Point2 , _mapInvZoom :: Float , _mapInvItmID :: NewInt ItmInt } | CombineInventory - { _ciSections :: IntMap (SelectionSection CombinableItem) + { _ciSections :: IMSS CombinableItem , _ciSelection :: Maybe (Int, Int, IS.IntSet) , _ciFilter :: Maybe String } | DisplayTerminal {_termID :: Int} data HUD = HUD - { _hudElement :: HUDElement + { _subInventory :: SubInventory + , _diSections :: IMSS () + , _diSelection :: Maybe (Int, Int, IntSet) + , _diInvFilter :: Maybe String + , _diCloseFilter :: Maybe String , _carteCenter :: Point2 , _carteZoom :: Float , _carteRot :: Float @@ -48,6 +42,9 @@ data HUD = HUD , _closeButtons :: [Int] } +data Selection + = Sel {_slSec :: Int, _slInt :: Int, _slSet :: IS.IntSet} + | NoSel + makeLenses ''HUD -makeLenses ''HUDElement makeLenses ''SubInventory diff --git a/src/Dodge/Data/SelectionList.hs b/src/Dodge/Data/SelectionList.hs index d20e2b517..9e35fa766 100644 --- a/src/Dodge/Data/SelectionList.hs +++ b/src/Dodge/Data/SelectionList.hs @@ -36,9 +36,7 @@ data SelectionSection a = SelectionSection type IMSS a = IntMap (SelectionSection a) -data SelectionWidth - = FixedSelectionWidth Int - | UseItemWidth +data SelectionWidth = FixedSelectionWidth Int | UseItemWidth data SelectionItem a = SelItem diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index f03d171fb..e04ac2d81 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -159,20 +159,14 @@ defaultLWorld = defaultHUD :: HUD defaultHUD = HUD - { _hudElement = defaultDisplayInventory + { _subInventory = NoSubInventory + , _diSections = mempty + , _diSelection = Just (1, 0, mempty) + , _diInvFilter = mempty + , _diCloseFilter = mempty , _carteCenter = V2 0 0 , _carteZoom = 0.5 , _carteRot = 0 , _closeItems = mempty , _closeButtons = mempty } - -defaultDisplayInventory :: HUDElement -defaultDisplayInventory = - DisplayInventory - { _subInventory = NoSubInventory - , _diSections = mempty - , _diSelection = Just (1, 0, mempty) - , _diInvFilter = mempty - , _diCloseFilter = mempty - } diff --git a/src/Dodge/DisplayInventory.hs b/src/Dodge/DisplayInventory.hs index 1ec0cb928..c9e8f2718 100644 --- a/src/Dodge/DisplayInventory.hs +++ b/src/Dodge/DisplayInventory.hs @@ -39,9 +39,9 @@ import Picture.Base updateCombinePositioning :: Universe -> Universe updateCombinePositioning u = u - & uvWorld . hud . hudElement . subInventory . ciSections + & uvWorld . hud . subInventory . ciSections %~ updateCombineSections (_uvWorld u) (_uvConfig u) - & uvWorld . hud . hudElement . subInventory %~ checkCombineSelectionExists + & uvWorld . hud . subInventory %~ checkCombineSelectionExists updateCombineSections :: World -> @@ -51,18 +51,18 @@ updateCombineSections :: updateCombineSections w cfig = updateSectionsPositioning (const 0) - (w ^? hud . hudElement . subInventory . ciSelection . _Just) + (w ^? hud . subInventory . ciSelection . _Just) (getAvailableListLines secondColumnParams cfig) (IM.fromDistinctAscList [(-1, sfclose),(0, sclose')]) where - filtcurs = w ^? hud . hudElement . subInventory . ciSelection . _Just . _1 == Just (-1) + filtcurs = w ^? hud . subInventory . ciSelection . _Just . _1 == Just (-1) (sfclose, sclose) = filterSectionsPair filtcurs (flip . andOrRegex $ regexCombs invitms) (IM.fromDistinctAscList . zip [0 ..] $ combineList w) "COMBINATIONS" - $ w ^? hud . hudElement . subInventory . ciFilter . _Just + $ w ^? hud . subInventory . ciFilter . _Just invitms = _unNIntMap $ fmap (\k -> w ^?! cWorld . lWorld . items . ix k) $ fold $ w ^? cWorld . lWorld . creatures . ix 0 . crInv sclose' | null sclose = @@ -87,17 +87,17 @@ orRegex f x str = case words str of updateInventoryPositioning :: Universe -> Universe updateInventoryPositioning u = - u & uvWorld . hud . hudElement . diSections + u & uvWorld . hud . diSections %~ updateDisplaySections (_uvWorld u) (_uvConfig u) & uvWorld %~ checkInventorySelectionExists checkInventorySelectionExists :: World -> World checkInventorySelectionExists w - | isJust $ w ^? hud . hudElement . diSections . ix i . ssItems . ix j = w + | isJust $ w ^? hud . diSections . ix i . ssItems . ix j = w | otherwise = scrollAugNextInSection w where - (i, j, _) = fromMaybe (1, -1, mempty) $ w ^? hud . hudElement . diSelection . _Just + (i, j, _) = fromMaybe (1, -1, mempty) $ w ^? hud . diSelection . _Just checkCombineSelectionExists :: SubInventory -> SubInventory checkCombineSelectionExists si @@ -135,15 +135,15 @@ updateDisplaySections w cfig = ] ) where - mselpos = w ^? hud . hudElement . diSelection . _Just + mselpos = w ^? hud . diSelection . _Just invfiltcurs = mselpos ^? _Just . _1 == Just (-1) (sfinv, sinv) = filterSectionsPair invfiltcurs plainRegex invitems "INVENTORY" $ - w ^? hud . hudElement . diInvFilter . _Just + w ^? hud . diInvFilter . _Just closefiltcurs = mselpos ^? _Just . _1 == Just 2 (sfclose, sclose) = filterSectionsPair closefiltcurs plainRegex closeitms "NEARBY ITEMS" $ - w ^? hud . hudElement . diCloseFilter . _Just + w ^? hud . diCloseFilter . _Just nearbyhead | null sfclose && not (null sclose) = makehead "NEARBY ITEMS" | otherwise = sfclose @@ -315,16 +315,16 @@ regexList = any . List.isInfixOf toggleCombineInv :: Universe -> Universe toggleCombineInv uv = - uv & case uv ^? uvWorld . hud . hudElement . subInventory of - Just CombineInventory{} -> uvWorld . hud . hudElement . subInventory .~ NoSubInventory + uv & case uv ^? uvWorld . hud . subInventory of + Just CombineInventory{} -> uvWorld . hud . subInventory .~ NoSubInventory _ -> uvWorld %~ enterCombineInv (uv ^. uvConfig) enterCombineInv :: Configuration -> World -> World enterCombineInv cfig w = - w & hud . hudElement . subInventory + w & hud . subInventory .~ CombineInventory { _ciSections = updateCombineSections w cfig mempty , _ciSelection = Just (0,0,mempty) , _ciFilter = Nothing } - & hud . hudElement . diInvFilter .~ Nothing + & hud . diInvFilter .~ Nothing diff --git a/src/Dodge/InputFocus.hs b/src/Dodge/InputFocus.hs index 1080eb4f2..bf4ba9a90 100644 --- a/src/Dodge/InputFocus.hs +++ b/src/Dodge/InputFocus.hs @@ -15,13 +15,13 @@ textInputFocus :: Applicative f => World -> Maybe ((String -> f String) -> World -> f World) -textInputFocus w = case w ^? hud . hudElement . subInventory of +textInputFocus w = case w ^? hud . subInventory of Just NoSubInventory{} -> case he ^? diSelection . _Just . _1 of - Just (-1) -> Just $ hud . hudElement . diInvFilter . _Just - Just 2 -> Just $ hud . hudElement . diCloseFilter . _Just + Just (-1) -> Just $ hud . diInvFilter . _Just + Just 2 -> Just $ hud . diCloseFilter . _Just _ -> Nothing Just CombineInventory{} -> case he ^? subInventory . ciSelection . _Just . _1 of - Just (-1) -> Just $ hud . hudElement . subInventory . ciFilter . _Just + Just (-1) -> Just $ hud . subInventory . ciFilter . _Just _ -> Nothing Just DisplayTerminal{_termID = tmid} -> do -- connectionstatus <- w ^? cWorld . lWorld . terminals . ix tmid . tmStatus @@ -29,4 +29,4 @@ textInputFocus w = case w ^? hud . hudElement . subInventory of return $ cWorld . lWorld . terminals . ix tmid . tmStatus . tiText _ -> Nothing where - he = w ^. hud . hudElement + he = w ^. hud diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index d4f6e11da..79b8fd774 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -87,7 +87,7 @@ rmInvItem cid invid w = where pointcid = cWorld . lWorld . creatures . ix cid updateselectionextra - | cid == 0 = hud . hudElement . diSelection . _Just . _3 %~ const mempty + | cid == 0 = hud . diSelection . _Just . _3 %~ const mempty | otherwise = id updateselection | cid == 0 && cr ^? crManipulation . manObject . imSelectedItem == Just invid = @@ -154,7 +154,7 @@ changeSwapOther :: World -> World changeSwapOther manlens n f i w = fromMaybe w $ do - ss <- w ^? hud . hudElement . diSections . ix n . ssItems + ss <- w ^? hud . diSections . ix n . ssItems k <- f i ss let doswap j | j == i = k @@ -166,7 +166,7 @@ changeSwapOther manlens n f i w = fromMaybe w $ do & cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . manlens %~ doswap & hud . closeItems %~ swapIndices i k - & hud . hudElement . diSelection . _Just . _2 %~ doswap + & hud . diSelection . _Just . _2 %~ doswap & worldEventFlags . at InventoryChange ?~ () swapItemWith :: @@ -182,7 +182,7 @@ swapItemWith f (j, i) = case j of changeSwapWith :: (Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) -> World -> World changeSwapWith f w - | Just (j,i,_) <- w ^. hud . hudElement . diSelection = swapItemWith f (j,i) w + | Just (j,i,_) <- w ^. hud . diSelection = swapItemWith f (j,i) w | otherwise = w --changeSwapWith :: (Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) -> World -> World @@ -195,7 +195,7 @@ changeSwapWith f w invSetSelection :: (Int, Int, IS.IntSet) -> World -> World invSetSelection sel w = w - & hud . hudElement . diSelection ?~ sel + & hud . diSelection ?~ sel & worldEventFlags . at InventoryChange ?~ () & setInvPosFromSS & cWorld . lWorld %~ crUpdateItemLocations 0 @@ -203,7 +203,7 @@ invSetSelection sel w = invSetSelectionPos :: Int -> Int -> World -> World invSetSelectionPos i j w = w - & hud . hudElement . diSelection %~ f + & hud . diSelection %~ f & worldEventFlags . at InventoryChange ?~ () & setInvPosFromSS & cWorld . lWorld %~ crUpdateItemLocations 0 @@ -215,7 +215,7 @@ scrollAugInvSel :: Int -> World -> World scrollAugInvSel yi w | yi == 0 = w | otherwise = - w & hud . hudElement %~ doscroll + w & hud %~ doscroll & worldEventFlags . at InventoryChange ?~ () & setInvPosFromSS & cWorld . lWorld %~ crUpdateItemLocations 0 @@ -226,7 +226,7 @@ scrollAugInvSel yi w scrollAugNextInSection :: World -> World scrollAugNextInSection w = - w & hud . hudElement %~ doscroll + w & hud %~ doscroll & worldEventFlags . at InventoryChange ?~ () & setInvPosFromSS & cWorld . lWorld %~ crUpdateItemLocations 0 diff --git a/src/Dodge/Inventory/Add.hs b/src/Dodge/Inventory/Add.hs index 23e186f48..31fc589ed 100644 --- a/src/Dodge/Inventory/Add.hs +++ b/src/Dodge/Inventory/Add.hs @@ -43,7 +43,7 @@ tryPutItemInInv cid itid w = do & updateselectionextra invid where updateselectionextra i - | cid == 0 = hud . hudElement . diSelection . _Just . _3 %~ IS.map (f i) + | cid == 0 = hud . diSelection . _Just . _3 %~ IS.map (f i) | otherwise = id f j i | i >= _unNInt j = i + 1 | otherwise = i diff --git a/src/Dodge/Inventory/Location.hs b/src/Dodge/Inventory/Location.hs index dd848df42..800a00fc1 100644 --- a/src/Dodge/Inventory/Location.hs +++ b/src/Dodge/Inventory/Location.hs @@ -97,7 +97,7 @@ setInvPosFromSS w = w & cWorld . lWorld . creatures . ix 0 . crManipulation . manObject .~ thesel where thesel = fromMaybe SelNothing $ do - (i, j, _) <- w ^? hud . hudElement . diSelection . _Just + (i, j, _) <- w ^? hud . diSelection . _Just case i of (-1) -> Just SortInventory 0 -> do diff --git a/src/Dodge/Inventory/SelectionList.hs b/src/Dodge/Inventory/SelectionList.hs index 69b1dd8b1..00f112621 100644 --- a/src/Dodge/Inventory/SelectionList.hs +++ b/src/Dodge/Inventory/SelectionList.hs @@ -88,7 +88,7 @@ itemExternalValue itm w cr displayPulse $ cr ^?! crType . avatarPulse . pulseProgress | Just t <- itm ^? itType . ibtIntroScanType = Just $ introScanValue cr t | ITEMSCAN <- itm ^. itType - , Just ExamineInventory <- w ^? hud . hudElement . subInventory + , Just ExamineInventory <- w ^? hud . subInventory = Just (Right "ON") | BINGATE <- itm ^. itType = do invid <- itm ^? itLocation . ilInvID diff --git a/src/Dodge/Inventory/Swap.hs b/src/Dodge/Inventory/Swap.hs index 1c77229ae..78ae6a4a3 100644 --- a/src/Dodge/Inventory/Swap.hs +++ b/src/Dodge/Inventory/Swap.hs @@ -24,11 +24,11 @@ swapInvItems :: World -> World swapInvItems f i w = fromMaybe w $ do - ss <- w ^? hud . hudElement . diSections . ix 0 . ssItems + ss <- w ^? hud . diSections . ix 0 . ssItems k <- f i ss - let updateselection = case w ^? hud . hudElement . diSelection . _Just of - Just (0, j,_) | j == k -> hud . hudElement . diSelection . _Just . _2 .~ i - Just (0, j,_) | j == i -> hud . hudElement . diSelection . _Just . _2 .~ k + let updateselection = case w ^? hud . diSelection . _Just of + Just (0, j,_) | j == k -> hud . diSelection . _Just . _2 .~ i + Just (0, j,_) | j == i -> hud . diSelection . _Just . _2 .~ k _ -> id return $ w @@ -55,11 +55,11 @@ swapInvItems f i w = fromMaybe w $ do swapAnyExtraSelection :: Int -> Int -> World -> World swapAnyExtraSelection i k w = fromMaybe w $ do - is <- w ^? hud . hudElement . diSelection . _Just . _3 + is <- w ^? hud . diSelection . _Just . _3 let f = if i `IS.member` is then IS.insert k else id g = if k `IS.member` is then IS.insert i else id return $ - w & hud . hudElement . diSelection . _Just . _3 + w & hud . diSelection . _Just . _3 %~ (f . g . IS.delete i . IS.delete k) checkConnection :: SoundOrigin -> SoundID -> Int -> Int -> World -> World diff --git a/src/Dodge/Item/BackgroundEffect.hs b/src/Dodge/Item/BackgroundEffect.hs index 5e594546b..cb87aa062 100644 --- a/src/Dodge/Item/BackgroundEffect.hs +++ b/src/Dodge/Item/BackgroundEffect.hs @@ -20,7 +20,7 @@ import Dodge.Wall.Move import Geometry.Vector cancelExamineInventory :: World -> World -cancelExamineInventory = hud . hudElement . subInventory %~ f +cancelExamineInventory = hud . subInventory %~ f where f ExamineInventory = NoSubInventory f x = x diff --git a/src/Dodge/ListDisplayParams.hs b/src/Dodge/ListDisplayParams.hs index c0736f0b5..99c4de861 100644 --- a/src/Dodge/ListDisplayParams.hs +++ b/src/Dodge/ListDisplayParams.hs @@ -34,7 +34,7 @@ invDP = & ldpPos . spPixelOff .~ V2 6 0 invCursorParams :: World -> CursorDisplay -invCursorParams w = BoundaryCursor $ case w ^? hud . hudElement . subInventory of +invCursorParams w = BoundaryCursor $ case w ^? hud . subInventory of -- Just ExamineInventory{} -> [North, South, East, West] Just CombineInventory{} -> [] _ | ButtonRight `M.member` _mouseButtons (_input w) -> [North, South, East, West] diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index f3ba71bf8..f3f1eca83 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -46,17 +46,17 @@ import Picture import SDL (MouseButton (..)) drawHUD :: Configuration -> World -> Picture -drawHUD cfig w = case w ^. hud . hudElement of +drawHUD cfig w = case w ^. hud of -- DisplayCarte -> drawCarte cfig w - DisplayInventory{_diSections = sections, _subInventory = subinv} -> + HUD {_diSections = sections, _subInventory = subinv} -> drawInventory sections w cfig <> drawSubInventory subinv cfig w drawInventory :: IM.IntMap (SelectionSection ()) -> World -> Configuration -> Picture drawInventory sss w cfig = drawSelectionSections sss invDP cfig - <> drawSSCursor sss invDP curs cfig (f $ w ^? hud . hudElement . diSelection . _Just) - <> drawRootCursor w sss (f $ w ^? hud . hudElement . diSelection . _Just) invDP cfig + <> drawSSCursor sss invDP curs cfig (f $ w ^? hud . diSelection . _Just) + <> drawRootCursor w sss (f $ w ^? hud . diSelection . _Just) invDP cfig <> itemconnections <> drawMouseOver cfig w where @@ -65,7 +65,7 @@ drawInventory sss w cfig = itemconnections = fromMaybe mempty $ do inv' <- w ^? cWorld . lWorld . creatures . ix 0 . crInv let inv = fmap (\k -> w ^?! cWorld . lWorld . items . ix k) inv' - case w ^? hud . hudElement . diInvFilter . _Just of + case w ^? hud . diInvFilter . _Just of Just (_ : _) -> Nothing _ -> return . drawItemConnections sss cfig $ invAdj inv @@ -112,7 +112,7 @@ drawMouseOver cfig w = (j, i) <- w ^? input . mouseContext . mcoInvSelect <|> w ^? input . mouseContext . mcoInvFilt - sss <- w ^? hud . hudElement . diSections + sss <- w ^? hud . diSections return . translateScreenPos cfig (invDP ^. ldpPos) . color (withAlpha 0.1 white) -- . color white @@ -123,7 +123,7 @@ drawMouseOver cfig w = (j, i) <- (w ^? input . mouseContext . mcoCombSelect) <|> (w ^? input . mouseContext . mcoCombCombine) - sss <- w ^? hud . hudElement . subInventory . ciSections + sss <- w ^? hud . subInventory . ciSections let idp = secondColumnParams return . translateScreenPos cfig (idp ^. ldpPos) . color (withAlpha 0.2 white) @@ -131,15 +131,15 @@ drawMouseOver cfig w = drawDragSelected :: Configuration -> World -> Maybe Picture drawDragSelected cfig w = do - ys <- w ^? hud . hudElement . diSelection . _Just . _3 + ys <- w ^? hud . diSelection . _Just . _3 guard $ not (IS.null ys) - && ( case w ^? hud . hudElement . subInventory of + && ( case w ^? hud . subInventory of Just NoSubInventory -> True _ -> False ) - (i, _, _) <- w ^? hud . hudElement . diSelection . _Just - sss <- w ^? hud . hudElement . diSections + (i, _, _) <- w ^? hud . diSelection . _Just + sss <- w ^? hud . diSections let f x = (selSecDrawCursorAt invDP BackdropCursor sss (i, x) <>) return . translateScreenPos cfig (invDP ^. ldpPos) . color (withAlpha 0.2 white) @@ -149,7 +149,7 @@ drawDragSelected cfig w = do drawDragSelecting :: Configuration -> World -> Maybe Picture drawDragSelecting cfig w = do OverInvDragSelect (Just (i, j)) (Just b) <- w ^? input . mouseContext - sss <- w ^? hud . hudElement . diSections + sss <- w ^? hud . diSections let f x = selSecDrawCursorAt invDP BackdropCursor sss (i, x) return . translateScreenPos cfig (invDP ^. ldpPos) . color (withAlpha 0.2 white) @@ -189,7 +189,7 @@ drawCombineInventory cfig sss w = curs = BoundaryCursor [North, South, West] msel = fmap (\(x, y, _) -> (x, y)) $ - w ^? hud . hudElement . subInventory . ciSelection . _Just + w ^? hud . subInventory . ciSelection . _Just drawExamineInventory :: Configuration -> World -> Picture drawExamineInventory cfig w = @@ -253,8 +253,8 @@ drawRBOptions cfig w = fold $ do you w ^? crInv . ix invid >>= \k -> w ^? cWorld . lWorld . items . ix k >>= equipType -- . itUse . uequipEffect . eeType i <- w ^? rbOptions . opSel let ae = getEquipmentAllocation invid w - sss <- w ^? hud . hudElement . diSections - (i', j, _) <- w ^? hud . hudElement . diSelection . _Just + sss <- w ^? hud . diSections + (i', j, _) <- w ^? hud . diSelection . _Just curpos <- selSecYint i' j sss let ytext = drawListElement 0 1 0 curpos . text midstr = equipAllocString ae @@ -349,7 +349,7 @@ combineInventoryExtra sss msel cfig w = fold $ do return (lnkMidPosInvSelsCol cfig w j col lnks) <> foldMap invcursor lnks where invcursor i = do - sss' <- w ^? hud . hudElement . diSections + sss' <- w ^? hud . diSections return $ translateScreenPos cfig (invDP ^. ldpPos) $ selSecDrawCursor @@ -391,8 +391,8 @@ lnkMidPosInvSelsCol :: Configuration -> World -> Int -> Color -> [Int] -> Pictur lnkMidPosInvSelsCol cfig w i col = fromMaybe mempty . foldMap f where f j = do - sss <- w ^? hud . hudElement . diSections - combinesss <- w ^? hud . hudElement . subInventory . ciSections + sss <- w ^? hud . diSections + combinesss <- w ^? hud . subInventory . ciSections lp <- selNumPos cfig invDP sss 0 j rp <- selNumPos cfig secondColumnParams combinesss 0 i invcol <- selSecSelCol 0 j sss diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index d5eac96c0..3f931830a 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -115,7 +115,7 @@ mouseCursorType u = case u ^. uvWorld . input . mouseContext of MouseGameRotate -> rotate a (drawVerticalDoubleArrow 5) where w = u ^. uvWorld - selsec = u ^? uvWorld . hud . hudElement . diSelection . _Just . _1 + selsec = u ^? uvWorld . hud . diSelection . _Just . _1 a = fromMaybe 0 $ do cpos <- w ^? cWorld . lWorld . creatures . ix 0 . crPos return . toClosestMultiple (pi / 32) $ diff --git a/src/Dodge/SelectedClose.hs b/src/Dodge/SelectedClose.hs index b8c81e0cc..f95579607 100644 --- a/src/Dodge/SelectedClose.hs +++ b/src/Dodge/SelectedClose.hs @@ -13,7 +13,7 @@ interactWithCloseObj e w = worldEventFlags . at InventoryChange ?~ () $ case e o getSelectedCloseObj :: World -> Maybe (Either (NewInt ItmInt) Button) getSelectedCloseObj w = do - (i, j, _) <- w ^? hud . hudElement . diSelection . _Just + (i, j, _) <- w ^? hud . diSelection . _Just case i of 3 -> Left <$> w ^? hud . closeItems . ix j 5 -> do diff --git a/src/Dodge/SelectionSections.hs b/src/Dodge/SelectionSections.hs index b822f4e0e..d6ddc9975 100644 --- a/src/Dodge/SelectionSections.hs +++ b/src/Dodge/SelectionSections.hs @@ -26,7 +26,7 @@ import Geometry.Data scrollSelectionSections :: Int -> - IM.IntMap (SelectionSection a) -> + IMSS a -> Maybe (Int, Int,IS.IntSet) -> Maybe (Int, Int,IS.IntSet) scrollSelectionSections yi sss msel diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index d3a8a3a33..63147654d 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -333,11 +333,11 @@ updateMagnets lw = checkTermDist :: World -> World checkTermDist w = fromMaybe w $ do - tmid <- w ^? hud . hudElement . subInventory . termID + tmid <- w ^? hud . subInventory . termID btid <- w ^? cWorld . lWorld . terminals . ix tmid . tmButtonID btpos <- w ^? cWorld . lWorld . buttons . ix btid . btPos guard $ dist btpos (_crPos $ you w) > 40 - return $ w & hud . hudElement . subInventory .~ NoSubInventory + return $ w & hud . subInventory .~ NoSubInventory updateMouseContext :: Configuration -> Universe -> Universe updateMouseContext cfig u = case u ^? uvScreenLayers . ix 0 of @@ -363,13 +363,13 @@ updateMouseContextGame cfig u = case u ^. uvWorld . input . mouseContext of | otherwise = MouseInGame mpos = w ^. input . mousePos invdrag i' = fromMaybe (OverInvDrag i' Nothing) $ do - sss <- w ^? hud . hudElement . diSections + sss <- w ^? hud . diSections (i, j) <- inverseSelNumPos cfig invDP sss mpos return $ OverInvDrag i' (Just (i, j)) overinv = do - sss <- w ^? hud . hudElement . diSections + sss <- w ^? hud . diSections selpos@(i, j) <- inverseSelNumPos cfig invDP sss mpos - case w ^? hud . hudElement . subInventory . ciSelection of + case w ^? hud . subInventory . ciSelection of Just _ | i == 0 -> return $ OverCombFiltInv selpos Just _ -> Nothing _ -> do @@ -377,8 +377,8 @@ updateMouseContextGame cfig u = case u ^. uvWorld . input . mouseContext of guard =<< sss ^? ix i . ssItems . ix j . siIsSelectable return $ OverInvSelect selpos overcomb = do - sss <- w ^? hud . hudElement . subInventory . ciSections - (xl, xr, _) <- w ^? hud . hudElement . subInventory . ciSelection . _Just + sss <- w ^? hud . subInventory . ciSections + (xl, xr, _) <- w ^? hud . subInventory . ciSelection . _Just let msel = (xl, xr) let mpossel = inverseSelNumPos cfig secondColumnParams sss (w ^. input . mousePos) return $ case mpossel of @@ -387,7 +387,7 @@ updateMouseContextGame cfig u = case u ^. uvWorld . input . mouseContext of Just x | x == msel -> OverCombCombine x Just x -> OverCombSelect x overterm = do - tmid <- w ^? hud . hudElement . subInventory . termID + tmid <- w ^? hud . subInventory . termID tm <- w ^? cWorld . lWorld . terminals . ix tmid return $ if isOverTerminalScreen cfig mpos diff --git a/src/Dodge/Update/Input/InGame.hs b/src/Dodge/Update/Input/InGame.hs index b0893d7a1..6412db947 100644 --- a/src/Dodge/Update/Input/InGame.hs +++ b/src/Dodge/Update/Input/InGame.hs @@ -43,8 +43,8 @@ import NewInt import SDL updateUseInputInGame :: Universe -> Universe -updateUseInputInGame u = updateFunctionKeys $ case u ^. uvWorld . hud . hudElement of - DisplayInventory{_subInventory = si, _diSelection = disel} -> case si of +updateUseInputInGame u = updateFunctionKeys $ case u ^. uvWorld . hud of + HUD{_subInventory = si, _diSelection = disel} -> case si of DisplayTerminal tmid -> updateKeysInTerminal tmid u CombineInventory{_ciSections = sss, _ciSelection = msel@(Just (-1, _, _))} -> u @@ -64,7 +64,7 @@ updateUseInputInGame u = updateFunctionKeys $ case u ^. uvWorld . hud . hudEleme & uvWorld %~ setInvPosFromSS _ -> M.foldlWithKey' updateKeyInGame u pkeys where - tohud = uvWorld . hud . hudElement + tohud = uvWorld . hud pkeys = u ^. uvWorld . input . pressedKeys dodisplayregexinput filterprism filterlens x di = fromMaybe di $ do sss <- di ^? diSections @@ -98,7 +98,7 @@ updateMouseHeldInGame cfig w = case w ^. input . mouseContext of OverInvDragSelect{} | ButtonRight `M.member` (w ^. input . mouseButtons) -> w & input . mouseContext .~ MouseGameRotate OverInvDragSelect (Just sstart) _ -> - let sss = w ^. hud . hudElement . diSections + let sss = w ^. hud . diSections msel = inverseSelNumPos cfig invDP sss (w ^. input . mousePos) in case msel of Nothing -> w & input . mouseContext . mcoSelEnd .~ Nothing @@ -112,7 +112,7 @@ updateMouseHeldInGame cfig w = case w ^. input . mouseContext of (IM.lookupMax =<< sss ^? ix (fst sstart) . ssItems) -- not sure how the above performs when filtering... OverInvDragSelect Nothing _ -> fromMaybe w $ do - sss <- w ^? hud . hudElement . diSections + sss <- w ^? hud . diSections ysel <- inverseSelSecYint (posSelSecYint cfig invDP (w ^. input . mousePos . _y)) @@ -126,9 +126,9 @@ updateMouseHeldInGame cfig w = case w ^. input . mouseContext of doDrag :: Configuration -> Int -> Int -> Maybe (Int, Int) -> World -> World doDrag cfig n k mmouseover w = fromMaybe w $ do guard (n /= 0) - ss <- w ^? hud . hudElement . diSections . ix k . ssItems + ss <- w ^? hud . diSections . ix k . ssItems x <- mmouseover - is <- w ^? hud . hudElement . diSelection . _Just . _3 + is <- w ^? hud . diSelection . _Just . _3 return $ if concurrentIS is then shiftInvItems cfig n k x is ss w @@ -138,7 +138,7 @@ tryDropSelected :: Maybe (Int, Int) -> World -> Maybe World tryDropSelected mpos w = do guard $ maybe True (\(i, _) -> i == 3) mpos cr <- w ^? cWorld . lWorld . creatures . ix 0 - (0, _, xs) <- w ^? hud . hudElement . diSelection . _Just + (0, _, xs) <- w ^? hud . diSelection . _Just return . foldl' (flip $ dropItem cr) w . IS.toDescList $ xs tryPickupSelected :: Int -> Maybe (Int, Int) -> World -> Maybe World @@ -146,7 +146,7 @@ tryPickupSelected k mpos w = do guard $ k == 3 guard $ maybe True (\(i, _) -> i == 0 || i == 1) mpos cr <- w ^? cWorld . lWorld . creatures . ix 0 - xs <- w ^? hud . hudElement . diSelection . _Just . _3 + xs <- w ^? hud . diSelection . _Just . _3 let nfreeslots = crNumFreeSlots (w ^. cWorld . lWorld . items) cr itmstopickup = mapMaybe g $ IS.toList xs slotsneeded = alaf Sum foldMap itInvHeight itmstopickup @@ -157,7 +157,7 @@ tryPickupSelected k mpos w = do _ -> foldl' (flip $ pickUpItem 0) w ispickup & newdisel (length (cr ^. crInv)) xs where newdisel j xs = - hud . hudElement . diSelection + hud . diSelection ?~ (0, j, IS.fromDistinctAscList [j .. j + IS.size xs -1]) g i = do NInt j <- w ^? hud . closeItems . ix i @@ -171,25 +171,25 @@ updateMouseReleaseInGame w = case w ^. input . mouseContext of OverInvDragSelect (Just ssel) mesel | ScancodeLShift `M.member` (w ^. input . pressedKeys) -> w & input . mouseContext .~ MouseInGame - & hud . hudElement . diSelection . _Just . _3 + & hud . diSelection . _Just . _3 %~ getuniques ( maybe mempty (h ssel) - (guard (ssel ^? _1 == w ^? hud . hudElement . diSelection . _Just . _1) >> mesel ^? _Just) + (guard (ssel ^? _1 == w ^? hud . diSelection . _Just . _1) >> mesel ^? _Just) ) OverInvDragSelect (Just ssel) (Just esel) -> w & input . mouseContext .~ MouseInGame & invSetSelection (f (fst ssel, esel) (h ssel esel)) OverInvDragSelect{} -> w & input . mouseContext .~ MouseInGame - & hud . hudElement . diSelection . _Just . _3 %~ const mempty + & hud . diSelection . _Just . _3 %~ const mempty _ -> w where getuniques x y = IS.union x y IS.\\ IS.intersection x y f (x, y) z = (x, y, z) h (k, i) j = fold $ do - sss <- w ^? hud . hudElement . diSections . ix k . ssItems + sss <- w ^? hud . diSections . ix k . ssItems let (_, xss) = IM.split (min i j -1) sss (yss, _) = IM.split (max i j + 1) xss return . IM.keysSet $ yss @@ -203,7 +203,7 @@ isGroupSelectableSection = \case updateMouseClickInGame :: Configuration -> World -> World updateMouseClickInGame cfig w = case w ^. input . mouseContext of MouseInGame -> fromMaybe (w & input . mouseContext .~ OverInvDragSelect Nothing Nothing) $ do - let sss = w ^. hud . hudElement . diSections + let sss = w ^. hud . diSections ysel <- inverseSelSecYint (posSelSecYint cfig invDP (w ^. input . mousePos . _y)) @@ -213,12 +213,12 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of return $ w & input . mouseContext .~ OverInvDragSelect (Just ysel) Nothing OverInvSelect (-1, _) | selsec == Just (-1) -> - w & hud . hudElement . diSelection %~ endRegex (-1) w - & hud . hudElement . diInvFilter .~ Nothing + w & hud . diSelection %~ endRegex (-1) w + & hud . diInvFilter .~ Nothing OverInvSelect (2, _) | selsec == Just 2 -> - w & hud . hudElement . diSelection %~ endRegex 2 w - & hud . hudElement . diCloseFilter .~ Nothing + w & hud . diSelection %~ endRegex 2 w + & hud . diCloseFilter .~ Nothing OverInvSelect x | ScancodeLShift `M.member` (w ^. input . pressedKeys) && isGroupSelectableSection (fst x) -> @@ -226,14 +226,14 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of OverInvSelect x -> startDrag x w OverTerminal tmid TerminalTextInput{} -> terminalReturnEffect tmid w OverTerminal tmid TerminalPressTo{} -> continueTerminal tmid w - OutsideTerminal -> w & hud . hudElement . subInventory .~ NoSubInventory + OutsideTerminal -> w & hud . subInventory .~ NoSubInventory OverCombSelect x -> - w & hud . hudElement . subInventory . ciSelection ?~ f x + w & hud . subInventory . ciSelection ?~ f x & worldEventFlags . at CombineInventoryChange ?~ () OverCombFilter -> - w & hud . hudElement . subInventory . ciFilter .~ Nothing + w & hud . subInventory . ciFilter .~ Nothing & worldEventFlags . at CombineInventoryChange ?~ () - & hud . hudElement . subInventory . ciSelection %~ endCombineRegex w + & hud . subInventory . ciSelection %~ endCombineRegex w OverCombCombine x -> w & tryCombine x @@ -243,7 +243,7 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of OverCombEscape -> w & worldEventFlags . at InventoryChange ?~ () - & hud . hudElement . subInventory .~ NoSubInventory + & hud . subInventory .~ NoSubInventory OverCombFiltInv (0, j) -> fromMaybe w $ do str <- fmap (take 5) $ @@ -252,33 +252,33 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of w ^? cWorld . lWorld . items . ix k >>= (listToMaybe . basicItemDisplay) return . (worldEventFlags . at CombineInventoryChange ?~ ()) $ - case w ^? hud . hudElement . subInventory . ciFilter . _Just of + case w ^? hud . subInventory . ciFilter . _Just of Just ('#' : xs) | str == xs -> - w & hud . hudElement . subInventory . ciFilter .~ Nothing - _ -> w & hud . hudElement . subInventory . ciFilter ?~ ("#" ++ str) + w & hud . subInventory . ciFilter .~ Nothing + _ -> w & hud . subInventory . ciFilter ?~ ("#" ++ str) _ -> w where f (x, y) = (x, y, mempty) - selsec = w ^? hud . hudElement . diSelection . _Just . _1 + selsec = w ^? hud . diSelection . _Just . _1 endRegex :: Int -> World -> Maybe (Int, Int, IS.IntSet) -> Maybe (Int, Int, IS.IntSet) endRegex i w = ssSetCursor (ssLookupDown i j) sss where - sss = w ^. hud . hudElement . diSections + sss = w ^. hud . diSections j = maybe 0 fst $ IM.lookupMin =<< sss ^? ix i . ssItems endCombineRegex :: World -> Maybe (Int, Int, IS.IntSet) -> Maybe (Int, Int, IS.IntSet) endCombineRegex w = ssSetCursor (ssLookupDown 0 j) sss where - sss = w ^. hud . hudElement . subInventory . ciSections + sss = w ^. hud . subInventory . ciSections j = fromMaybe 0 $ do itms <- sss ^? ix 0 . ssItems (k, _) <- IM.lookupMin itms return (k -1) startDrag :: (Int, Int) -> World -> World -startDrag (a, b) w = setcontext $ case w ^? hud . hudElement . diSelection . _Just of +startDrag (a, b) w = setcontext $ case w ^? hud . diSelection . _Just of Just (i, _, xs) | i == a && b `IS.member` xs -> w _ -> invSetSelection (a, b, IS.singleton b) w where @@ -316,10 +316,10 @@ shiftInvItems cfig n k x xs ss w = setSelWhileDragging . fromMaybe w $ do let yint = posSelSecYint cfig invDP (w ^. input . mousePos . _y) bn = (\v -> inverseSelSecYint (yint + 1) v ^? nonInf) - =<< w ^? hud . hudElement . diSections + =<< w ^? hud . diSections ab = (\v -> inverseSelSecYint (yint - 1) v ^? nonInf) - =<< w ^? hud . hudElement . diSections + =<< w ^? hud . diSections guard $ xk == k || xk + 1 == k || xk -1 == k (maxi, _) <- IS.maxView xs (mini, _) <- IS.minView xs @@ -336,10 +336,10 @@ shiftInvItems cfig n k x xs ss w = setSelWhileDragging . fromMaybe w $ do setSelWhileDragging :: World -> World setSelWhileDragging w = fromMaybe w $ do - (i, _, xs) <- w ^? hud . hudElement . diSelection . _Just + (i, _, xs) <- w ^? hud . diSelection . _Just (k, j) <- w ^? input . mouseContext . mcoMaybeSelect . _Just guard $ i == k && j `IS.member` xs - return $ w & hud . hudElement . diSelection . _Just . _2 .~ j + return $ w & hud . diSelection . _Just . _2 .~ j shiftInvItemsUp :: Int -> IS.IntSet -> World -> World shiftInvItemsUp j is w = IS.foldl' f w is @@ -350,7 +350,7 @@ shiftInvItemsUp j is w = IS.foldl' f w is shiftInvItemsDown :: Int -> IS.IntSet -> World -> World shiftInvItemsDown j is w = fromMaybe w $ do let i = IS.findMax is - guard . isJust $ w ^? hud . hudElement . diSections . ix j . ssItems . ix i + guard . isJust $ w ^? hud . diSections . ix j . ssItems . ix i return $ IS.foldr f w is where f i' w' = swapItemWith g (j, i') w' @@ -386,8 +386,8 @@ updateKeysInTerminal tmid u = fromMaybe u $ do return $ case tm ^. tmStatus of _ | dist x y > 40 || not (hasButtonLOS x y (u ^. uvWorld)) -> - u & uvWorld . hud . hudElement . subInventory .~ NoSubInventory - TerminalDeactivated -> u & uvWorld . hud . hudElement . subInventory .~ NoSubInventory + u & uvWorld . hud . subInventory .~ NoSubInventory + TerminalDeactivated -> u & uvWorld . hud . subInventory .~ NoSubInventory TerminalTextInput{} -> updateKeysTextInputTerminal tmid u TerminalPressTo{} -> updateKeyContinueTerminal tmid u _ -> u @@ -477,14 +477,14 @@ updateBackspaceRegex :: World -> World updateBackspaceRegex w = case di ^? subInventory of Just NoSubInventory{} | secfocus (-1) 0 -> - w & hud . hudElement %~ trybackspace (-1) diInvFilter diInvFilter diSelection + w & hud %~ trybackspace (-1) diInvFilter diInvFilter diSelection & worldEventFlags . at InventoryChange ?~ () Just NoSubInventory{} | secfocus 2 3 -> - w & hud . hudElement %~ trybackspace 2 diCloseFilter diCloseFilter diSelection + w & hud %~ trybackspace 2 diCloseFilter diCloseFilter diSelection & worldEventFlags . at InventoryChange ?~ () Just CombineInventory{} -> - w & hud . hudElement . subInventory %~ trybackspace (-1) ciFilter ciFilter ciSelection + w & hud . subInventory %~ trybackspace (-1) ciFilter ciFilter ciSelection & worldEventFlags . at InventoryChange ?~ () _ -> w where @@ -498,25 +498,25 @@ updateBackspaceRegex w = case di ^? subInventory of he & filtset . _Just %~ init & selset ?~ (x, 0, mempty) [] -> he & filtset .~ Nothing - di = w ^. hud . hudElement + di = w ^. hud updateEnterRegex :: World -> World -updateEnterRegex w = case w ^? hud . hudElement . subInventory of +updateEnterRegex w = case w ^? hud . subInventory of Just NoSubInventory{} | secfocus [-1, 0, 1] -> - w & hud . hudElement . diSelection ?~ (-1, 0, mempty) - & hud . hudElement . diInvFilter %~ enterregex + w & hud . diSelection ?~ (-1, 0, mempty) + & hud . diInvFilter %~ enterregex Just NoSubInventory{} | secfocus [2, 3] -> - w & hud . hudElement . diSelection ?~ (2, 0, mempty) - & hud . hudElement . diCloseFilter %~ enterregex + w & hud . diSelection ?~ (2, 0, mempty) + & hud . diCloseFilter %~ enterregex Just CombineInventory{} -> - w & hud . hudElement . subInventory . ciFilter %~ enterregex - & hud . hudElement . subInventory . ciSelection ?~ (-1, 0, mempty) + w & hud . subInventory . ciFilter %~ enterregex + & hud . subInventory . ciSelection ?~ (-1, 0, mempty) _ -> w where secfocus xs = fromMaybe False $ do - i <- w ^? hud . hudElement . diSelection . _Just . _1 + i <- w ^? hud . diSelection . _Just . _1 return $ i `elem` xs enterregex = (<|> Just "") @@ -524,15 +524,15 @@ pauseGame :: Universe -> Universe pauseGame u = u & uvScreenLayers .~ [pauseMenu u] & pauseSound spaceAction :: World -> World -spaceAction w = case w ^. hud . hudElement . subInventory of +spaceAction w = case w ^. hud . subInventory of NoSubInventory -> maybe id interactWithCloseObj (getCloseObj w) w - _ -> w & hud . hudElement . subInventory .~ NoSubInventory + _ -> w & hud . subInventory .~ NoSubInventory getCloseObj :: World -> Maybe (Either (NewInt ItmInt) Button) getCloseObj w = getSelectedCloseObj w <|> topcitem <|> topcbut where topcitem = do - k <- (w ^? hud . hudElement . diSections . ix 3 . ssItems) + k <- (w ^? hud . diSections . ix 3 . ssItems) >>= (fmap fst . IM.lookupMin) Left <$> w ^? hud . closeItems . ix k topcbut = do @@ -541,15 +541,15 @@ getCloseObj w = getSelectedCloseObj w <|> topcitem <|> topcbut tryCombine :: (Int, Int) -> World -> World tryCombine (i, j) w = fromMaybe w $ do - CombinableItem is it <- w ^? hud . hudElement . subInventory + CombinableItem is it <- w ^? hud . subInventory . ciSections . ix i . ssItems . ix j . siPayload . _Just p <- w ^? cWorld . lWorld . creatures . ix 0 . crPos return $ (createItemYou it (foldr (destroyInvItem 0 . NInt) w (sort is))) & soundStart InventorySound p wrench1S Nothing - & hud . hudElement . diSelection . _Just . _3 .~ mempty + & hud . diSelection . _Just . _3 .~ mempty maybeExitCombine :: World -> World maybeExitCombine w | ButtonRight `M.member` (w ^. input . mouseButtons) = w - | otherwise = w & hud . hudElement . subInventory .~ NoSubInventory + | otherwise = w & hud . subInventory .~ NoSubInventory diff --git a/src/Dodge/Update/Scroll.hs b/src/Dodge/Update/Scroll.hs index df9663967..ba5d3b61d 100644 --- a/src/Dodge/Update/Scroll.hs +++ b/src/Dodge/Update/Scroll.hs @@ -23,7 +23,7 @@ import SDL -- yi should be nonzero updateWheelEvent :: Int -> World -> World -updateWheelEvent yi w = case w ^. hud . hudElement . subInventory of +updateWheelEvent yi w = case w ^. hud . subInventory of NoSubInventory -> updateBaseWheelEvent yi w ExamineInventory -> updateBaseWheelEvent yi w MapperInventory{} -> updateBaseWheelEvent yi w @@ -118,7 +118,7 @@ zoomOutLongGun sc = fromMaybe sc $ do moveCombineSel :: Int -> World -> World moveCombineSel yi = - ( hud . hudElement . subInventory %~ doscroll + ( hud . subInventory %~ doscroll ) . (worldEventFlags . at CombineInventoryChange ?~ ()) where diff --git a/src/Dodge/WorldEffect.hs b/src/Dodge/WorldEffect.hs index 5640caffe..e43d6d2a4 100644 --- a/src/Dodge/WorldEffect.hs +++ b/src/Dodge/WorldEffect.hs @@ -55,7 +55,7 @@ accessTerminal tid w = fromMaybe w $ do tm <- w ^? cWorld . lWorld . terminals . ix tid guard (tm ^. tmStatus /= TerminalDeactivated) return $ - w & hud . hudElement . subInventory .~ DisplayTerminal tid + w & hud . subInventory .~ DisplayTerminal tid & cWorld . lWorld . terminals . ix tid %~ tryToBoot where tryToBoot tm = case _tmStatus tm of @@ -106,6 +106,6 @@ resetTerminal x tm = . exitTerminalSubInv exitTerminalSubInv :: World -> World -exitTerminalSubInv w = case w ^? hud . hudElement . subInventory . termID of - Just _ -> w & hud . hudElement . subInventory .~ NoSubInventory +exitTerminalSubInv w = case w ^? hud . subInventory . termID of + Just _ -> w & hud . subInventory .~ NoSubInventory _ -> w diff --git a/tags b/tags index 3120c92bd..598d3619e 100644 --- a/tags +++ b/tags @@ -239,7 +239,7 @@ CombClust src/Dodge/Combine/Graph.hs 19;" t CombEdge src/Dodge/Combine/Graph.hs 32;" t CombNode src/Dodge/Combine/Graph.hs 25;" t CombinableItem src/Dodge/Data/Combine.hs 5;" t -CombineInventory src/Dodge/Data/HUD.hs 35;" C +CombineInventory src/Dodge/Data/HUD.hs 26;" C CombineInventoryChange src/Dodge/Data/World.hs 32;" C ComsSS src/Dodge/Data/Scenario.hs 98;" C ConcurrentEffect src/Loop/Data.hs 6;" t @@ -343,8 +343,7 @@ DestroyItem src/Dodge/Data/Scenario.hs 7;" C Detector src/Dodge/Data/Item/Combine.hs 183;" t Dirt src/Dodge/Data/Material.hs 11;" C DisasterType src/Dodge/Data/Scenario.hs 24;" t -DisplayInventory src/Dodge/Data/HUD.hs 19;" C -DisplayTerminal src/Dodge/Data/HUD.hs 40;" C +DisplayTerminal src/Dodge/Data/HUD.hs 31;" C Distortion src/Dodge/Data/Distortion.hs 12;" t DivineRetribution src/Dodge/Data/Scenario.hs 35;" C DoActionIf src/Dodge/Data/ActionPlan.hs 116;" C @@ -417,7 +416,7 @@ EquipmentPlatformSF src/Dodge/Data/ComposedItem.hs 17;" C Escape src/Dodge/Data/Scenario.hs 10;" C EscapeMenuOption src/Dodge/Data/Universe.hs 76;" t Essential src/Shape/Data.hs 34;" C -ExamineInventory src/Dodge/Data/HUD.hs 29;" C +ExamineInventory src/Dodge/Data/HUD.hs 20;" C Explore src/Dodge/Data/Scenario.hs 4;" C Explosion src/Dodge/Data/SoundOrigin.hs 38;" C ExplosionPayload src/Dodge/Data/Payload.hs 11;" C @@ -536,8 +535,7 @@ HEATSENSOR src/Dodge/Data/Item/Combine.hs 83;" C HELD src/Dodge/Data/Item/Combine.hs 17;" C HOMINGMODULE src/Dodge/Data/Item/Combine.hs 102;" C HOSE src/Dodge/Data/Item/Combine.hs 55;" C -HUD src/Dodge/Data/HUD.hs 42;" t -HUDElement src/Dodge/Data/HUD.hs 18;" t +HUD src/Dodge/Data/HUD.hs 33;" t HalfRes src/Dodge/Data/Config.hs 97;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HardQuit src/Dodge/Data/Universe.hs 70;" C @@ -597,7 +595,7 @@ Inanimate src/Dodge/Data/ActionPlan.hs 17;" C InanimateAI src/Dodge/Data/Creature/Misc.hs 41;" C IncendiaryBall src/Dodge/Data/EnergyBall/Type.hs 13;" C InheritFloor src/Data/Tile.hs 12;" C -Input src/Dodge/Data/Input.hs 37;" t +Input src/Dodge/Data/Input.hs 33;" t InputScreen src/Dodge/Data/Universe.hs 92;" C Inspect_wall src/Dodge/Data/Config.hs 91;" C Institution src/Dodge/Data/Scenario.hs 42;" t @@ -755,7 +753,7 @@ MakeTempLight src/Dodge/Data/WorldEffect.hs 34;" C ManipulatedObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 22;" t Manipulation src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 16;" t Manipulator src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" C -MapperInventory src/Dodge/Data/HUD.hs 30;" C +MapperInventory src/Dodge/Data/HUD.hs 21;" C MapperSF src/Dodge/Data/ComposedItem.hs 39;" C Material src/Dodge/Data/Material.hs 11;" t MaterialSound src/Dodge/Data/SoundOrigin.hs 35;" C @@ -793,7 +791,7 @@ MountedObject src/Dodge/Data/MountedObject.hs 11;" t MountedProp src/Dodge/Data/MountedObject.hs 13;" C MouseAiming src/Dodge/Data/Input.hs 16;" C MouseContext src/Dodge/Data/Input.hs 14;" t -MouseGameRotate src/Dodge/Data/Input.hs 34;" C +MouseGameRotate src/Dodge/Data/Input.hs 30;" C MouseInGame src/Dodge/Data/Input.hs 17;" C MouseMenuClick src/Dodge/Data/Input.hs 18;" C MouseMenuCursor src/Dodge/Data/Input.hs 19;" C @@ -870,7 +868,7 @@ NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C NoSF src/Dodge/Data/ComposedItem.hs 29;" C NoShadowFidelity src/Shape/Data.hs 25;" C NoShadows src/Dodge/Data/Config.hs 103;" C -NoSubInventory src/Dodge/Data/HUD.hs 28;" C +NoSubInventory src/Dodge/Data/HUD.hs 19;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C NoWorldEffect src/Dodge/Data/WorldEffect.hs 23;" C Noclip src/Dodge/Data/Config.hs 70;" C @@ -954,17 +952,17 @@ OptionScreen src/Dodge/Data/Universe.hs 82;" C OptionScreenFlag src/Dodge/Data/Universe.hs 72;" t OutAction src/Dodge/Creature/Action.hs 46;" t OutLink src/Dodge/Data/Room.hs 43;" C -OutsideTerminal src/Dodge/Data/Input.hs 33;" C +OutsideTerminal src/Dodge/Data/Input.hs 29;" C OutwardShockwave src/Dodge/Data/Shockwave.hs 14;" C -OverCombCombine src/Dodge/Data/Input.hs 29;" C -OverCombEscape src/Dodge/Data/Input.hs 31;" C -OverCombFiltInv src/Dodge/Data/Input.hs 27;" C -OverCombFilter src/Dodge/Data/Input.hs 30;" C -OverCombSelect src/Dodge/Data/Input.hs 28;" C +OverCombCombine src/Dodge/Data/Input.hs 25;" C +OverCombEscape src/Dodge/Data/Input.hs 27;" C +OverCombFiltInv src/Dodge/Data/Input.hs 23;" C +OverCombFilter src/Dodge/Data/Input.hs 26;" C +OverCombSelect src/Dodge/Data/Input.hs 24;" C OverInvDrag src/Dodge/Data/Input.hs 20;" C -OverInvDragSelect src/Dodge/Data/Input.hs 25;" C -OverInvSelect src/Dodge/Data/Input.hs 26;" C -OverTerminal src/Dodge/Data/Input.hs 32;" C +OverInvDragSelect src/Dodge/Data/Input.hs 21;" C +OverInvSelect src/Dodge/Data/Input.hs 22;" C +OverTerminal src/Dodge/Data/Input.hs 28;" C OverreachingAI src/Dodge/Data/Scenario.hs 31;" C Overstrung src/Dodge/Data/Creature/Perception.hs 57;" C P2Ac src/Dodge/Data/CreatureEffect.hs 53;" t @@ -1295,7 +1293,7 @@ Stone src/Dodge/Data/Material.hs 11;" C StorageSS src/Dodge/Data/Scenario.hs 94;" C Strategy src/Dodge/Data/ActionPlan.hs 176;" t StrategyActions src/Dodge/Data/ActionPlan.hs 188;" C -SubInventory src/Dodge/Data/HUD.hs 27;" t +SubInventory src/Dodge/Data/HUD.hs 18;" t Superfluous src/Shape/Data.hs 38;" C Surface src/Shape/Data.hs 41;" t Survive src/Dodge/Data/Scenario.hs 5;" C @@ -1325,15 +1323,15 @@ TORCH src/Dodge/Data/Item/Combine.hs 176;" C TRACTORGUN src/Dodge/Data/Item/Combine.hs 170;" C TRANSFORMER src/Dodge/Data/Item/Combine.hs 65;" C TRANSMITTER src/Dodge/Data/Item/Combine.hs 71;" C -TSbackspace src/Dodge/Data/Input.hs 58;" C -TSdelete src/Dodge/Data/Input.hs 59;" C -TSdown src/Dodge/Data/Input.hs 64;" C -TSescape src/Dodge/Data/Input.hs 56;" C -TSleft src/Dodge/Data/Input.hs 61;" C -TSreturn src/Dodge/Data/Input.hs 57;" C -TSright src/Dodge/Data/Input.hs 62;" C -TStab src/Dodge/Data/Input.hs 60;" C -TSup src/Dodge/Data/Input.hs 63;" C +TSbackspace src/Dodge/Data/Input.hs 54;" C +TSdelete src/Dodge/Data/Input.hs 55;" C +TSdown src/Dodge/Data/Input.hs 60;" C +TSescape src/Dodge/Data/Input.hs 52;" C +TSleft src/Dodge/Data/Input.hs 57;" C +TSreturn src/Dodge/Data/Input.hs 53;" C +TSright src/Dodge/Data/Input.hs 58;" C +TStab src/Dodge/Data/Input.hs 56;" C +TSup src/Dodge/Data/Input.hs 59;" C TUBE src/Dodge/Data/Item/Combine.hs 52;" C Tap src/Dodge/Data/SoundOrigin.hs 39;" C TargetCursor src/Dodge/Data/Item/Targeting.hs 14;" C @@ -1342,7 +1340,7 @@ TargetRBPress src/Dodge/Data/Item/Targeting.hs 12;" C TargetingLaser src/Dodge/Data/Laser.hs 18;" C TargetingType src/Dodge/Data/Item/Targeting.hs 11;" t TeleSound src/Dodge/Data/SoundOrigin.hs 36;" C -TermSignal src/Dodge/Data/Input.hs 55;" t +TermSignal src/Dodge/Data/Input.hs 51;" t Terminal src/Dodge/Data/Terminal.hs 21;" t TerminalDeactivated src/Dodge/Data/Terminal/Status.hs 12;" C TerminalLine src/Dodge/Data/Terminal.hs 38;" t @@ -1637,9 +1635,9 @@ _camViewFrom src/Dodge/Data/Camera.hs 29;" f _camZoom src/Dodge/Data/Camera.hs 26;" f _canID src/Dodge/Data/LWorld.hs 170;" f _carriage src/Dodge/Data/Creature/Stance.hs 14;" f -_carteCenter src/Dodge/Data/HUD.hs 44;" f -_carteRot src/Dodge/Data/HUD.hs 46;" f -_carteZoom src/Dodge/Data/HUD.hs 45;" f +_carteCenter src/Dodge/Data/HUD.hs 39;" f +_carteRot src/Dodge/Data/HUD.hs 41;" f +_carteZoom src/Dodge/Data/HUD.hs 40;" f _cdtCloseLeft src/Dodge/Data/DoubleTree.hs 88;" f _cdtCloseLeft src/Dodge/Data/DoubleTree.hs 96;" f _cdtCloseRight src/Dodge/Data/DoubleTree.hs 90;" f @@ -1655,11 +1653,11 @@ _ceString src/Dodge/Data/Universe.hs 67;" f _chasmShader src/Data/Preload/Render.hs 46;" f _chasmVBO src/Data/Preload/Render.hs 45;" f _chasms src/Dodge/Data/CWorld.hs 30;" f -_ciFilter src/Dodge/Data/HUD.hs 38;" f +_ciFilter src/Dodge/Data/HUD.hs 29;" f _ciInvIDs src/Dodge/Data/Combine.hs 6;" f _ciItem src/Dodge/Data/Combine.hs 7;" f -_ciSections src/Dodge/Data/HUD.hs 36;" f -_ciSelection src/Dodge/Data/HUD.hs 37;" f +_ciSections src/Dodge/Data/HUD.hs 27;" f +_ciSelection src/Dodge/Data/HUD.hs 28;" f _cigType src/Dodge/Data/Camera.hs 19;" f _clPos src/Dodge/Data/Cloud.hs 15;" f _clTimer src/Dodge/Data/Cloud.hs 17;" f @@ -1678,10 +1676,10 @@ _cldtParent src/Dodge/Data/DoubleTree.hs 47;" f _cldtParent src/Dodge/Data/DoubleTree.hs 56;" f _cldtUp src/Dodge/Data/DoubleTree.hs 45;" f _cldtUp src/Dodge/Data/DoubleTree.hs 53;" f -_clickPos src/Dodge/Data/Input.hs 46;" f -_clickWorldPos src/Dodge/Data/Input.hs 48;" f -_closeButtons src/Dodge/Data/HUD.hs 48;" f -_closeItems src/Dodge/Data/HUD.hs 47;" f +_clickPos src/Dodge/Data/Input.hs 42;" f +_clickWorldPos src/Dodge/Data/Input.hs 44;" f +_closeButtons src/Dodge/Data/HUD.hs 43;" f +_closeItems src/Dodge/Data/HUD.hs 42;" f _cloudEBO src/Data/Preload/Render.hs 51;" f _cloudShader src/Data/Preload/Render.hs 50;" f _cloudVBO src/Data/Preload/Render.hs 49;" f @@ -1766,10 +1764,10 @@ _debugV3 src/Dodge/Data/Universe.hs 59;" f _debug_booleans src/Dodge/Data/Config.hs 57;" f _debug_view_clip_bounds src/Dodge/Data/Config.hs 56;" f _delayedEvents src/Dodge/Data/LWorld.hs 137;" f -_diCloseFilter src/Dodge/Data/HUD.hs 24;" f -_diInvFilter src/Dodge/Data/HUD.hs 23;" f -_diSections src/Dodge/Data/HUD.hs 21;" f -_diSelection src/Dodge/Data/HUD.hs 22;" f +_diCloseFilter src/Dodge/Data/HUD.hs 38;" f +_diInvFilter src/Dodge/Data/HUD.hs 37;" f +_diSections src/Dodge/Data/HUD.hs 35;" f +_diSelection src/Dodge/Data/HUD.hs 36;" f _dimAttachPos src/Dodge/Data/Item/Misc.hs 16;" f _dimCenter src/Dodge/Data/Item/Misc.hs 15;" f _dimRad src/Dodge/Data/Item/Misc.hs 14;" f @@ -1908,11 +1906,10 @@ _guTime src/Dodge/Data/Gust.hs 17;" f _guVel src/Dodge/Data/Gust.hs 16;" f _gusts src/Dodge/Data/LWorld.hs 105;" f _gwWorld src/Dodge/Data/GenWorld.hs 24;" f -_heldPos src/Dodge/Data/Input.hs 47;" f -_heldWorldPos src/Dodge/Data/Input.hs 49;" f +_heldPos src/Dodge/Data/Input.hs 43;" f +_heldWorldPos src/Dodge/Data/Input.hs 45;" f _hotkeys src/Dodge/Data/LWorld.hs 150;" f _hud src/Dodge/Data/World.hs 45;" f -_hudElement src/Dodge/Data/HUD.hs 43;" f _humanoidAI src/Dodge/Data/Creature/Misc.hs 81;" f _ibtAmmoMag src/Dodge/Data/Item/Combine.hs 21;" f _ibtAttach src/Dodge/Data/Item/Combine.hs 20;" f @@ -2019,9 +2016,9 @@ _magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 130;" f _mainAction src/Dodge/Data/ActionPlan.hs 171;" f _manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" f -_mapInvItmID src/Dodge/Data/HUD.hs 33;" f -_mapInvOffset src/Dodge/Data/HUD.hs 31;" f -_mapInvZoom src/Dodge/Data/HUD.hs 32;" f +_mapInvItmID src/Dodge/Data/HUD.hs 24;" f +_mapInvOffset src/Dodge/Data/HUD.hs 22;" f +_mapInvZoom src/Dodge/Data/HUD.hs 23;" f _matUBO src/Data/Preload/Render.hs 39;" f _mbAttach src/Dodge/Data/MetaTree.hs 16;" f _mbTree src/Dodge/Data/MetaTree.hs 16;" f @@ -2038,17 +2035,17 @@ _mcPos src/Dodge/Data/Machine.hs 35;" f _mcType src/Dodge/Data/Machine.hs 40;" f _mcWallIDs src/Dodge/Data/Machine.hs 33;" f _mcWidth src/Dodge/Data/Machine.hs 44;" f -_mcoCombCombine src/Dodge/Data/Input.hs 29;" f -_mcoCombSelect src/Dodge/Data/Input.hs 28;" f +_mcoCombCombine src/Dodge/Data/Input.hs 25;" f +_mcoCombSelect src/Dodge/Data/Input.hs 24;" f _mcoDragSection src/Dodge/Data/Input.hs 20;" f -_mcoInvFilt src/Dodge/Data/Input.hs 27;" f -_mcoInvSelect src/Dodge/Data/Input.hs 26;" f -_mcoMaybeSelect src/Dodge/Data/Input.hs 21;" f +_mcoInvFilt src/Dodge/Data/Input.hs 23;" f +_mcoInvSelect src/Dodge/Data/Input.hs 22;" f +_mcoMaybeSelect src/Dodge/Data/Input.hs 20;" f _mcoMenuClick src/Dodge/Data/Input.hs 18;" f -_mcoSecSelStart src/Dodge/Data/Input.hs 25;" f -_mcoSelEnd src/Dodge/Data/Input.hs 25;" f -_mcoTermID src/Dodge/Data/Input.hs 32;" f -_mcoTermStatus src/Dodge/Data/Input.hs 32;" f +_mcoSecSelStart src/Dodge/Data/Input.hs 21;" f +_mcoSelEnd src/Dodge/Data/Input.hs 21;" f +_mcoTermID src/Dodge/Data/Input.hs 28;" f +_mcoTermStatus src/Dodge/Data/Input.hs 28;" f _mctTurret src/Dodge/Data/Machine.hs 53;" f _mdBool src/Dodge/Data/Modification.hs 21;" f _mdExternalID src/Dodge/Data/Modification.hs 17;" f @@ -2072,11 +2069,11 @@ _moString src/Dodge/Data/Universe.hs 110;" f _modOption src/Dodge/Data/Universe.hs 100;" f _modString src/Dodge/Data/Universe.hs 98;" f _modifications src/Dodge/Data/LWorld.hs 135;" f -_mouseButtons src/Dodge/Data/Input.hs 42;" f -_mouseButtonsReleased src/Dodge/Data/Input.hs 43;" f -_mouseContext src/Dodge/Data/Input.hs 39;" f -_mouseMoving src/Dodge/Data/Input.hs 40;" f -_mousePos src/Dodge/Data/Input.hs 38;" f +_mouseButtons src/Dodge/Data/Input.hs 38;" f +_mouseButtonsReleased src/Dodge/Data/Input.hs 39;" f +_mouseContext src/Dodge/Data/Input.hs 35;" f +_mouseMoving src/Dodge/Data/Input.hs 36;" f +_mousePos src/Dodge/Data/Input.hs 34;" f _mtBranches src/Dodge/Data/MetaTree.hs 10;" f _mtLabel src/Dodge/Data/MetaTree.hs 10;" f _mtTree src/Dodge/Data/MetaTree.hs 10;" f @@ -2183,7 +2180,7 @@ _prVel src/Dodge/Data/Prop.hs 24;" f _prVelZ src/Dodge/Data/Prop.hs 27;" f _preloadData src/Dodge/Data/Universe.hs 33;" f _pressPlates src/Dodge/Data/LWorld.hs 138;" f -_pressedKeys src/Dodge/Data/Input.hs 41;" f +_pressedKeys src/Dodge/Data/Input.hs 37;" f _projectiles src/Dodge/Data/LWorld.hs 108;" f _props src/Dodge/Data/LWorld.hs 106;" f _proxDist src/Dodge/Data/Machine/Sensor.hs 29;" f @@ -2299,14 +2296,14 @@ _scPositionedMenuOption src/Dodge/Data/Universe.hs 86;" f _scSelectionList src/Dodge/Data/Universe.hs 88;" f _scTitle src/Dodge/Data/Universe.hs 83;" f _screenTextureVAO src/Data/Preload/Render.hs 52;" f -_scrollAmount src/Dodge/Data/Input.hs 44;" f +_scrollAmount src/Dodge/Data/Input.hs 40;" f _scrollItemID src/Dodge/Data/World.hs 66;" f _scrollItemID src/Dodge/Data/World.hs 75;" f _scrollItemID src/Dodge/Data/World.hs 79;" f _scrollSmoothing src/Dodge/Data/World.hs 63;" f _scrollSmoothing src/Dodge/Data/World.hs 69;" f -_scrollTestFloat src/Dodge/Data/Input.hs 51;" f -_scrollTestInt src/Dodge/Data/Input.hs 52;" f +_scrollTestFloat src/Dodge/Data/Input.hs 47;" f +_scrollTestInt src/Dodge/Data/Input.hs 48;" f _scurColor src/Dodge/Data/SelectionList.hs 26;" f _scurPos src/Dodge/Data/SelectionList.hs 24;" f _scurSize src/Dodge/Data/SelectionList.hs 25;" f @@ -2351,7 +2348,7 @@ _skVel src/Dodge/Data/Spark.hs 15;" f _skinHead src/Dodge/Data/Creature/Misc.hs 78;" f _skinLower src/Dodge/Data/Creature/Misc.hs 80;" f _skinUpper src/Dodge/Data/Creature/Misc.hs 79;" f -_smoothScrollAmount src/Dodge/Data/Input.hs 45;" f +_smoothScrollAmount src/Dodge/Data/Input.hs 41;" f _soundAngDist src/Sound/Data.hs 49;" f _soundChannel src/Sound/Data.hs 48;" f _soundChunkID src/Sound/Data.hs 53;" f @@ -2378,7 +2375,7 @@ _stuckCrID src/Dodge/Data/Projectile.hs 50;" f _stuckCrOffset src/Dodge/Data/Projectile.hs 50;" f _stuckCrRot src/Dodge/Data/Projectile.hs 50;" f _stuckWlID src/Dodge/Data/Projectile.hs 51;" f -_subInventory src/Dodge/Data/HUD.hs 20;" f +_subInventory src/Dodge/Data/HUD.hs 34;" f _swColor src/Dodge/Data/Shockwave.hs 18;" f _swDam src/Dodge/Data/Shockwave.hs 23;" f _swDirection src/Dodge/Data/Shockwave.hs 19;" f @@ -2399,11 +2396,11 @@ _tbPos src/Dodge/Data/TractorBeam.hs 14;" f _tbStartPos src/Dodge/Data/TractorBeam.hs 15;" f _tbTime src/Dodge/Data/TractorBeam.hs 17;" f _tbVel src/Dodge/Data/TractorBeam.hs 16;" f -_termID src/Dodge/Data/HUD.hs 40;" f +_termID src/Dodge/Data/HUD.hs 31;" f _terminals src/Dodge/Data/LWorld.hs 128;" f _teslaArcs src/Dodge/Data/LWorld.hs 116;" f _testFloat src/Dodge/Data/World.hs 43;" f -_textInput src/Dodge/Data/Input.hs 50;" f +_textInput src/Dodge/Data/Input.hs 46;" f _textureObject src/Shader/Data.hs 95;" f _tiText src/Dodge/Data/Terminal/Status.hs 14;" f _tileArrayZ src/Data/Tile.hs 24;" f @@ -3175,7 +3172,6 @@ defaultCreatureMemory src/Dodge/Default/Creature.hs 65;" f defaultCrystalWall src/Dodge/Default/Wall.hs 47;" f defaultDirtBlock src/Dodge/Default/Block.hs 19;" f defaultDirtWall src/Dodge/Default/Wall.hs 68;" f -defaultDisplayInventory src/Dodge/Default/World.hs 170;" f defaultDoor src/Dodge/Default/Door.hs 29;" f defaultDoorWall src/Dodge/Default/Wall.hs 39;" f defaultDrawButton src/Dodge/Button/Draw.hs 29;" f @@ -3287,7 +3283,7 @@ doDebugTestF6 src/Dodge/Update/Input/DebugTest.hs 40;" f doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 48;" f doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 56;" f doDrWdWd src/Dodge/DrWdWd.hs 16;" f -doDrag src/Dodge/Update/Input/InGame.hs 117;" f +doDrag src/Dodge/Update/Input/InGame.hs 126;" f doDrawing src/Dodge/Render.hs 34;" f doDrawing' src/Dodge/Render.hs 45;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f @@ -3314,7 +3310,7 @@ doPropUpdates src/Dodge/Prop/Update.hs 34;" f doQuickload src/Dodge/Save.hs 82;" f doQuicksave src/Dodge/Save.hs 77;" f doRandImpulse src/Dodge/RandImpulse.hs 7;" f -doRegexInput src/Dodge/Update/Input/InGame.hs 444;" f +doRegexInput src/Dodge/Update/Input/InGame.hs 445;" f doRoomInPlacements src/Dodge/Layout.hs 97;" f doRoomOutPlacements src/Dodge/Layout.hs 107;" f doRoomPlacements src/Dodge/Layout.hs 122;" f @@ -3528,8 +3524,8 @@ encircleCloseP src/Dodge/Creature/Boid.hs 36;" f encircleDistP src/Dodge/Creature/Boid.hs 22;" f encircleP src/Dodge/Creature/Boid.hs 28;" f endArcPos src/Dodge/Tesla.hs 87;" f -endCombineRegex src/Dodge/Update/Input/InGame.hs 270;" f -endRegex src/Dodge/Update/Input/InGame.hs 261;" f +endCombineRegex src/Dodge/Update/Input/InGame.hs 271;" f +endRegex src/Dodge/Update/Input/InGame.hs 265;" f energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 592;" f enterCombineInv src/Dodge/DisplayInventory.hs 322;" f epText src/Dodge/Inventory/SelectionList.hs 76;" f @@ -3690,7 +3686,7 @@ getAutoSpringLinks src/Dodge/Item/Grammar.hs 85;" f getAvailableListLines src/Dodge/SelectionList.hs 10;" f getBulHitDams src/Dodge/Bullet.hs 170;" f getBulletType src/Dodge/HeldUse.hs 933;" f -getCloseObj src/Dodge/Update/Input/InGame.hs 535;" f +getCloseObj src/Dodge/Update/Input/InGame.hs 531;" f getCommand src/Dodge/Terminal.hs 58;" f getCommands src/Dodge/Terminal.hs 55;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 46;" f @@ -3923,7 +3919,7 @@ isAnimate src/Dodge/Creature/Test.hs 144;" f isCognizant src/Dodge/Creature/Perception.hs 106;" f isConnected src/Dodge/Inventory/Swap.hs 76;" f isElectrical src/Dodge/Machine/Update.hs 80;" f -isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 196;" f +isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 197;" f isInLnk src/Dodge/PlacementSpot.hs 169;" f isJust' src/MaybeHelp.hs 29;" f isLHS src/Geometry/LHS.hs 8;" f @@ -4208,7 +4204,7 @@ maybeClearPath src/Dodge/Block.hs 72;" f maybeClearPaths src/Dodge/Block.hs 69;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 32;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 37;" f -maybeExitCombine src/Dodge/Update/Input/InGame.hs 556;" f +maybeExitCombine src/Dodge/Update/Input/InGame.hs 552;" f maybeOpenConsole src/Dodge/Update.hs 131;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 116;" f @@ -4428,7 +4424,7 @@ parseNum src/Dodge/Debug/Terminal.hs 75;" f pathConnected src/Dodge/Room/CheckConsistency.hs 14;" f pathEdgeObstructed src/Dodge/Path.hs 43;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f -pauseGame src/Dodge/Update/Input/InGame.hs 521;" f +pauseGame src/Dodge/Update/Input/InGame.hs 523;" f pauseMenu src/Dodge/Menu.hs 56;" f pauseMenuOptions src/Dodge/Menu.hs 61;" f pauseSound src/Dodge/SoundLogic.hs 42;" f @@ -4959,7 +4955,7 @@ setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 288;" f -setSelWhileDragging src/Dodge/Update/Input/InGame.hs 333;" f +setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f setShadowLimits src/Dodge/Shadows.hs 11;" f @@ -5014,8 +5010,8 @@ shiftDraw src/Dodge/Render/ShapePicture.hs 78;" f shiftDraw' src/Dodge/Render/ShapePicture.hs 84;" f shiftInBy src/Dodge/PlacementSpot.hs 251;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 305;" f -shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 346;" f -shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 340;" f +shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 350;" f +shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 344;" f shiftLinkBy src/Dodge/Room/Link.hs 87;" f shiftPSBy src/Dodge/Placement/Shift.hs 12;" f shiftPathBy src/Dodge/Room/Link.hs 92;" f @@ -5115,7 +5111,7 @@ soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundWithStatus src/Dodge/SoundLogic.hs 104;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f southPillarsRoom src/Dodge/Room/LongDoor.hs 86;" f -spaceAction src/Dodge/Update/Input/InGame.hs 525;" f +spaceAction src/Dodge/Update/Input/InGame.hs 526;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 190;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 183;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 175;" f @@ -5171,7 +5167,7 @@ stackText src/Picture/Base.hs 188;" f stackedInventory src/Dodge/Creature.hs 310;" f startCr src/Dodge/Creature.hs 92;" f startCrafts src/Dodge/Room/Start.hs 93;" f -startDrag src/Dodge/Update/Input/InGame.hs 279;" f +startDrag src/Dodge/Update/Input/InGame.hs 280;" f startInvList src/Dodge/Creature.hs 107;" f startInventory src/Dodge/Creature.hs 110;" f startNewGameInSlot src/Dodge/StartNewGame.hs 15;" f @@ -5387,14 +5383,14 @@ truncate src/Polyhedra/Geodesic.hs 38;" f trunkDepth src/TreeHelp.hs 161;" f tryAttachItems src/Dodge/Item/Grammar.hs 34;" f tryClickUse src/Dodge/Creature/YourControl.hs 225;" f -tryCombine src/Dodge/Update/Input/InGame.hs 546;" f +tryCombine src/Dodge/Update/Input/InGame.hs 542;" f tryDrawToCapacitor src/Dodge/Creature/State.hs 150;" f -tryDropSelected src/Dodge/Update/Input/InGame.hs 128;" f +tryDropSelected src/Dodge/Update/Input/InGame.hs 137;" f tryGetChannel src/Sound.hs 97;" f tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 23;" f tryGetRootItemInvID src/Dodge/Inventory/Location.hs 35;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 38;" f -tryPickupSelected src/Dodge/Update/Input/InGame.hs 135;" f +tryPickupSelected src/Dodge/Update/Input/InGame.hs 144;" f tryPlay src/Sound.hs 84;" f tryPutItemInInv src/Dodge/Inventory/Add.hs 24;" f tryPutItemInInvAt src/Dodge/Inventory/Add.hs 52;" f @@ -5445,7 +5441,7 @@ unusedSpotNearInLink src/Dodge/PlacementSpot.hs 201;" f updateAimPos src/Dodge/Update.hs 321;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla.hs 44;" f -updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 478;" f +updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 476;" f updateBarrel src/Dodge/Barreloid.hs 41;" f updateBarreloid src/Dodge/Barreloid.hs 15;" f updateBaseWheelEvent src/Dodge/Update/Scroll.hs 34;" f @@ -5483,18 +5479,18 @@ updateFlame src/Dodge/Flame.hs 19;" f updateFlames src/Dodge/Update.hs 670;" f updateFloatingCamera src/Dodge/Update/Camera.hs 35;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 363;" f -updateFunctionKeys src/Dodge/Update/Input/InGame.hs 356;" f +updateFunctionKeys src/Dodge/Update/Input/InGame.hs 359;" f updateGusts src/Dodge/Update.hs 797;" f updateHumanoid src/Dodge/Humanoid.hs 13;" f updateIMl src/Dodge/Update.hs 538;" f updateIMl' src/Dodge/Update.hs 543;" f updateInGameCamera src/Dodge/Update/Camera.hs 79;" f -updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 425;" f +updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 426;" f updateInt2Map src/Dodge/Zoning/Base.hs 92;" f updateInventoryPositioning src/Dodge/DisplayInventory.hs 88;" f updateItemTargeting src/Dodge/Creature/State.hs 258;" f -updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 394;" f -updateKeyInGame src/Dodge/Update/Input/InGame.hs 419;" f +updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 395;" f +updateKeyInGame src/Dodge/Update/Input/InGame.hs 420;" f updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 381;" f updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 403;" f updateLampoid src/Dodge/Lampoid.hs 12;" f @@ -5502,15 +5498,15 @@ updateLaser src/Dodge/Laser/Update.hs 11;" f updateLasers src/Dodge/Update.hs 444;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 170;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f -updateLongPressInGame src/Dodge/Update/Input/InGame.hs 438;" f +updateLongPressInGame src/Dodge/Update/Input/InGame.hs 439;" f updateMachine src/Dodge/Machine/Update.hs 20;" f updateMagnets src/Dodge/Update.hs 329;" f -updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 202;" f +updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 203;" f updateMouseContext src/Dodge/Update.hs 342;" f updateMouseContextGame src/Dodge/Update.hs 347;" f -updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 99;" f -updateMouseInGame src/Dodge/Update/Input/InGame.hs 89;" f -updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 160;" f +updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 96;" f +updateMouseInGame src/Dodge/Update/Input/InGame.hs 86;" f +updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 166;" f updateObjCatMaybes src/Dodge/Update.hs 560;" f updateObjMapMaybe src/Dodge/Update.hs 553;" f updatePastWorlds src/Dodge/Update.hs 432;" f @@ -5550,7 +5546,7 @@ updateUniverse src/Dodge/Update.hs 79;" f updateUniverseFirst src/Dodge/Update.hs 90;" f updateUniverseLast src/Dodge/Update.hs 141;" f updateUniverseMid src/Dodge/Update.hs 161;" f -updateUseInputInGame src/Dodge/Update/Input/InGame.hs 46;" f +updateUseInputInGame src/Dodge/Update/Input/InGame.hs 45;" f updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 23;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 10;" f updateWallDamages src/Dodge/Update/WallDamage.hs 10;" f