From 5ac379959a7ecd02f49507a06278ff91f269d5f1 Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 20 Feb 2023 11:30:10 +0000 Subject: [PATCH] Show items that are to be combined --- src/Dodge/Inventory.hs | 14 -------------- src/Dodge/Render/HUD.hs | 23 ++++++++++++++++++++++- src/Dodge/SelectionSections.hs | 21 ++++++++++++++++----- 3 files changed, 38 insertions(+), 20 deletions(-) diff --git a/src/Dodge/Inventory.hs b/src/Dodge/Inventory.hs index 301e9ff90..d281acf44 100644 --- a/src/Dodge/Inventory.hs +++ b/src/Dodge/Inventory.hs @@ -105,20 +105,6 @@ rmSelectedInvItem cid w = case w ^? cWorld . lWorld . creatures . ix cid . crMan Just i -> rmInvItem cid i w Nothing -> w -selSecSelSize :: Int -> Int -> SelectionSections a -> Maybe Int -selSecSelSize i j sss = fmap length $ sss ^? sssSections . ix i . ssItems . ix j . siPictures - -selSecSelPos :: Int -> Int -> SelectionSections a -> Maybe Int -selSecSelPos i j sss = do - ss <- sss ^? sssSections . ix i - return . (secpos +) - . subtract (ss ^. ssOffset) - . sum - . fmap (length . _siPictures) - . fst $ IM.split j (ss ^. ssItems) - where - secpos = sum . fmap (length . _ssShownItems) . fst $ IM.split i $ sss ^. sssSections - selNumPos :: ManipulatedObject -> World -> Maybe Int selNumPos mo w = w ^? hud . hudElement . diSections >>= case mo of diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index bab012e9c..ed513f485 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -178,7 +178,28 @@ examineInventoryExtra mtweaki mitm cfig = fromMaybe mempty $ do --combineInventoryExtra :: SelectionIntMap CombinableItem -> Maybe Int -> Configuration -> World -> Picture combineInventoryExtra :: SelectionSections CombinableItem -> Configuration -> World -> Picture -combineInventoryExtra sss cfig w = mempty +combineInventoryExtra sss cfig w = fromMaybe mempty $ do + (i,j) <- sss ^? sssSelPos . _Just + si <- sss ^? sssSections . ix i . ssItems . ix j + cpos <- selSecSelPos i j sss + let col = _siColor si + return $ + pictures + [ fromMaybe mempty $ do + strs <- si ^? siPayload . ciInfo + return $ listPicturesAtOff (subInvX + 150) 60 cfig cpos $ map (color red . text) strs + , fromMaybe mempty $ do + lnks <- si ^? siPayload . ciInvIDs + return $ + lnkMidPosInvSelsCol cfig w cpos col lnks + -- <> foldMap (topCursorTypeWidth listCursorNESW (topInvW + 2) cfig w) lnks + <> foldMap invcursor lnks + <> combineCounts cfig w lnks + ] + where + invcursor i = fromMaybe mempty $ do + sss' <- w ^? hud . hudElement . diSections + return $ selSecDrawCursor 17 [North,South,East] cfig (invDisplayParams w) sss' 0 i -- fromMaybe mempty $ do -- i <- mi -- let cpos = getIthPos i (sm ^. smShownItems) diff --git a/src/Dodge/SelectionSections.hs b/src/Dodge/SelectionSections.hs index 63b17953e..457e4a2a2 100644 --- a/src/Dodge/SelectionSections.hs +++ b/src/Dodge/SelectionSections.hs @@ -4,6 +4,8 @@ module Dodge.SelectionSections ( ssLookupGT, ssSetCursor, setFirstPosSelectionSections, + selSecSelPos, + selSecSelSize, ) where import Control.Applicative @@ -23,11 +25,6 @@ setFirstPosSelectionSections sss = fromMaybe sss $ do (i, j, _) <- ssLookupMin sss return $ sss & sssSelPos ?~ (i, j) ---scrollUpSelectionSections :: SelectionSections a -> SelectionSections a ---scrollUpSelectionSections sss = fromMaybe (setFirstPosSelectionSections sss) $ do --- (i, j) <- sss ^? sssSelPos . _Just --- (i', j', _) <- ssLookupUp i j sss --- return $ sss & sssSelPos ?~ (i', j') scrollUpSelectionSections :: SelectionSections a -> SelectionSections a scrollUpSelectionSections sss = sss & sssSelPos .~ fmap f (ssScrollUp (sss & sssSections %~ fmap (ssItems %~ IM.filter _siIsSelectable))) @@ -128,5 +125,19 @@ ssLookupGE' i sss = do Just (j', si) -> return (i', j', si) Nothing -> ssLookupGT' i' sss +selSecSelSize :: Int -> Int -> SelectionSections a -> Maybe Int +selSecSelSize i j sss = fmap length $ sss ^? sssSections . ix i . ssItems . ix j . siPictures + +selSecSelPos :: Int -> Int -> SelectionSections a -> Maybe Int +selSecSelPos i j sss = do + ss <- sss ^? sssSections . ix i + return . (secpos +) + . subtract (ss ^. ssOffset) + . sum + . fmap (length . _siPictures) + . fst $ IM.split j (ss ^. ssItems) + where + secpos = sum . fmap (length . _ssShownItems) . fst $ IM.split i $ sss ^. sssSections + --getIthPos :: Int -> IM.IntMap (SelectionItem a) -> Int --getIthPos i sm = sum . fmap _siHeight . fst $ IM.split i sm