Tab scrolls through inventory sections
This commit is contained in:
@@ -13,6 +13,9 @@ module Dodge.SelectionSections (
|
||||
ssLookupGE,
|
||||
ssLookupLE,
|
||||
sssSelectionSlice,
|
||||
ssScrollUsing,
|
||||
ssLookupSecGTLoop,
|
||||
ssLookupSecLTLoop,
|
||||
) where
|
||||
|
||||
import Dodge.ListDisplayParams
|
||||
@@ -91,24 +94,27 @@ ssLookupMaxInSection i sss = do
|
||||
return (i, j, s)
|
||||
|
||||
ssLookupLT :: Int -> Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupLT i j sss = fromMaybe (ssLookupLT' i sss) $ do
|
||||
ssLookupLT i j sss = fromMaybe (ssLookupSecLT i sss) $ do
|
||||
ss <- sss ^? ix i
|
||||
(j', si) <- IM.lookupLT j (ss ^. ssItems)
|
||||
return $ Just (i, j', si)
|
||||
|
||||
ssLookupLT' :: Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupLT' i sss = do
|
||||
ssLookupSecLTLoop :: Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupSecLTLoop i sss = ssLookupSecLT i sss <|> ssLookupMax sss
|
||||
|
||||
ssLookupSecLT :: Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupSecLT i sss = do
|
||||
(i', ss) <- IM.lookupLT i sss
|
||||
case IM.lookupMax (ss ^. ssItems) of
|
||||
Just (j', si) -> return (i', j', si)
|
||||
Nothing -> ssLookupLT' i' sss
|
||||
Nothing -> ssLookupSecLT i' sss
|
||||
|
||||
ssLookupLE' :: Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupLE' i sss = do
|
||||
(i', ss) <- IM.lookupLE i sss
|
||||
case IM.lookupMax (ss ^. ssItems) of
|
||||
Just (j', si) -> return (i', j', si)
|
||||
Nothing -> ssLookupLT' i' sss
|
||||
Nothing -> ssLookupSecLT i' sss
|
||||
|
||||
ssLookupMin :: IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupMin sss = do
|
||||
@@ -116,17 +122,20 @@ ssLookupMin sss = do
|
||||
ssLookupGE' i sss
|
||||
|
||||
ssLookupGT :: Int -> Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupGT i j sss = fromMaybe (ssLookupGT' i sss) $ do
|
||||
ssLookupGT i j sss = fromMaybe (ssLookupSecGT i sss) $ do
|
||||
ss <- sss ^? ix i
|
||||
(j', si) <- IM.lookupGT j (ss ^. ssItems)
|
||||
return $ Just (i, j', si)
|
||||
|
||||
ssLookupGT' :: Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupGT' i sss = do
|
||||
ssLookupSecGT :: Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupSecGT i sss = do
|
||||
(i', ss) <- IM.lookupGT i sss
|
||||
case IM.lookupMin (ss ^. ssItems) of
|
||||
Just (j', si) -> return (i', j', si)
|
||||
Nothing -> ssLookupGT' i' sss
|
||||
Nothing -> ssLookupSecGT i' sss
|
||||
|
||||
ssLookupSecGTLoop :: Int -> IMSS a -> Maybe (Int, Int, SelectionItem a)
|
||||
ssLookupSecGTLoop i sss = ssLookupSecGT i sss <|> ssLookupMin sss
|
||||
|
||||
ssLookupGE :: XInfinity (Int,Int) -> IMSS a -> Maybe (Int,Int,SelectionItem a)
|
||||
ssLookupGE x sss = case x of
|
||||
@@ -149,7 +158,7 @@ ssLookupGE' i sss = do
|
||||
(i', ss) <- IM.lookupGE i sss
|
||||
case IM.lookupMin (ss ^. ssItems) of
|
||||
Just (j', si) -> return (i', j', si)
|
||||
Nothing -> ssLookupGT' i' sss
|
||||
Nothing -> ssLookupSecGT i' sss
|
||||
|
||||
selSecSelSize :: Int -> Int -> IMSS a -> Maybe Int
|
||||
selSecSelSize i j = (^? ix i . ssItems . ix j . siHeight)
|
||||
|
||||
Reference in New Issue
Block a user