Refactor close objects hud display

This commit is contained in:
2024-11-24 16:12:35 +00:00
parent e6c2b659fd
commit 81fcfea1be
11 changed files with 205 additions and 220 deletions
+1 -1
View File
@@ -1 +1 @@
All good (594 modules, at 14:06:19) All good (593 modules, at 16:12:32)
+2 -3
View File
@@ -50,11 +50,10 @@ data HUD = HUD
, _carteCenter :: Point2 , _carteCenter :: Point2
, _carteZoom :: Float , _carteZoom :: Float
, _carteRot :: Float , _carteRot :: Float
, _closeObjects :: [Either FloorItem Button] , _closeItems :: [FloorItem]
, _closeInterfaces :: [Button]
} }
makeLenses ''HUD makeLenses ''HUD
makeLenses ''HUDElement makeLenses ''HUDElement
makeLenses ''SubInventory makeLenses ''SubInventory
--makeLenses ''MouseInventorySelection
+2 -1
View File
@@ -156,7 +156,8 @@ defaultHUD =
, _carteCenter = V2 0 0 , _carteCenter = V2 0 0
, _carteZoom = 0.5 , _carteZoom = 0.5
, _carteRot = 0 , _carteRot = 0
, _closeObjects = [] , _closeItems = mempty
, _closeInterfaces = mempty
} }
defaultDisplayInventory :: HUDElement defaultDisplayInventory :: HUDElement
+26 -22
View File
@@ -1,5 +1,5 @@
-- {-# OPTIONS_GHC -fno-full-laziness #-} -- {-# OPTIONS_GHC -fno-full-laziness #-}
{-# LANGUAGE TupleSections #-} --{-# LANGUAGE TupleSections #-}
module Dodge.DisplayInventory ( module Dodge.DisplayInventory (
toggleCombineInv, toggleCombineInv,
@@ -52,10 +52,10 @@ updateCombineSections ::
updateCombineSections w cfig = updateCombineSections w cfig =
updateSectionsPositioning updateSectionsPositioning
(const 5) (const 5)
(const 0)
(w ^? hud . hudElement . subInventory . ciSelection . _Just) (w ^? hud . hudElement . subInventory . ciSelection . _Just)
(getAvailableListLines secondColumnParams cfig) (getAvailableListLines secondColumnParams cfig)
[(0, sclose), (-1, sfclose)] [(0, sclose), (-1, sfclose)]
(IM.fromAscList [(-1,0),(0,0)])
where where
filtcurs = w ^? hud . hudElement . subInventory . ciSelection . _Just . _1 == Just (-1) filtcurs = w ^? hud . hudElement . subInventory . ciSelection . _Just . _1 == Just (-1)
(sfclose, sclose) = (sfclose, sclose) =
@@ -117,6 +117,13 @@ displaySectionsSizes 0 = 10
displaySectionsSizes 3 = 10 displaySectionsSizes 3 = 10
displaySectionsSizes _ = 3 displaySectionsSizes _ = 3
displayIndents :: Int -> Int
displayIndents (-3) = 2
displayIndents 0 = 2
displayIndents 3 = 2
displayIndents 5 = 2
displayIndents _ = 0
updateDisplaySections :: updateDisplaySections ::
World -> World ->
Configuration -> Configuration ->
@@ -125,10 +132,10 @@ updateDisplaySections ::
updateDisplaySections w cfig = updateDisplaySections w cfig =
updateSectionsPositioning updateSectionsPositioning
displaySectionsSizes displaySectionsSizes
displayIndents
mselpos mselpos
(getAvailableListLines (invDisplayParams w) cfig) (getAvailableListLines (invDisplayParams w) cfig)
[statushead,statusdisplay,invhead,invx,youx, nearbyhead, closex] [statushead,statusdisplay,invhead,invx,youx, nearbyhead, closex]
(IM.fromAscList [(-4,0),(-3,2),(-2,0),(-1,0),(0,2),(1,0),(2,0),(3,2)])
where where
mselpos = w ^? hud . hudElement . diSelection . _Just mselpos = w ^? hud . hudElement . diSelection . _Just
invfiltcurs = mselpos ^? _Just . _1 == Just (-1) invfiltcurs = mselpos ^? _Just . _1 == Just (-1)
@@ -147,21 +154,19 @@ updateDisplaySections w cfig =
youx = (1, youitems) youx = (1, youitems)
makehead str i = (i,IM.singleton 0 $ SelectionInfo [str] 1 False white 0) makehead str i = (i,IM.singleton 0 $ SelectionInfo [str] 1 False white 0)
statushead = (-4,IM.singleton 0 $ SelectionInfo ["STATUS"] 1 False white 0) statushead = (-4,IM.singleton 0 $ SelectionInfo ["STATUS"] 1 False white 0)
statusdisplay = (-3,IM.singleton 0 $ SelectionInfo ["HEALTH "++show (_crHP cr)] 1 False white 0) statusdisplay = (-3,IM.singleton 0 $ SelectionInfo ["HEALTH: "++show (_crHP cr)] 1 False white 0)
invhead = if null sfinv then makehead "INVENTORY" (-2) else filtinv invhead = if null sfinv then makehead "INVENTORY" (-2) else filtinv
youitems = IM.singleton 0 $ SelectionItem [thetext] 1 True invDimColor 2 () youitems = IM.singleton 0 $ SelectionItem [thetext] 1 True invDimColor 2 ()
thetext = displayFreeSlots (crNumFreeSlots cr) thetext = displayFreeSlots (crNumFreeSlots cr)
closeitms = closeitms =
IM.fromDistinctAscList . zip [0 ..] $ IM.fromDistinctAscList . zip [0 ..] $
map closeObjectToSelectionItem (w ^. hud . closeObjects) map closeItemToSelectionItem (w ^. hud . closeItems)
invitems = invitems =
IM.mapWithKey IM.mapWithKey
(\k (indent, x) -> invSelectionItem indent cr k (x ^. locLDT . ldtValue)) (\k (indent, x) -> invSelectionItem indent cr k (x ^. locLDT . ldtValue))
(fmap (first removeindentiffiltering) . allInvLocs $ _crInv cr) (fmap (first removeindentiffiltering) . allInvLocs $ _crInv cr)
-- this clearly deserves refactoring, also check if drawInventory/iextra
-- needs it at the same time
removeindentiffiltering = removeindentiffiltering =
if maybe False isFilteringInv (w ^? hud . hudElement . diSections) if maybe False (not . null) (w ^? hud . hudElement . diInvFilter . _Just)
then const 0 then const 0
else id else id
cr = you w cr = you w
@@ -218,7 +223,7 @@ sectionsSizes ::
IM.IntMap Int IM.IntMap Int
sectionsSizes x f is sss = doSectionSize extraavailable mintaken is sss mempty sectionsSizes x f is sss = doSectionSize extraavailable mintaken is sss mempty
where where
mintaken = IM.mapWithKey (\k y -> min (f k) y) sss mintaken = IM.mapWithKey (min . f) sss
extraavailable = x - sum mintaken extraavailable = x - sum mintaken
doSectionSize :: doSectionSize ::
@@ -249,26 +254,25 @@ doSectionSize extraavailable mintaken is sss done = fromMaybe done $ do
updateSectionsPositioning :: updateSectionsPositioning ::
(Int -> Int) -> -- for determining each sections minimum size (Int -> Int) -> -- for determining each sections minimum size
(Int -> Int) -> -- for determining each sections indent
Maybe (Int, Int) -> Maybe (Int, Int) ->
Int -> Int ->
[(Int, IM.IntMap (SelectionItem a))] -> [(Int, IM.IntMap (SelectionItem a))] ->
IM.IntMap Int ->
IM.IntMap (SelectionSection a) -> IM.IntMap (SelectionSection a) ->
IM.IntMap (SelectionSection a) IM.IntMap (SelectionSection a)
updateSectionsPositioning f mselpos allavailablelines lsss indents sss = updateSectionsPositioning f h mselpos allavailablelines lsss sss =
IM.intersectionWith updateSection ls mss `h` ssizes `g` offsets `h` indents IM.intersectionWithKey (\k -> updateSection (h k) (m k)) ls ssizes `g` offsets
where where
offsets = fmap _ssOffset sss offsets = fmap _ssOffset sss
mss = IM.mapWithKey m ssizes m k = do
m k _ = do
(k', i) <- mselpos (k', i) <- mselpos
guard $ k == k' guard $ k == k'
return i return i
ls = IM.fromList lsss ls = IM.fromList lsss
h = IM.intersectionWith ($) -- h = IM.intersectionWith ($)
-- defaults non-existing offsets to 0 -- defaults non-existing offsets to 0
g = merge (mapMissing (const ($ 0))) dropMissing (zipWithMatched (const ($))) g = merge (mapMissing (const ($ 0))) dropMissing (zipWithMatched (const ($)))
lk = fromMaybe [] $ fmap ((: []) . fst) mselpos lk = maybe [] ((: []) . fst) mselpos
ssizes = ssizes =
sectionsSizes sectionsSizes
allavailablelines allavailablelines
@@ -277,13 +281,13 @@ updateSectionsPositioning f mselpos allavailablelines lsss indents sss =
$ sectionsDesiredLines ls $ sectionsDesiredLines ls
updateSection :: updateSection ::
IM.IntMap (SelectionItem a) ->
Maybe Int ->
Int -> Int ->
Maybe Int ->
IM.IntMap (SelectionItem a) ->
Int -> Int ->
Int -> Int ->
SelectionSection a SelectionSection a
updateSection sis mcsel availablelines oldoffset indent = updateSection indent mcsel sis availablelines oldoffset =
SelectionSection SelectionSection
{ _ssItems = sis { _ssItems = sis
, _ssOffset = offset , _ssOffset = offset
@@ -363,10 +367,10 @@ enterCombineInv cfig w =
} }
combsection = combsection =
updateSection updateSection
cm
(Just 0)
availablelines
0 0
(Just 0)
cm
availablelines
0 0
regexList :: String -> [String] -> Bool regexList :: String -> [String] -> Bool
+62 -65
View File
@@ -9,39 +9,38 @@ module Dodge.Inventory (
scrollAugInvSel, scrollAugInvSel,
crNumFreeSlots, crNumFreeSlots,
crInvSize, crInvSize,
selectedCloseObject, selectedCloseItem,
setInvPosFromSS, setInvPosFromSS,
module Dodge.Inventory.RBList, module Dodge.Inventory.RBList,
swapInvItems, swapInvItems,
scrollAugNextInSection, scrollAugNextInSection,
isFilteringInv, -- isFilteringInv,
swapItemWith, swapItemWith,
) where ) where
import qualified Data.IntSet as IS
import Control.Monad
import Dodge.Item.Grammar
import Dodge.Data.DoubleTree
import Sound.Data
import Dodge.SoundLogic
import Control.Applicative import Control.Applicative
import Control.Monad
import Data.Function
import qualified Data.IntSet as IS
import Data.Maybe import Data.Maybe
import Dodge.Base import Dodge.Base
import Dodge.Data.DoubleTree
import Dodge.Data.SelectionList import Dodge.Data.SelectionList
import Dodge.Data.World import Dodge.Data.World
--import Dodge.DisplayInventory
import Dodge.Euse import Dodge.Euse
import Dodge.Inventory.CheckSlots import Dodge.Inventory.CheckSlots
import Dodge.Inventory.CloseObject
import Dodge.Inventory.Location import Dodge.Inventory.Location
import Dodge.Inventory.RBList import Dodge.Inventory.RBList
import Dodge.ItEffect import Dodge.ItEffect
import Dodge.Item.Grammar
import Dodge.SelectionSections import Dodge.SelectionSections
import Dodge.SoundLogic
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import LensHelp import LensHelp
import ListHelp import ListHelp
import NewInt import NewInt
import Sound.Data
--import Padding --import Padding
@@ -90,12 +89,13 @@ rmInvItem cid invid w =
-- & updateCreatureItemLocations cid -- & updateCreatureItemLocations cid
pointcid = cWorld . lWorld . creatures . ix cid pointcid = cWorld . lWorld . creatures . ix cid
updateselectionextra | cid == 0 = hud . hudElement . diSelectionExtra .~ mempty updateselectionextra
| cid == 0 = hud . hudElement . diSelectionExtra .~ mempty
| otherwise = id | otherwise = id
updateselection updateselection
| cid == 0 && cr ^? crManipulation . manObject . imSelectedItem == Just invid = | cid == 0 && cr ^? crManipulation . manObject . imSelectedItem == Just invid =
scrollAugInvSel (-1) . scrollAugInvSel 1 -- . updateInventorySectionItems scrollAugInvSel (-1) . scrollAugInvSel 1 -- . updateInventorySectionItems
-- id -- . updateInventorySectionItems -- id -- . updateInventorySectionItems
| otherwise = | otherwise =
pointcid . crManipulation . manObject . imSelectedItem %~ g pointcid . crManipulation . manObject . imSelectedItem %~ g
@@ -126,36 +126,34 @@ rmInvItem cid invid w =
updateCloseObjects :: World -> World updateCloseObjects :: World -> World
updateCloseObjects w = updateCloseObjects w =
w w
& hud . closeObjects .~ newcloseobjects & hud . closeItems %~ f
& updatecursorposifnecessary & hud . closeInterfaces %~ g
where where
newcloseobjects = unionBy closeObjEq oldCloseFiltered currentClose -- the following should update any changed properties of flits/bts
updatecursorposifnecessary = g oldbts = intersectBy bteq cbts oldbts `btunion` cbts
case w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . ispCloseObject of f olditems = intersectBy feq citems olditems `itunion` citems
Just i itunion = unionBy feq
| i >= length newcloseobjects -> scrollAugInvSel 1 btunion = unionBy bteq
| isNothing (w ^? hud . hudElement . diSections . ix 3 . ssItems . ix i) -> feq = (==) `on` _flItID
scrollAugInvSel (-1) bteq = (==) `on` _btID
_ -> id cbts = filter (isclose . _btPos) activeButtons
filt = filter $ \obj -> dist ypos (closeObjPos obj) < 40 && hasButtonLOS ypos (closeObjPos obj) w citems =
filter (isclose . _flItPos)
. IM.elems
$ w ^. cWorld . lWorld . floorItems . unNIntMap
isclose pos = dist ypos pos < 40 && hasButtonLOS ypos pos w
ypos = _crPos $ you w ypos = _crPos $ you w
activeButtons = activeButtons =
map Right filter ((/=) BtNoLabel . _btState)
. filter ((/=) BtNoLabel . _btState)
. IM.elems . IM.elems
$ w ^. cWorld . lWorld . buttons $ w ^. cWorld . lWorld . buttons
currentClose = -- updatecursorposifnecessary =
filt $ -- case w ^? cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . ispCloseObject of
map Left (IM.elems $ w ^. cWorld . lWorld . floorItems . unNIntMap) -- Just i
++ activeButtons -- | i >= length newcloseobjects -> scrollAugInvSel 1
oldClose = filt $ mapMaybe updatebyid $ w ^. hud . closeObjects -- | isNothing (w ^? hud . hudElement . diSections . ix 3 . ssItems . ix i) ->
oldCloseFiltered = intersectBy closeObjEq oldClose currentClose -- scrollAugInvSel (-1)
updatebyid (Left flid) = -- _ -> id
fmap Left $
w
^? cWorld . lWorld . floorItems . unNIntMap
. ix (_unNInt $ _flItID flid)
updatebyid (Right btid) = fmap Right $ w ^? cWorld . lWorld . buttons . ix (_btID btid)
changeSwapSel :: Int -> World -> World changeSwapSel :: Int -> World -> World
changeSwapSel yi w changeSwapSel yi w
@@ -178,7 +176,7 @@ changeSwapClose f i w = fromMaybe w $ do
& swapAnyExtraSelection i k & swapAnyExtraSelection i k
& cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . ispCloseObject & cWorld . lWorld . creatures . ix 0 . crManipulation . manObject . ispCloseObject
.~ k .~ k
& hud . closeObjects %~ swapIndices i k & hud . closeItems %~ swapIndices i k
& hud . hudElement . diSelection . _Just . _2 .~ k & hud . hudElement . diSelection . _Just . _2 .~ k
& worldEventFlags . at InventoryChange ?~ () & worldEventFlags . at InventoryChange ?~ ()
@@ -196,7 +194,7 @@ swapInvItems f i w = fromMaybe w $ do
Just (0, j) | j == i -> hud . hudElement . diSelection . _Just . _2 .~ k Just (0, j) | j == i -> hud . hudElement . diSelection . _Just . _2 .~ k
_ -> id _ -> id
return $ return $
w w
& swapAnyExtraSelection i k & swapAnyExtraSelection i k
& checkConnection InventorySound disconnectItemS i k & checkConnection InventorySound disconnectItemS i k
& cWorld . lWorld . creatures . ix 0 %~ updatecreature k & cWorld . lWorld . creatures . ix 0 %~ updatecreature k
@@ -207,15 +205,16 @@ swapInvItems f i w = fromMaybe w $ do
& cWorld . lWorld %~ crUpdateItemLocations 0 -- the double application is inefficient, but necessary without further changes & cWorld . lWorld %~ crUpdateItemLocations 0 -- the double application is inefficient, but necessary without further changes
-- a rethink is maybe in order -- a rethink is maybe in order
& checkConnection InventoryConnectSound connectItemS i k & checkConnection InventoryConnectSound connectItemS i k
-- & checkconnect k InventoryConnectSound connectItemS
where where
-- cpos = fromMaybe 0 $ w ^? cWorld . lWorld . creatures . ix 0 . crPos -- & checkconnect k InventoryConnectSound connectItemS
-- checkconnect k stype s w'
-- | p (i+1) || p (i-1) -- cpos = fromMaybe 0 $ w ^? cWorld . lWorld . creatures . ix 0 . crPos
-- || p (k+1) || p (k-1) = soundStart stype cpos s Nothing w' -- checkconnect k stype s w'
-- | otherwise = w' -- | p (i+1) || p (i-1)
-- where -- || p (k+1) || p (k-1) = soundStart stype cpos s Nothing w'
-- p j = maybe False not $ w' ^? cWorld . lWorld . creatures . ix 0 . crInv . ix j . itLocation . ilIsRoot -- | otherwise = w'
-- where
-- p j = maybe False not $ w' ^? cWorld . lWorld . creatures . ix 0 . crInv . ix j . itLocation . ilIsRoot
updatecreature k = updatecreature k =
(crInv %~ IM.safeSwapKeys i k) (crInv %~ IM.safeSwapKeys i k)
. (crManipulation . manObject . imSelectedItem .~ k) . (crManipulation . manObject . imSelectedItem .~ k)
@@ -238,8 +237,9 @@ swapAnyExtraSelection i k w = fromMaybe w $ do
is <- w ^? hud . hudElement . diSelectionExtra is <- w ^? hud . hudElement . diSelectionExtra
let f = if i `IS.member` is then IS.insert k else id 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 g = if k `IS.member` is then IS.insert i else id
return $ w & hud . hudElement . diSelectionExtra return $
%~ (f . g . IS.delete i . IS.delete k) w & hud . hudElement . diSelectionExtra
%~ (f . g . IS.delete i . IS.delete k)
checkConnection :: SoundOrigin -> SoundID -> Int -> Int -> World -> World checkConnection :: SoundOrigin -> SoundID -> Int -> Int -> World -> World
checkConnection so s i j w = fromMaybe w $ do checkConnection so s i j w = fromMaybe w $ do
@@ -253,16 +253,17 @@ checkConnection so s i j w = fromMaybe w $ do
isConnected :: LocationLDT b a -> Bool isConnected :: LocationLDT b a -> Bool
isConnected x = case x ^. locLdtContext of isConnected x = case x ^. locLdtContext of
TopLDT -> not (null $ x ^. locLDT . ldtRight) TopLDT ->
|| not (null $ x ^. locLDT . ldtLeft) not (null $ x ^. locLDT . ldtRight)
|| not (null $ x ^. locLDT . ldtLeft)
_ -> True _ -> True
swapItemWith :: swapItemWith ::
(Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) -> (Int -> IM.IntMap (SelectionItem ()) -> Maybe Int) ->
(Int,Int) -> (Int, Int) ->
World -> World ->
World World
swapItemWith f (j,i) w = case j of swapItemWith f (j, i) w = case j of
0 -> w & swapInvItems f i 0 -> w & swapInvItems f i
3 -> w & changeSwapClose f i 3 -> w & changeSwapClose f i
_ -> w _ -> w
@@ -296,22 +297,18 @@ scrollAugInvSel yi w
scrollAugNextInSection :: World -> World scrollAugNextInSection :: World -> World
scrollAugNextInSection w = scrollAugNextInSection w =
w & hud . hudElement %~ doscroll w & hud . hudElement %~ doscroll
& worldEventFlags . at InventoryChange ?~ () & worldEventFlags . at InventoryChange ?~ ()
& setInvPosFromSS & setInvPosFromSS
& cWorld . lWorld %~ crUpdateItemLocations 0 & cWorld . lWorld %~ crUpdateItemLocations 0
where where
doscroll he = fromMaybe he $ do doscroll he = fromMaybe he $ do
sss <- he ^? diSections sss <- he ^? diSections
return $ he & diSelection %~ nextInSectionSS sss return $ he & diSelection %~ nextInSectionSS sss
selectedCloseObject :: World -> Maybe (Either FloorItem Button) selectedCloseItem :: World -> Maybe FloorItem
selectedCloseObject w = do selectedCloseItem w = do
i <- i <-
you w ^? crManipulation . manObject . ispCloseObject you w ^? crManipulation . manObject . ispCloseObject
<|> fmap fst (IM.lookupMin =<< w ^? hud . hudElement . diSections . ix 3 . ssItems) <|> fmap fst (IM.lookupMin =<< w ^? hud . hudElement . diSections . ix 3 . ssItems)
w ^? hud . closeObjects . ix i w ^? hud . closeItems . ix i
isFilteringInv :: IM.IntMap (SelectionSection a) -> Bool
isFilteringInv = not . null . (^. ix (-1) . ssItems)
-18
View File
@@ -1,18 +0,0 @@
module Dodge.Inventory.CloseObject (
closeObjPos,
closeObjEq,
) where
import Dodge.Data.Button
import Dodge.Data.FloorItem
import Geometry
closeObjPos :: Either FloorItem Button -> Point2
closeObjPos e = case e of
Right x -> _btPos x
Left x -> _flItPos x
closeObjEq :: Either FloorItem Button -> Either FloorItem Button -> Bool
closeObjEq (Right x) (Right y) = _btID x == _btID y
closeObjEq (Left x) (Left y) = _flItID x == _flItID y
closeObjEq _ _ = False
+9 -9
View File
@@ -1,9 +1,9 @@
{-# LANGUAGE LambdaCase #-} --{-# LANGUAGE LambdaCase #-}
module Dodge.Inventory.SelectionList ( module Dodge.Inventory.SelectionList (
invSelectionItem, invSelectionItem,
invSelectionItem', invSelectionItem',
closeObjectToSelectionItem, closeItemToSelectionItem,
) where ) where
import Dodge.Data.ComposedItem import Dodge.Data.ComposedItem
@@ -51,8 +51,8 @@ hotkeyToString x = case x of
Hotkey9 -> "[9]" Hotkey9 -> "[9]"
Hotkey0 -> "[0]" Hotkey0 -> "[0]"
closeObjectToSelectionItem :: Either FloorItem Button -> SelectionItem () closeItemToSelectionItem :: FloorItem -> SelectionItem ()
closeObjectToSelectionItem e = closeItemToSelectionItem e =
SelectionItem SelectionItem
{ _siPictures = pics { _siPictures = pics
, _siHeight = length pics , _siHeight = length pics
@@ -63,11 +63,11 @@ closeObjectToSelectionItem e =
, _siPayload = () , _siPayload = ()
} }
where where
(pics, col) = closeObjectToTextPictures e (pics, col) = closeItemToTextPictures e
closeObjectToTextPictures :: Either FloorItem Button -> ([String], Color) closeItemToTextPictures :: FloorItem -> ([String], Color)
closeObjectToTextPictures = \case closeItemToTextPictures flit =
Left flit ->
let it = _flIt flit let it = _flIt flit
in (basicItemDisplay it, itemInvColor . pciToCI $ basePCI it) in (basicItemDisplay it, itemInvColor . pciToCI $ basePCI it)
Right bt -> ([_btText bt], yellow)
-- Right bt -> ([_btText bt], yellow)
+40 -38
View File
@@ -4,10 +4,10 @@ module Dodge.Render.HUD (
drawHUD, drawHUD,
) where ) where
import qualified Data.IntSet as IS
import Control.Applicative import Control.Applicative
import Control.Lens import Control.Lens
import Control.Monad import Control.Monad
import qualified Data.IntSet as IS
import qualified Data.Map.Strict as M import qualified Data.Map.Strict as M
import Data.Maybe import Data.Maybe
--import qualified Data.Vector as V --import qualified Data.Vector as V
@@ -47,19 +47,9 @@ drawHUD :: Configuration -> World -> Picture
drawHUD cfig w = case w ^. hud . hudElement of drawHUD cfig w = case w ^. hud . hudElement of
DisplayCarte -> drawCarte cfig w DisplayCarte -> drawCarte cfig w
DisplayInventory{_diSections = sections, _subInventory = subinv} -> DisplayInventory{_diSections = sections, _subInventory = subinv} ->
drawHP cfig w drawInventory sections w cfig
<> drawInventory sections w cfig
<> drawSubInventory subinv cfig w <> drawSubInventory subinv cfig w
drawHP :: Configuration -> World -> Picture
drawHP cfig =
dShadCol white
. translate (halfWidth cfig) (halfHeight cfig - 40)
. scale 0.2 0.2
. textRight
. show
. (^?! cWorld . lWorld . creatures . ix 0 . crHP)
drawInventory :: IM.IntMap (SelectionSection ()) -> World -> Configuration -> Picture drawInventory :: IM.IntMap (SelectionSection ()) -> World -> Configuration -> Picture
drawInventory sss w cfig = drawInventory sss w cfig =
drawSelectionSections sss ldp cfig drawSelectionSections sss ldp cfig
@@ -72,8 +62,9 @@ drawInventory sss w cfig =
curs = invCursorParams w curs = invCursorParams w
iextra = fromMaybe mempty $ do iextra = fromMaybe mempty $ do
inv <- w ^? cWorld . lWorld . creatures . ix 0 . crInv inv <- w ^? cWorld . lWorld . creatures . ix 0 . crInv
guard . not . isFilteringInv =<< (w ^? hud . hudElement . diSections) case w ^? hud . hudElement . diInvFilter . _Just of
return . inventoryExtra sss cfig w $ invAdj inv Just (_ : _) -> Nothing
_ -> return . inventoryExtra sss cfig w $ invAdj inv
drawRootCursor :: drawRootCursor ::
World -> World ->
@@ -109,13 +100,17 @@ getRootItemBounds i inv = do
-- this should display while dragging a single inv item -- this should display while dragging a single inv item
drawMouseOver :: Configuration -> World -> Picture drawMouseOver :: Configuration -> World -> Picture
drawMouseOver cfig w = concat (invsel <|> combinvsel drawMouseOver cfig w =
<|> drawDragSelect cfig w) concat
<> concat (drawDragSelected cfig w) ( invsel <|> combinvsel
<|> drawDragSelect cfig w
)
<> concat (drawDragSelected cfig w)
where where
invsel = do invsel = do
(j, i) <- w ^? input . mouseContext . mcoInvSelect <|> (j, i) <-
w ^? input . mouseContext . mcoInvFilt w ^? input . mouseContext . mcoInvSelect
<|> w ^? input . mouseContext . mcoInvFilt
sss <- w ^? hud . hudElement . diSections sss <- w ^? hud . hudElement . diSections
let idp = invDisplayParams w let idp = invDisplayParams w
return . translateScreenPos cfig (invDisplayParams w ^. ldpPos) return . translateScreenPos cfig (invDisplayParams w ^. ldpPos)
@@ -123,8 +118,9 @@ drawMouseOver cfig w = concat (invsel <|> combinvsel
$ selSecDrawCursorAt 15 idp curs sss (j, i) $ selSecDrawCursorAt 15 idp curs sss (j, i)
curs = BackdropCursor curs = BackdropCursor
combinvsel = do combinvsel = do
(j, i) <- (w ^? input . mouseContext . mcoCombSelect) (j, i) <-
<|> (w ^? input . mouseContext . mcoCombCombine) (w ^? input . mouseContext . mcoCombSelect)
<|> (w ^? input . mouseContext . mcoCombCombine)
sss <- w ^? hud . hudElement . subInventory . ciSections sss <- w ^? hud . hudElement . subInventory . ciSections
let idp = secondColumnParams let idp = secondColumnParams
return . translateScreenPos cfig (idp ^. ldpPos) return . translateScreenPos cfig (idp ^. ldpPos)
@@ -135,23 +131,27 @@ drawDragSelected :: Configuration -> World -> Maybe Picture
drawDragSelected cfig w = do drawDragSelected cfig w = do
ys <- w ^? hud . hudElement . diSelectionExtra ys <- w ^? hud . hudElement . diSelectionExtra
guard $ not (IS.null ys) guard $ not (IS.null ys)
(i,_) <- w ^? hud . hudElement . diSelection . _Just (i, _) <- w ^? hud . hudElement . diSelection . _Just
sss <- w ^? hud . hudElement . diSections sss <- w ^? hud . hudElement . diSections
let idp = invDisplayParams w let idp = invDisplayParams w
let f x = (selSecDrawCursorAt 15 idp BackdropCursor sss (i, x) <>) let f x = (selSecDrawCursorAt 15 idp BackdropCursor sss (i, x) <>)
return . translateScreenPos cfig (invDisplayParams w ^. ldpPos) return . translateScreenPos cfig (invDisplayParams w ^. ldpPos)
. color (withAlpha 0.2 white) . IS.foldr f mempty $ ys . color (withAlpha 0.2 white)
. IS.foldr f mempty
$ ys
drawDragSelect :: Configuration -> World -> Maybe Picture drawDragSelect :: Configuration -> World -> Maybe Picture
drawDragSelect cfig w = do drawDragSelect cfig w = do
OverInvDragSelect (i,j) mselend <- w ^? input . mouseContext OverInvDragSelect (i, j) mselend <- w ^? input . mouseContext
(a,b) <- mselend (a, b) <- mselend
guard $ i == a guard $ i == a
sss <- w ^? hud . hudElement . diSections sss <- w ^? hud . hudElement . diSections
let idp = invDisplayParams w let idp = invDisplayParams w
let f x = selSecDrawCursorAt 15 idp BackdropCursor sss (i, x) let f x = selSecDrawCursorAt 15 idp BackdropCursor sss (i, x)
return . translateScreenPos cfig (invDisplayParams w ^. ldpPos) return . translateScreenPos cfig (invDisplayParams w ^. ldpPos)
. color (withAlpha 0.2 white) . foldMap f $ [min j b .. max j b] . color (withAlpha 0.2 white)
. foldMap f
$ [min j b .. max j b]
drawSubInventory :: SubInventory -> Configuration -> World -> Picture drawSubInventory :: SubInventory -> Configuration -> World -> Picture
drawSubInventory subinv cfig w = case subinv of drawSubInventory subinv cfig w = case subinv of
@@ -181,14 +181,15 @@ drawExamineInventory cfig w =
<> drawSelectionList <> drawSelectionList
secondColumnParams secondColumnParams
cfig cfig
( map f ( map
( makeParagraph 55 $ f
yourAugmentedItem ( makeParagraph 55 $
itemInfo yourAugmentedItem
(yourInfo (you w)) itemInfo
(closeObjectInfo (crNumFreeSlots (you w))) (yourInfo (you w))
w (closeObjectInfo (crNumFreeSlots (you w)))
) w
)
) )
where where
f str = f str =
@@ -216,7 +217,7 @@ floorItemPickupInfo n itm
yourAugmentedItem :: (Item -> a) -> a -> (Either FloorItem Button -> a) -> World -> a yourAugmentedItem :: (Item -> a) -> a -> (Either FloorItem Button -> a) -> World -> a
yourAugmentedItem f x g w = case you w ^? crManipulation . manObject of yourAugmentedItem f x g w = case you w ^? crManipulation . manObject of
Just (SelectedItem i _ _) -> f $ yourInv w ^?! ix i Just (SelectedItem i _ _) -> f $ yourInv w ^?! ix i
Just (SelCloseObject i) -> g $ w ^?! hud . closeObjects . ix i Just (SelCloseObject i) -> g . Left $ w ^?! hud . closeItems . ix i
_ -> x _ -> x
drawRBOptions :: Configuration -> World -> Picture drawRBOptions :: Configuration -> World -> Picture
@@ -323,7 +324,7 @@ combineInventoryExtra sss msel cfig w = fromMaybe mempty $ do
let col = _siColor si let col = _siColor si
lnks <- si ^? siPayload . ciInvIDs lnks <- si ^? siPayload . ciInvIDs
return (lnkMidPosInvSelsCol cfig w j col lnks) return (lnkMidPosInvSelsCol cfig w j col lnks)
<> foldMap invcursor lnks <> foldMap invcursor lnks
where where
invcursor i = do invcursor i = do
sss' <- w ^? hud . hudElement . diSections sss' <- w ^? hud . hudElement . diSections
@@ -344,7 +345,7 @@ drawTerminalDisplay tid cfig w = fromMaybe mempty $ do
invHead cfig (_tmTitle tm ++ ":T" ++ show tid) invHead cfig (_tmTitle tm ++ ":T" ++ show tid)
<> drawSelectionList secondColumnParams cfig (thesellist tm) <> drawSelectionList secondColumnParams cfig (thesellist tm)
<> color (withAlpha 0.5 green) (drawSelectionListBackground secondColumnParams cfig 15) <> color (withAlpha 0.5 green) (drawSelectionListBackground secondColumnParams cfig 15)
-- when changing the 15, change isOverTerminalScreen -- when changing the 15, change isOverTerminalScreen
<> color (dark $ _tmExternalColor tm) (drawTitleBackground cfig) <> color (dark $ _tmExternalColor tm) (drawTitleBackground cfig)
where where
toselitm (str, col) = SelectionItem [str] 1 True col 0 () toselitm (str, col) = SelectionItem [str] 1 True col 0 ()
@@ -361,7 +362,8 @@ drawTerminalDisplay tid cfig w = fromMaybe mempty $ do
displayInputText tm s displayInputText tm s
| _tmStatus tm == TerminalReady = partcommand tm ++ getPromptTM (tm ^. tmType) ++ s | _tmStatus tm == TerminalReady = partcommand tm ++ getPromptTM (tm ^. tmType) ++ s
| otherwise = "" | otherwise = ""
-- | hasfoc = clockCycle 10 (V.fromList [[cFilledRect] , "."]) w
-- | hasfoc = clockCycle 10 (V.fromList [[cFilledRect] , "."]) w
lnkMidPosInvSelsCol :: Configuration -> World -> Int -> Color -> [Int] -> Picture lnkMidPosInvSelsCol :: Configuration -> World -> Int -> Color -> [Int] -> Picture
lnkMidPosInvSelsCol cfig w i col = fromMaybe mempty . foldMap f lnkMidPosInvSelsCol cfig w i col = fromMaybe mempty . foldMap f
+1 -1
View File
@@ -26,7 +26,7 @@ drawSelectionSections sss ldp cfig =
(_ldpScale ldp) (_ldpScale ldp)
0 0
(foldMap (foldMap
(\ss -> fmap (translate (100*fromIntegral (_ssIndent ss)) 0) $ _ssShownItems ss) sss) (\ss -> translate (100*fromIntegral (_ssIndent ss)) 0 <$> _ssShownItems ss) sss)
drawSSCursor :: drawSSCursor ::
IM.IntMap (SelectionSection a) -> IM.IntMap (SelectionSection a) ->
+1 -1
View File
@@ -453,7 +453,7 @@ pauseGame u = u & uvScreenLayers .~ [pauseMenu u]
spaceAction :: World -> World spaceAction :: World -> World
spaceAction w = case w ^. hud . hudElement of spaceAction w = case w ^. hud . hudElement of
DisplayCarte -> w & hud . carteCenter .~ theLoc DisplayCarte -> w & hud . carteCenter .~ theLoc
DisplayInventory{_subInventory = NoSubInventory{}} -> case selectedCloseObject w of DisplayInventory{_subInventory = NoSubInventory{}} -> case Left <$> selectedCloseItem w of
Just (Left flit) -> Just (Left flit) ->
pickUpItem 0 flit w pickUpItem 0 flit w
& worldEventFlags . at InventoryChange ?~ () & worldEventFlags . at InventoryChange ?~ ()
+61 -61
View File
@@ -2324,7 +2324,8 @@ _cldtUp src/Dodge/Data/DoubleTree.hs 46;" f
_cldtUp src/Dodge/Data/DoubleTree.hs 54;" f _cldtUp src/Dodge/Data/DoubleTree.hs 54;" f
_clickPos src/Dodge/Data/Input.hs 46;" f _clickPos src/Dodge/Data/Input.hs 46;" f
_clickWorldPos src/Dodge/Data/Input.hs 48;" f _clickWorldPos src/Dodge/Data/Input.hs 48;" f
_closeObjects src/Dodge/Data/HUD.hs 53;" f _closeInterfaces src/Dodge/Data/HUD.hs 54;" f
_closeItems src/Dodge/Data/HUD.hs 53;" f
_cloudEBO src/Data/Preload/Render.hs 49;" f _cloudEBO src/Data/Preload/Render.hs 49;" f
_cloudShader src/Data/Preload/Render.hs 48;" f _cloudShader src/Data/Preload/Render.hs 48;" f
_cloudVBO src/Data/Preload/Render.hs 47;" f _cloudVBO src/Data/Preload/Render.hs 47;" f
@@ -3432,7 +3433,7 @@ attachOnward' src/Dodge/Tree/Compose.hs 98;" f
attachTree src/Dodge/Tree/Compose.hs 38;" f attachTree src/Dodge/Tree/Compose.hs 38;" f
attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 66;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 66;" f
attribSize src/Shader/Compile.hs 306;" f attribSize src/Shader/Compile.hs 306;" f
augInvDirectSelect src/Dodge/Inventory.hs 276;" f augInvDirectSelect src/Dodge/Inventory.hs 277;" f
augmentedHUD src/Dodge/Item/Scope.hs 47;" f augmentedHUD src/Dodge/Item/Scope.hs 47;" f
autoAmr src/Dodge/Item/Held/Rod.hs 51;" f autoAmr src/Dodge/Item/Held/Rod.hs 51;" f
autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 362;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 362;" f
@@ -3569,9 +3570,9 @@ centroidNum src/Geometry/Polygon.hs 133;" f
chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f
chainLinkOrientation src/Dodge/Creature/State.hs 183;" f chainLinkOrientation src/Dodge/Creature/State.hs 183;" f
chainPairs src/Geometry.hs 363;" f chainPairs src/Geometry.hs 363;" f
changeSwapClose src/Dodge/Inventory.hs 168;" f changeSwapClose src/Dodge/Inventory.hs 166;" f
changeSwapSel src/Dodge/Inventory.hs 160;" f changeSwapSel src/Dodge/Inventory.hs 158;" f
changeSwapWith src/Dodge/Inventory.hs 270;" f changeSwapWith src/Dodge/Inventory.hs 271;" f
charToTuple src/Picture/Base.hs 317;" f charToTuple src/Picture/Base.hs 317;" f
charToTupleGrad src/Picture/Text.hs 18;" f charToTupleGrad src/Picture/Text.hs 18;" f
chargeIfEquipped src/Dodge/ItEffect.hs 54;" f chargeIfEquipped src/Dodge/ItEffect.hs 54;" f
@@ -3596,7 +3597,7 @@ checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f
checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f
checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f
chemFuelPouch src/Dodge/Item/Ammo.hs 110;" f chemFuelPouch src/Dodge/Item/Ammo.hs 110;" f
chooseCursorBorders src/Dodge/Render/List.hs 160;" f chooseCursorBorders src/Dodge/Render/List.hs 161;" f
chooseEquipmentPosition src/Dodge/Inventory/RBList.hs 36;" f chooseEquipmentPosition src/Dodge/Inventory/RBList.hs 36;" f
chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 39;" f chooseFootSound src/Dodge/Creature/State/WalkCycle.hs 39;" f
chooseFreeSite src/Dodge/Inventory/RBList.hs 42;" f chooseFreeSite src/Dodge/Inventory/RBList.hs 42;" f
@@ -3630,11 +3631,11 @@ clickGetCreature src/Dodge/Debug.hs 83;" f
clipV src/Geometry/Vector.hs 47;" f clipV src/Geometry/Vector.hs 47;" f
clipZoom src/Dodge/Update/Camera.hs 215;" f clipZoom src/Dodge/Update/Camera.hs 215;" f
clockCycle src/Dodge/Clock.hs 9;" f clockCycle src/Dodge/Clock.hs 9;" f
closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 54;" f
closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 68;" f
closeObjEq src/Dodge/Inventory/CloseObject.hs 15;" f closeObjEq src/Dodge/Inventory/CloseObject.hs 15;" f
closeObjPos src/Dodge/Inventory/CloseObject.hs 10;" f closeObjPos src/Dodge/Inventory/CloseObject.hs 10;" f
closeObjectInfo src/Dodge/Render/HUD.hs 204;" f closeObjectInfo src/Dodge/Render/HUD.hs 205;" f
closeObjectToSelectionItem src/Dodge/Inventory/SelectionList.hs 54;" f
closeObjectToTextPictures src/Dodge/Inventory/SelectionList.hs 68;" f
closestCreatureID src/Dodge/Debug.hs 92;" f closestCreatureID src/Dodge/Debug.hs 92;" f
closestPointOnLine src/Geometry/Intersect.hs 251;" f closestPointOnLine src/Geometry/Intersect.hs 251;" f
closestPointOnLineParam src/Geometry/Intersect.hs 267;" f closestPointOnLineParam src/Geometry/Intersect.hs 267;" f
@@ -3668,7 +3669,7 @@ combinationsOf src/Multiset.hs 46;" f
combinationsTrie src/Dodge/Combine.hs 41;" f combinationsTrie src/Dodge/Combine.hs 41;" f
combineAwareness src/Dodge/Creature/Perception.hs 109;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f
combineFloors src/Dodge/Room/Procedural.hs 172;" f combineFloors src/Dodge/Room/Procedural.hs 172;" f
combineInventoryExtra src/Dodge/Render/HUD.hs 314;" f combineInventoryExtra src/Dodge/Render/HUD.hs 315;" f
combineItemListYouX src/Dodge/Combine.hs 33;" f combineItemListYouX src/Dodge/Combine.hs 33;" f
combineList src/Dodge/Combine.hs 20;" f combineList src/Dodge/Combine.hs 20;" f
combineRooms src/Dodge/Room/Procedural.hs 152;" f combineRooms src/Dodge/Room/Procedural.hs 152;" f
@@ -3801,7 +3802,7 @@ cylinderIndices src/Shader/Poke.hs 374;" f
cylinderOnSeg src/Geometry.hs 125;" f cylinderOnSeg src/Geometry.hs 125;" f
cylinderPoly src/Shape.hs 86;" f cylinderPoly src/Shape.hs 86;" f
cylinderRoundIndices src/Shader/Poke.hs 381;" f cylinderRoundIndices src/Shader/Poke.hs 381;" f
dShadCol src/Dodge/Render/List.hs 219;" f dShadCol src/Dodge/Render/List.hs 220;" f
damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f damThingHitWith src/Dodge/WorldEvent/Damage.hs 10;" f
damToExpBarrel src/Dodge/Barreloid.hs 57;" f damToExpBarrel src/Dodge/Barreloid.hs 57;" f
damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f damageBlocksBy src/Dodge/Wall/Damage.hs 36;" f
@@ -3890,7 +3891,7 @@ defaultCreatureTargeting src/Dodge/Default/Creature.hs 63;" f
defaultCrystalWall src/Dodge/Default/Wall.hs 40;" f defaultCrystalWall src/Dodge/Default/Wall.hs 40;" f
defaultDirtBlock src/Dodge/Default/Block.hs 19;" f defaultDirtBlock src/Dodge/Default/Block.hs 19;" f
defaultDirtWall src/Dodge/Default/Wall.hs 61;" f defaultDirtWall src/Dodge/Default/Wall.hs 61;" f
defaultDisplayInventory src/Dodge/Default/World.hs 162;" f defaultDisplayInventory src/Dodge/Default/World.hs 163;" f
defaultDoor src/Dodge/Default/Door.hs 29;" f defaultDoor src/Dodge/Default/Door.hs 29;" f
defaultDoorWall src/Dodge/Default/Wall.hs 32;" f defaultDoorWall src/Dodge/Default/Wall.hs 32;" f
defaultDrawButton src/Dodge/Button/Draw.hs 28;" f defaultDrawButton src/Dodge/Button/Draw.hs 28;" f
@@ -3946,7 +3947,7 @@ denormalEdges src/Polyhedra.hs 136;" f
destroyAt src/Dodge/Bullet.hs 201;" f destroyAt src/Dodge/Bullet.hs 201;" f
destroyBlock src/Dodge/Block.hs 56;" f destroyBlock src/Dodge/Block.hs 56;" f
destroyDoor src/Dodge/Block.hs 85;" f destroyDoor src/Dodge/Block.hs 85;" f
destroyInvItem src/Dodge/Inventory.hs 52;" f destroyInvItem src/Dodge/Inventory.hs 51;" f
destroyLS src/Dodge/LightSource.hs 91;" f destroyLS src/Dodge/LightSource.hs 91;" f
destroyLSFlashAt src/Dodge/LightSource.hs 101;" f destroyLSFlashAt src/Dodge/LightSource.hs 101;" f
destroyMachine src/Dodge/Machine/Destroy.hs 12;" f destroyMachine src/Dodge/Machine/Destroy.hs 12;" f
@@ -3976,7 +3977,8 @@ disconnectTerminal src/Dodge/Terminal.hs 217;" f
displayConfig src/Dodge/Menu.hs 196;" f displayConfig src/Dodge/Menu.hs 196;" f
displayControls src/Dodge/Menu.hs 206;" f displayControls src/Dodge/Menu.hs 206;" f
displayFrameTicks src/Dodge/Render/Picture.hs 39;" f displayFrameTicks src/Dodge/Render/Picture.hs 39;" f
displayFreeSlots src/Dodge/DisplayInventory.hs 202;" f displayFreeSlots src/Dodge/DisplayInventory.hs 207;" f
displayIndents src/Dodge/DisplayInventory.hs 120;" f
displaySectionsSizes src/Dodge/DisplayInventory.hs 115;" f displaySectionsSizes src/Dodge/DisplayInventory.hs 115;" f
displayTerminalLineString src/Dodge/Update.hs 422;" f displayTerminalLineString src/Dodge/Update.hs 422;" f
dist src/Geometry/Vector.hs 179;" f dist src/Geometry/Vector.hs 179;" f
@@ -4041,7 +4043,7 @@ doRoomOutPlacements src/Dodge/Layout.hs 107;" f
doRoomPlacements src/Dodge/Layout.hs 122;" f doRoomPlacements src/Dodge/Layout.hs 122;" f
doRoomShift src/Dodge/Room/Link.hs 33;" f doRoomShift src/Dodge/Room/Link.hs 33;" f
doScopeZoom src/Dodge/Update/Camera.hs 141;" f doScopeZoom src/Dodge/Update/Camera.hs 141;" f
doSectionSize src/Dodge/DisplayInventory.hs 224;" f doSectionSize src/Dodge/DisplayInventory.hs 229;" f
doSideEffects appDodge/Main.hs 118;" f doSideEffects appDodge/Main.hs 118;" f
doStep src/Dodge/ArcStep.hs 9;" f doStep src/Dodge/ArcStep.hs 9;" f
doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 164;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 164;" f
@@ -4106,9 +4108,9 @@ drawDoubleLampCover src/Dodge/Prop/Draw.hs 81;" f
drawDrag src/Dodge/Render/Picture.hs 164;" f drawDrag src/Dodge/Render/Picture.hs 164;" f
drawDragDrop src/Dodge/Render/Picture.hs 175;" f drawDragDrop src/Dodge/Render/Picture.hs 175;" f
drawDragPickup src/Dodge/Render/Picture.hs 184;" f drawDragPickup src/Dodge/Render/Picture.hs 184;" f
drawDragSelect src/Dodge/Render/HUD.hs 145;" f drawDragSelect src/Dodge/Render/HUD.hs 143;" f
drawDragSelect src/Dodge/Render/Picture.hs 161;" f drawDragSelect src/Dodge/Render/Picture.hs 161;" f
drawDragSelected src/Dodge/Render/HUD.hs 134;" f drawDragSelected src/Dodge/Render/HUD.hs 130;" f
drawEmptySet src/Dodge/Render/Picture.hs 112;" f drawEmptySet src/Dodge/Render/Picture.hs 112;" f
drawEnergyBall src/Dodge/EnergyBall/Draw.hs 8;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 8;" f
drawEquipment src/Dodge/Creature/Picture.hs 140;" f drawEquipment src/Dodge/Creature/Picture.hs 140;" f
@@ -4121,19 +4123,18 @@ drawFooterText src/Dodge/Render/MenuScreen.hs 74;" f
drawForceField src/Dodge/Wall/Draw.hs 11;" f drawForceField src/Dodge/Wall/Draw.hs 11;" f
drawGapPlus src/Dodge/Render/Picture.hs 224;" f drawGapPlus src/Dodge/Render/Picture.hs 224;" f
drawGib src/Dodge/Prop/Draw.hs 28;" f drawGib src/Dodge/Prop/Draw.hs 28;" f
drawHP src/Dodge/Render/HUD.hs 54;" f
drawHUD src/Dodge/Render/HUD.hs 46;" f drawHUD src/Dodge/Render/HUD.hs 46;" f
drawInputMenu src/Dodge/Render/MenuScreen.hs 21;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 21;" f
drawInspectWall src/Dodge/Debug/Picture.hs 209;" f drawInspectWall src/Dodge/Debug/Picture.hs 209;" f
drawInspectWalls src/Dodge/Debug/Picture.hs 197;" f drawInspectWalls src/Dodge/Debug/Picture.hs 197;" f
drawInventory src/Dodge/Render/HUD.hs 63;" f drawInventory src/Dodge/Render/HUD.hs 53;" f
drawLabCrossCol src/Dodge/Render/Label.hs 8;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f
drawLampCover src/Dodge/Prop/Draw.hs 44;" f drawLampCover src/Dodge/Prop/Draw.hs 44;" f
drawLaser src/Dodge/Laser/Draw.hs 6;" f drawLaser src/Dodge/Laser/Draw.hs 6;" f
drawLightSource src/Dodge/LightSource/Draw.hs 7;" f drawLightSource src/Dodge/LightSource/Draw.hs 7;" f
drawLinearShockwave src/Dodge/LinearShockwave/Draw.hs 10;" f drawLinearShockwave src/Dodge/LinearShockwave/Draw.hs 10;" f
drawList src/Dodge/Render/List.hs 213;" f drawList src/Dodge/Render/List.hs 214;" f
drawListElement src/Dodge/Render/List.hs 191;" f drawListElement src/Dodge/Render/List.hs 192;" f
drawListYgapScaleYoff src/Dodge/Render/List.hs 99;" f drawListYgapScaleYoff src/Dodge/Render/List.hs 99;" f
drawListYoff src/Dodge/Render/List.hs 96;" f drawListYoff src/Dodge/Render/List.hs 96;" f
drawMachine src/Dodge/Machine/Draw.hs 17;" f drawMachine src/Dodge/Machine/Draw.hs 17;" f
@@ -4143,7 +4144,7 @@ drawMenuCursor src/Dodge/Render/Picture.hs 145;" f
drawMenuOrHUD src/Dodge/Render/Picture.hs 57;" f drawMenuOrHUD src/Dodge/Render/Picture.hs 57;" f
drawMenuScreen src/Dodge/Render/MenuScreen.hs 15;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 15;" f
drawMouseCursor src/Dodge/Render/Picture.hs 73;" f drawMouseCursor src/Dodge/Render/Picture.hs 73;" f
drawMouseOver src/Dodge/Render/HUD.hs 111;" f drawMouseOver src/Dodge/Render/HUD.hs 102;" f
drawMousePosition src/Dodge/Debug/Picture.hs 319;" f drawMousePosition src/Dodge/Debug/Picture.hs 319;" f
drawMovingShape src/Dodge/Prop/Draw.hs 67;" f drawMovingShape src/Dodge/Prop/Draw.hs 67;" f
drawMovingShapeCol src/Dodge/Prop/Draw.hs 73;" f drawMovingShapeCol src/Dodge/Prop/Draw.hs 73;" f
@@ -4157,13 +4158,13 @@ drawPointLabel src/Dodge/Render/Label.hs 13;" f
drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f
drawProp src/Dodge/Prop/Draw.hs 15;" f drawProp src/Dodge/Prop/Draw.hs 15;" f
drawProp' src/Dodge/Prop/Draw.hs 12;" f drawProp' src/Dodge/Prop/Draw.hs 12;" f
drawRBOptions src/Dodge/Render/HUD.hs 222;" f drawRBOptions src/Dodge/Render/HUD.hs 223;" f
drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f
drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f
drawReturn src/Dodge/Render/Picture.hs 118;" f drawReturn src/Dodge/Render/Picture.hs 118;" f
drawRootCursor src/Dodge/Render/HUD.hs 78;" f drawRootCursor src/Dodge/Render/HUD.hs 69;" f
drawSSCursor src/Dodge/SelectionSections/Draw.hs 30;" f drawSSCursor src/Dodge/SelectionSections/Draw.hs 31;" f
drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 41;" f drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 42;" f
drawSelect src/Dodge/Render/Picture.hs 203;" f drawSelect src/Dodge/Render/Picture.hs 203;" f
drawSelectionList src/Dodge/Render/List.hs 35;" f drawSelectionList src/Dodge/Render/List.hs 35;" f
drawSelectionListBackground src/Dodge/Render/List.hs 51;" f drawSelectionListBackground src/Dodge/Render/List.hs 51;" f
@@ -4182,7 +4183,7 @@ drawSwitch src/Dodge/Button/Draw.hs 15;" f
drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f
drawTargetLaser src/Dodge/Particle/Draw.hs 6;" f drawTargetLaser src/Dodge/Particle/Draw.hs 6;" f
drawTargeting src/Dodge/Targeting/Draw.hs 13;" f drawTargeting src/Dodge/Targeting/Draw.hs 13;" f
drawTerminalDisplay src/Dodge/Render/HUD.hs 340;" f drawTerminalDisplay src/Dodge/Render/HUD.hs 341;" f
drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f
drawText src/Picture/Base.hs 220;" f drawText src/Picture/Base.hs 220;" f
drawTitle src/Dodge/Render/MenuScreen.hs 57;" f drawTitle src/Dodge/Render/MenuScreen.hs 57;" f
@@ -4227,10 +4228,10 @@ encircle src/Dodge/Creature/Boid.hs 115;" f
encircleCloseP src/Dodge/Creature/Boid.hs 35;" f encircleCloseP src/Dodge/Creature/Boid.hs 35;" f
encircleDistP src/Dodge/Creature/Boid.hs 21;" f encircleDistP src/Dodge/Creature/Boid.hs 21;" f
encircleP src/Dodge/Creature/Boid.hs 27;" f encircleP src/Dodge/Creature/Boid.hs 27;" f
enterCombineInv src/Dodge/DisplayInventory.hs 338;" f enterCombineInv src/Dodge/DisplayInventory.hs 343;" f
eqConstr src/SameConstr.hs 17;" f eqConstr src/SameConstr.hs 17;" f
eqPosText src/Dodge/Equipment/Text.hs 6;" f eqPosText src/Dodge/Equipment/Text.hs 6;" f
equipAllocString src/Dodge/Render/HUD.hs 280;" f equipAllocString src/Dodge/Render/HUD.hs 281;" f
equipInfo src/Dodge/Item/Info.hs 103;" f equipInfo src/Dodge/Item/Info.hs 103;" f
equipItemSPic src/Dodge/Item/Draw/SPic.hs 65;" f equipItemSPic src/Dodge/Item/Draw/SPic.hs 65;" f
equipPosition src/Dodge/Item/Draw.hs 30;" f equipPosition src/Dodge/Item/Draw.hs 30;" f
@@ -4276,7 +4277,7 @@ fdiv src/ShortShow.hs 27;" f
feet src/Dodge/Creature/Picture.hs 51;" f feet src/Dodge/Creature/Picture.hs 51;" f
ffoldM src/Framebuffer/Update.hs 79;" f ffoldM src/Framebuffer/Update.hs 79;" f
filter3 src/FoldableHelp.hs 76;" f filter3 src/FoldableHelp.hs 76;" f
filterSectionsPair src/Dodge/DisplayInventory.hs 169;" f filterSectionsPair src/Dodge/DisplayInventory.hs 174;" f
findBlips src/Dodge/RadarSweep.hs 44;" f findBlips src/Dodge/RadarSweep.hs 44;" f
findBoundDists src/Dodge/Update/Camera.hs 235;" f findBoundDists src/Dodge/Update/Camera.hs 235;" f
findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f
@@ -4322,7 +4323,7 @@ flockPointTarget src/Dodge/Creature/Boid.hs 199;" f
flockPointTargetR src/Dodge/Creature/Boid.hs 266;" f flockPointTargetR src/Dodge/Creature/Boid.hs 266;" f
flockToPointUsing src/Dodge/Creature/Boid.hs 214;" f flockToPointUsing src/Dodge/Creature/Boid.hs 214;" f
flockToPointUsing' src/Dodge/Creature/Boid.hs 227;" f flockToPointUsing' src/Dodge/Creature/Boid.hs 227;" f
floorItemPickupInfo src/Dodge/Render/HUD.hs 209;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 210;" f
floorItemSPic src/Dodge/Render/ShapePicture.hs 119;" f floorItemSPic src/Dodge/Render/ShapePicture.hs 119;" f
floorWire src/Dodge/Wire.hs 13;" f floorWire src/Dodge/Wire.hs 13;" f
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 412;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 412;" f
@@ -4405,7 +4406,7 @@ getNodePos src/Dodge/Path.hs 31;" f
getPretty src/AesonHelp.hs 7;" f getPretty src/AesonHelp.hs 7;" f
getPrettyShort src/AesonHelp.hs 10;" f getPrettyShort src/AesonHelp.hs 10;" f
getPromptTM src/Dodge/Terminal/Type.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 8;" f
getRootItemBounds src/Dodge/Render/HUD.hs 101;" f getRootItemBounds src/Dodge/Render/HUD.hs 92;" f
getSensor src/Dodge/Terminal.hs 189;" f getSensor src/Dodge/Terminal.hs 189;" f
getSmoothScrollValue src/Dodge/SmoothScroll.hs 17;" f getSmoothScrollValue src/Dodge/SmoothScroll.hs 17;" f
getSplitString src/Dodge/Debug/Terminal.hs 123;" f getSplitString src/Dodge/Debug/Terminal.hs 123;" f
@@ -4588,9 +4589,9 @@ interweave src/Justify.hs 17;" f
intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f
invAdj src/Dodge/Item/Grammar.hs 188;" f invAdj src/Dodge/Item/Grammar.hs 188;" f
invCursorParams src/Dodge/ListDisplayParams.hs 38;" f invCursorParams src/Dodge/ListDisplayParams.hs 38;" f
invDimColor src/Dodge/DisplayInventory.hs 196;" f invDimColor src/Dodge/DisplayInventory.hs 201;" f
invDisplayParams src/Dodge/ListDisplayParams.hs 32;" f invDisplayParams src/Dodge/ListDisplayParams.hs 32;" f
invHead src/Dodge/Render/HUD.hs 377;" f invHead src/Dodge/Render/HUD.hs 379;" f
invLDT src/Dodge/Item/Grammar.hs 171;" f invLDT src/Dodge/Item/Grammar.hs 171;" f
invRootMap src/Dodge/Item/Grammar.hs 180;" f invRootMap src/Dodge/Item/Grammar.hs 180;" f
invRootTrees src/Dodge/Item/Grammar.hs 210;" f invRootTrees src/Dodge/Item/Grammar.hs 210;" f
@@ -4601,8 +4602,8 @@ invSideEff src/Dodge/Creature/State.hs 162;" f
invSize src/Dodge/Inventory/CheckSlots.hs 30;" f invSize src/Dodge/Inventory/CheckSlots.hs 30;" f
invTrees src/Dodge/Item/Grammar.hs 198;" f invTrees src/Dodge/Item/Grammar.hs 198;" f
invTrees' src/Dodge/Item/Grammar.hs 202;" f invTrees' src/Dodge/Item/Grammar.hs 202;" f
inventoryExtra src/Dodge/Render/HUD.hs 289;" f inventoryExtra src/Dodge/Render/HUD.hs 290;" f
inventoryExtraH src/Dodge/Render/HUD.hs 300;" f inventoryExtraH src/Dodge/Render/HUD.hs 301;" f
inventoryX src/Dodge/Creature.hs 115;" f inventoryX src/Dodge/Creature.hs 115;" f
inverseSelBoundaryDown src/Dodge/SelectionSections.hs 256;" f inverseSelBoundaryDown src/Dodge/SelectionSections.hs 256;" f
inverseSelBoundaryUp src/Dodge/SelectionSections.hs 243;" f inverseSelBoundaryUp src/Dodge/SelectionSections.hs 243;" f
@@ -4621,7 +4622,6 @@ isAnimate src/Dodge/Creature/Test.hs 136;" f
isCognizant src/Dodge/Creature/Perception.hs 105;" f isCognizant src/Dodge/Creature/Perception.hs 105;" f
isConnected src/Dodge/Inventory.hs 254;" f isConnected src/Dodge/Inventory.hs 254;" f
isElectrical src/Dodge/Data/Damage.hs 42;" f isElectrical src/Dodge/Data/Damage.hs 42;" f
isFilteringInv src/Dodge/Inventory.hs 315;" f
isFrictionless src/Dodge/Creature/State.hs 341;" f isFrictionless src/Dodge/Creature/State.hs 341;" f
isGas src/Dodge/Euse.hs 64;" f isGas src/Dodge/Euse.hs 64;" f
isInLnk src/Dodge/PlacementSpot.hs 160;" f isInLnk src/Dodge/PlacementSpot.hs 160;" f
@@ -4761,15 +4761,15 @@ linksAndPath' src/Dodge/Room/Path.hs 44;" f
linksOnPath src/Dodge/Room/CheckConsistency.hs 7;" f linksOnPath src/Dodge/Room/CheckConsistency.hs 7;" f
listConfig src/Dodge/Menu.hs 199;" f listConfig src/Dodge/Menu.hs 199;" f
listControls src/Dodge/Menu.hs 212;" f listControls src/Dodge/Menu.hs 212;" f
listCursorChooseBorderScale src/Dodge/Render/List.hs 139;" f listCursorChooseBorderScale src/Dodge/Render/List.hs 140;" f
listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 188;" f
listSelectionColorPicture src/Dodge/DisplayInventory.hs 330;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 335;" f
litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f
llleft src/Dodge/Item/Grammar.hs 107;" f llleft src/Dodge/Item/Grammar.hs 107;" f
llright src/Dodge/Item/Grammar.hs 114;" f llright src/Dodge/Item/Grammar.hs 114;" f
lmt src/MatrixHelper.hs 43;" f lmt src/MatrixHelper.hs 43;" f
lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f
lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 366;" f lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 368;" f
lnkPosDir src/Dodge/RoomLink.hs 97;" f lnkPosDir src/Dodge/RoomLink.hs 97;" f
loadDodgeConfig src/Dodge/Config/Load.hs 9;" f loadDodgeConfig src/Dodge/Config/Load.hs 9;" f
loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f
@@ -5182,7 +5182,7 @@ placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 89;" f
placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 70;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 70;" f
placeString src/Dodge/Render/MenuScreen.hs 63;" f placeString src/Dodge/Render/MenuScreen.hs 63;" f
placeWallPoly src/Dodge/Placement/PlaceSpot.hs 162;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 162;" f
plainRegex src/Dodge/DisplayInventory.hs 199;" f plainRegex src/Dodge/DisplayInventory.hs 204;" f
plateCraft src/Dodge/Item/Craftable.hs 45;" f plateCraft src/Dodge/Item/Craftable.hs 45;" f
playIfFree src/Sound.hs 136;" f playIfFree src/Sound.hs 136;" f
playPositionalSoundQueue src/Sound.hs 144;" f playPositionalSoundQueue src/Sound.hs 144;" f
@@ -5412,7 +5412,7 @@ refract src/Dodge/Item/Weapon/LaserPath.hs 40;" f
refreshOptionsSelectionList src/Dodge/Menu/Option.hs 39;" f refreshOptionsSelectionList src/Dodge/Menu/Option.hs 39;" f
regexCombs src/Dodge/DisplayInventory.hs 70;" f regexCombs src/Dodge/DisplayInventory.hs 70;" f
regexIn src/Regex.hs 4;" f regexIn src/Regex.hs 4;" f
regexList src/Dodge/DisplayInventory.hs 372;" f regexList src/Dodge/DisplayInventory.hs 377;" f
regexList src/Regex.hs 7;" f regexList src/Regex.hs 7;" f
reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 442;" f reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 442;" f
reloadLevelStart src/Dodge/Save.hs 71;" f reloadLevelStart src/Dodge/Save.hs 71;" f
@@ -5432,7 +5432,7 @@ renderInfoListAt src/Dodge/Render/InfoBox.hs 17;" f
renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f
renderLayer src/Render.hs 233;" f renderLayer src/Render.hs 233;" f
renderLightingNoShadows src/Render.hs 48;" f renderLightingNoShadows src/Render.hs 48;" f
renderListAt src/Dodge/Render/List.hs 196;" f renderListAt src/Dodge/Render/List.hs 197;" f
renderShadows src/Render.hs 117;" f renderShadows src/Render.hs 117;" f
replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 160;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 160;" f
replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f
@@ -5469,7 +5469,7 @@ rightPad src/Padding.hs 22;" f
rightPadNoSquash src/Padding.hs 26;" f rightPadNoSquash src/Padding.hs 26;" f
rlPosDir src/Dodge/RoomLink.hs 94;" f rlPosDir src/Dodge/RoomLink.hs 94;" f
rmInLinks src/Dodge/RoomLink.hs 138;" f rmInLinks src/Dodge/RoomLink.hs 138;" f
rmInvItem src/Dodge/Inventory.hs 65;" f rmInvItem src/Dodge/Inventory.hs 64;" f
rmLinksOfType src/Dodge/RoomLink.hs 135;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f
rmOutLinks src/Dodge/RoomLink.hs 138;" f rmOutLinks src/Dodge/RoomLink.hs 138;" f
roomC src/Dodge/Room/Room.hs 38;" f roomC src/Dodge/Room/Room.hs 38;" f
@@ -5562,8 +5562,8 @@ screenPolygon src/Dodge/Base/Window.hs 17;" f
screenPolygonBord src/Dodge/Base/Window.hs 27;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f
screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenPosAbs src/Dodge/ScreenPos.hs 15;" f
screenToWorldPos src/Dodge/Base/Coordinate.hs 53;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 53;" f
scrollAugInvSel src/Dodge/Inventory.hs 284;" f scrollAugInvSel src/Dodge/Inventory.hs 285;" f
scrollAugNextInSection src/Dodge/Inventory.hs 297;" f scrollAugNextInSection src/Dodge/Inventory.hs 298;" f
scrollCommandStrings src/Dodge/Update/Scroll.hs 135;" f scrollCommandStrings src/Dodge/Update/Scroll.hs 135;" f
scrollCommands src/Dodge/Update/Scroll.hs 132;" f scrollCommands src/Dodge/Update/Scroll.hs 132;" f
scrollDebugInfoInt src/Dodge/Debug.hs 47;" f scrollDebugInfoInt src/Dodge/Debug.hs 47;" f
@@ -5583,21 +5583,21 @@ seagullWhistle1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 372;" f
seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 530;" f seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 530;" f
searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 203;" f searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 203;" f
secondColumnParams src/Dodge/ListDisplayParams.hs 45;" f secondColumnParams src/Dodge/ListDisplayParams.hs 45;" f
sectionsDesiredLines src/Dodge/DisplayInventory.hs 208;" f sectionsDesiredLines src/Dodge/DisplayInventory.hs 213;" f
sectionsSizes src/Dodge/DisplayInventory.hs 213;" f sectionsSizes src/Dodge/DisplayInventory.hs 218;" f
seedStartMenu src/Dodge/Menu.hs 79;" f seedStartMenu src/Dodge/Menu.hs 79;" f
seedStartOptions src/Dodge/Menu.hs 82;" f seedStartOptions src/Dodge/Menu.hs 82;" f
segOnCirc src/Geometry.hs 116;" f segOnCirc src/Geometry.hs 116;" f
selNumPos src/Dodge/Render/HUD.hs 426;" f selNumPos src/Dodge/Render/HUD.hs 428;" f
selNumPosCardinal src/Dodge/Render/HUD.hs 449;" f selNumPosCardinal src/Dodge/Render/HUD.hs 451;" f
selSecDrawCursor src/Dodge/Render/List.hs 129;" f selSecDrawCursor src/Dodge/Render/List.hs 130;" f
selSecDrawCursorAt src/Dodge/Render/List.hs 108;" f selSecDrawCursorAt src/Dodge/Render/List.hs 108;" f
selSecSelCol src/Dodge/Render/HUD.hs 472;" f selSecSelCol src/Dodge/Render/HUD.hs 476;" f
selSecSelSize src/Dodge/SelectionSections.hs 182;" f selSecSelSize src/Dodge/SelectionSections.hs 182;" f
selSecYint src/Dodge/SelectionSections.hs 191;" f selSecYint src/Dodge/SelectionSections.hs 191;" f
selectCreatureDebugItem src/Dodge/Debug.hs 39;" f selectCreatureDebugItem src/Dodge/Debug.hs 39;" f
selectUse src/Dodge/SelectUse.hs 10;" f selectUse src/Dodge/SelectUse.hs 10;" f
selectedCloseObject src/Dodge/Inventory.hs 308;" f selectedCloseItem src/Dodge/Inventory.hs 309;" f
sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f
sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f
senseDamage src/Dodge/Machine/Update.hs 152;" f senseDamage src/Dodge/Machine/Update.hs 152;" f
@@ -5871,11 +5871,11 @@ stripZ src/Geometry/Vector3D.hs 97;" f
subInvX src/Dodge/ListDisplayParams.hs 50;" f subInvX src/Dodge/ListDisplayParams.hs 50;" f
subMap src/TreeHelp.hs 118;" f subMap src/TreeHelp.hs 118;" f
subZipWith src/Dodge/Placement/Instance/Wall.hs 115;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 115;" f
swapAnyExtraSelection src/Dodge/Inventory.hs 236;" f swapAnyExtraSelection src/Dodge/Inventory.hs 235;" f
swapInOutLinks src/Dodge/RoomLink.hs 80;" f swapInOutLinks src/Dodge/RoomLink.hs 80;" f
swapIndices src/ListHelp.hs 50;" f swapIndices src/ListHelp.hs 50;" f
swapInvItems src/Dodge/Inventory.hs 186;" f swapInvItems src/Dodge/Inventory.hs 184;" f
swapItemWith src/Dodge/Inventory.hs 260;" f swapItemWith src/Dodge/Inventory.hs 261;" f
swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f
swarmUsingCenter src/Dodge/Creature/Boid.hs 171;" f swarmUsingCenter src/Dodge/Creature/Boid.hs 171;" f
switchDoor src/Dodge/Placement/Instance/Door.hs 96;" f switchDoor src/Dodge/Placement/Instance/Door.hs 96;" f
@@ -5974,7 +5974,7 @@ toLabel src/Dodge/Cleat.hs 16;" f
toLasgunUpdate src/Dodge/Item/Grammar.hs 119;" f toLasgunUpdate src/Dodge/Item/Grammar.hs 119;" f
toMultiset src/Multiset.hs 64;" f toMultiset src/Multiset.hs 64;" f
toOnward src/Dodge/Tree/Compose.hs 101;" f toOnward src/Dodge/Tree/Compose.hs 101;" f
toTopLeft src/Dodge/Render/List.hs 223;" f toTopLeft src/Dodge/Render/List.hs 224;" f
toV2 src/Geometry/Data.hs 36;" f toV2 src/Geometry/Data.hs 36;" f
toV3 src/Geometry/Data.hs 38;" f toV3 src/Geometry/Data.hs 38;" f
toV4 src/Geometry/Data.hs 40;" f toV4 src/Geometry/Data.hs 40;" f
@@ -6120,7 +6120,7 @@ updateCreatureGroups src/Dodge/Update.hs 492;" f
updateCreatureSoundPositions src/Dodge/Update.hs 468;" f updateCreatureSoundPositions src/Dodge/Update.hs 468;" f
updateDebugMessageOffset src/Dodge/Update.hs 92;" f updateDebugMessageOffset src/Dodge/Update.hs 92;" f
updateDelayedEvents src/Dodge/Update.hs 771;" f updateDelayedEvents src/Dodge/Update.hs 771;" f
updateDisplaySections src/Dodge/DisplayInventory.hs 120;" f updateDisplaySections src/Dodge/DisplayInventory.hs 127;" f
updateDistortion src/Dodge/Distortion.hs 5;" f updateDistortion src/Dodge/Distortion.hs 5;" f
updateDistortions src/Dodge/Update.hs 513;" f updateDistortions src/Dodge/Update.hs 513;" f
updateEnergyBall src/Dodge/EnergyBall.hs 46;" f updateEnergyBall src/Dodge/EnergyBall.hs 46;" f
@@ -6184,8 +6184,8 @@ updateRootItemID src/Dodge/Inventory/Location.hs 35;" f
updateScopeZoom src/Dodge/Update/Camera.hs 127;" f updateScopeZoom src/Dodge/Update/Camera.hs 127;" f
updateScopeZoom' src/Dodge/Update/Camera.hs 132;" f updateScopeZoom' src/Dodge/Update/Camera.hs 132;" f
updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f
updateSection src/Dodge/DisplayInventory.hs 279;" f updateSection src/Dodge/DisplayInventory.hs 284;" f
updateSectionsPositioning src/Dodge/DisplayInventory.hs 250;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 255;" f
updateSeenWalls src/Dodge/Update.hs 660;" f updateSeenWalls src/Dodge/Update.hs 660;" f
updateShockwave src/Dodge/Shockwave/Update.hs 12;" f updateShockwave src/Dodge/Shockwave/Update.hs 12;" f
updateShockwaves src/Dodge/Update.hs 534;" f updateShockwaves src/Dodge/Update.hs 534;" f
@@ -6363,7 +6363,7 @@ yV2 src/Geometry/Vector.hs 203;" f
yellow src/Color.hs 17;" f yellow src/Color.hs 17;" f
you src/Dodge/Base/You.hs 18;" f you src/Dodge/Base/You.hs 18;" f
youDropItem src/Dodge/Creature/Action.hs 186;" f youDropItem src/Dodge/Creature/Action.hs 186;" f
yourAugmentedItem src/Dodge/Render/HUD.hs 216;" f yourAugmentedItem src/Dodge/Render/HUD.hs 217;" f
yourControl src/Dodge/Creature/YourControl.hs 22;" f yourControl src/Dodge/Creature/YourControl.hs 22;" f
yourDefaultSpeed src/Dodge/Default/Creature.hs 134;" f yourDefaultSpeed src/Dodge/Default/Creature.hs 134;" f
yourDefaultStrideLength src/Dodge/Default/Creature.hs 137;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 137;" f