Continue selection refactor

This commit is contained in:
2024-11-20 16:15:51 +00:00
parent 3ecf137801
commit 1f5d034c5f
9 changed files with 159 additions and 114 deletions
+1 -1
View File
@@ -1 +1 @@
All good (594 modules, at 23:43:04)
All good (594 modules, at 16:13:14)
+2 -1
View File
@@ -5,6 +5,7 @@
module Dodge.Data.HUD where
import Data.IntSet (IntSet)
import Data.IntMap
import Control.Lens
import Dodge.Data.Button
@@ -20,7 +21,7 @@ data HUDElement
, _diSelection :: Maybe (Int, Int)
, _diInvFilter :: Maybe String
, _diCloseFilter :: Maybe String
, _diSelectionExtra :: Int
, _diSelectionExtra :: IntSet
}
| DisplayCarte
+1 -1
View File
@@ -167,7 +167,7 @@ defaultDisplayInventory =
-- }
, _diSections = defaultInvSections
, _diSelection = Just (1,0)
, _diSelectionExtra = 0
, _diSelectionExtra = mempty
, _diInvFilter = mempty
, _diCloseFilter = mempty
}
+11 -2
View File
@@ -17,6 +17,7 @@ module Dodge.Inventory (
isFilteringInv,
) where
import qualified Data.IntSet as IS
import Control.Monad
import Dodge.Item.Grammar
import Dodge.Data.DoubleTree
@@ -88,7 +89,7 @@ rmInvItem cid invid w =
-- & updateCreatureItemLocations cid
pointcid = cWorld . lWorld . creatures . ix cid
updateselectionextra | cid == 0 = hud . hudElement . diSelectionExtra .~ 0
updateselectionextra | cid == 0 = hud . hudElement . diSelectionExtra .~ mempty
| otherwise = id
updateselection
| cid == 0 && cr ^? crManipulation . manObject . imSelectedItem == Just invid =
@@ -194,7 +195,7 @@ swapInvItems f i w = fromMaybe w $ do
_ -> id
return $
w
-- & checkconnect k InventorySound disconnectItemS
& swapAnyExtraSelection i k
& checkConnection InventorySound disconnectItemS i k
& cWorld . lWorld . creatures . ix 0 %~ updatecreature k
& updateselection
@@ -230,6 +231,14 @@ swapInvItems f i w = fromMaybe w $ do
Just epos -> crHotkeys . ix epos .~ b
Nothing -> id
swapAnyExtraSelection :: Int -> Int -> World -> World
swapAnyExtraSelection i k w = fromMaybe w $ do
is <- w ^? hud . hudElement . diSelectionExtra
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 . diSelectionExtra
%~ (f . g . IS.delete i . IS.delete k)
checkConnection :: SoundOrigin -> SoundID -> Int -> Int -> World -> World
checkConnection so s i j w = fromMaybe w $ do
inv <- w ^? cWorld . lWorld . creatures . ix 0 . crInv
+1 -1
View File
@@ -46,7 +46,7 @@ tryPutItemInInv cid flit w = case maybeInvSlot of
& cWorld . lWorld %~ crUpdateItemLocations cid
)
where
updateselectionextra | cid == 0 = hud . hudElement . diSelectionExtra .~ 0
updateselectionextra | cid == 0 = hud . hudElement . diSelectionExtra .~ mempty
| otherwise = id
it = _flIt flit
maybeInvSlot = checkInvSlotsYou it w
+5 -4
View File
@@ -4,6 +4,7 @@ module Dodge.Render.HUD (
drawHUD,
) where
import qualified Data.IntSet as IS
import Control.Applicative
import Control.Lens
import Control.Monad
@@ -146,15 +147,15 @@ drawMouseOver cfig w = concat (invsel <|> combinvsel
drawDragSelected :: Configuration -> World -> Maybe Picture
drawDragSelected cfig w = do
y <- w ^? hud . hudElement . diSelectionExtra
guard $ y > 0
ys <- w ^? hud . hudElement . diSelectionExtra
guard $ not (IS.null ys)
(i,j) <- w ^? hud . hudElement . diSelection . _Just
guard $ i == 0
sss <- w ^? hud . hudElement . diSections
let idp = invDisplayParams w
let f x = selSecDrawCursorAt 15 idp BackdropCursor sss (0, x)
let f x = (selSecDrawCursorAt 15 idp BackdropCursor sss (0, x) <>)
return . translateScreenPos cfig (invDisplayParams w ^. ldpPos)
. color (withAlpha 0.2 white) . foldMap f $ [j .. j + y]
. color (withAlpha 0.2 white) . IS.foldr f mempty $ IS.insert j ys
drawDragSelect :: Configuration -> World -> Maybe Picture
drawDragSelect cfig w = do
+57 -26
View File
@@ -3,7 +3,7 @@ module Dodge.Update.Input.InGame (
updateMouseInGame,
) where
import Data.Foldable
import qualified Data.IntSet as IS
import Dodge.ListDisplayParams
import Control.Applicative
import Control.Monad
@@ -102,9 +102,9 @@ updateMouseHeldInGame cfig w = case w ^. input . mouseContext of
OverInvDrag {} -> fromMaybe w $ do
sss <- w ^? hud . hudElement . diSections
let mpos = w ^. input . mousePos
sel <- w ^? hud . hudElement . diSelection . _Just
(0,i) <- w ^? hud . hudElement . diSelection . _Just
x <- w ^? hud . hudElement . diSelectionExtra
return $ w & shiftInvItems sel x cfig mpos ldp sss
return $ w & dragInvItems (IS.insert i x) cfig mpos ldp sss
_ -> w
where
ldp = invDisplayParams w
@@ -113,8 +113,8 @@ dropSelected :: World -> World
dropSelected w = fromMaybe w $ do
cr <- w ^? cWorld . lWorld . creatures . ix 0
(0,j) <- w ^? hud . hudElement . diSelection . _Just
x <- w ^? hud . hudElement . diSelectionExtra
return $ foldl' (flip $ dropItem cr) w (reverse [j .. j+x])
xs <- w ^? hud . hudElement . diSelectionExtra
return $ IS.foldr (dropItem cr) w (IS.insert j xs)
updateMouseReleaseInGame :: World -> World
updateMouseReleaseInGame w = case w ^. input . mouseContext of
@@ -126,7 +126,7 @@ updateMouseReleaseInGame w = case w ^. input . mouseContext of
OverInvDragSelect ssel (Just esel) ->
w & input . mouseContext .~ MouseInGame
& hud . hudElement . diSelectionExtra
.~ (max (snd ssel) (snd esel) - min (snd ssel) (snd esel))
.~ IS.fromAscList [min (snd ssel) (snd esel) + 1 .. max (snd ssel) (snd esel)]
& augInvDirectSelect (min ssel esel)
_ -> w
@@ -177,44 +177,76 @@ updateMouseClickInGame cfig w = case w ^. input . mouseContext of
startDrag :: (Int, Int) -> World -> World
startDrag (a, b) w = case w ^? hud . hudElement . diInvFilter . _Just of
Just {} -> w & input . mouseContext .~ OverInvFiltDrag
_ -> fromMaybe (augInvDirectSelect (a, b) $ setmichosen 0 w) $ do
_ -> fromMaybe (augInvDirectSelect (a, b) $ setmichosen mempty w) $ do
(i, j) <- w ^? hud . hudElement . diSelection . _Just
x <- w ^? hud . hudElement . diSelectionExtra
guard $ i == a && b >= j && b <= j + x
return $ setmichosen x w
xs <- w ^? hud . hudElement . diSelectionExtra
guard $ i == a && b `IS.member` (IS.insert j xs)
return $ setmichosen xs w
where
setmichosen x =
(input . mouseContext .~ OverInvDrag (Just b))
. (hud . hudElement . diSelectionExtra .~ x)
shiftInvItems ::
(Int, Int) ->
Int ->
dragInvItems ::
IS.IntSet ->
Configuration ->
Point2 ->
ListDisplayParams ->
IM.IntMap (SelectionSection a) ->
World ->
World
shiftInvItems topsel x cfig mpos ldp sss w = case inverseSelBoundaryUp cfig ldp sss mpos of
Just p | p < topsel -> shiftInvItemsUp topsel x w
dragInvItems is cfig mpos ldp sss w
| nonconcurrent = collectInvItems is w
| otherwise = shiftInvItems is cfig mpos ldp sss w
where
nonconcurrent = not $ concurrentIS is
concurrentIS :: IS.IntSet -> Bool
concurrentIS = go . IS.minView
where
go Nothing = True
go (Just (i,is)) = fromMaybe True $ do
(j,js) <- IS.minView is
return $ i + 1 == j && go (Just (j,js))
collectInvItems :: IS.IntSet -> World -> World
collectInvItems is w = fromMaybe w $ do
(j,js) <- IS.minView is
return $ h j js w
where
h j js w' = fromMaybe w' $ do
(k,ks) <- IS.minView js
return . h (j+1) ks $ swapInvItems (\_ _ -> Just (j+1)) k w'
shiftInvItems ::
IS.IntSet ->
Configuration ->
Point2 ->
ListDisplayParams ->
IM.IntMap (SelectionSection a) ->
World ->
World
shiftInvItems xs cfig mpos ldp sss w = case inverseSelBoundaryUp cfig ldp sss mpos of
Just p | p < (0,IS.findMin xs) -> shiftInvItemsUp xs w
_ -> case inverseSelBoundaryDown cfig ldp sss mpos of
Just p | p > (topsel & _2 +~ x) -> shiftInvItemsDown topsel x w
Just p | p > (0,IS.findMax xs) -> shiftInvItemsDown xs w
_ -> w
shiftInvItemsUp :: (Int, Int) -> Int -> World -> World
shiftInvItemsUp (_, i) x w = foldl' f w [i .. i + x]
shiftInvItemsUp :: IS.IntSet -> World -> World
shiftInvItemsUp is w = IS.foldl' f w is
where
f w' i' = swapInvItems g i' w'
g i' m = fst <$> IM.lookupLT i' m
shiftInvItemsDown :: (Int, Int) -> Int -> World -> World
shiftInvItemsDown (_, i) x w = fromMaybe w $ do
shiftInvItemsDown :: IS.IntSet -> World -> World
shiftInvItemsDown is w = fromMaybe w $ do
let i = IS.findMax is
guard . isJust $
w ^? hud . hudElement . diSections . ix 0 . ssItems . ix (i + x + 1)
return $ foldl' f w $ reverse [i .. i + x]
w ^? hud . hudElement . diSections . ix 0 . ssItems . ix i
return $ IS.foldr f w $ is
where
f w' i' = swapInvItems g i' w'
f i' w' = swapInvItems g i' w'
g i' m = fst <$> IM.lookupGT i' m
@@ -430,9 +462,8 @@ toggleMap u = case u ^. uvWorld . hud . hudElement of
{ _subInventory = NoSubInventory --MouseInvNothing
, _diSections = defaultInvSections
, _diSelection = Nothing
, _diSelectionExtra = 0
, -- , _diFilters = IM.fromList [(-1, mempty), (2, mempty)]
_diInvFilter = mempty
, _diSelectionExtra = mempty
, _diInvFilter = mempty
, _diCloseFilter = mempty
}
_ -> u & uvWorld . hud . hudElement .~ DisplayCarte
+2 -2
View File
@@ -33,8 +33,8 @@ updateWheelEvent yi w = case w ^. hud . hudElement of
EquipOptions{} -> w & rbOptions . opSel %~ scrollRBOption yi rbscrollmax
NoRightButtonOptions -> w
| bdown ButtonLeft -> w & wCam . camZoom +~ y
| invKeyDown -> changeSwapSel yi $ w & hud . hudElement . diSelectionExtra .~ 0
| otherwise -> scrollAugInvSel yi $ w & hud . hudElement . diSelectionExtra .~ 0
| invKeyDown -> changeSwapSel yi $ w & hud . hudElement . diSelectionExtra .~ mempty
| otherwise -> scrollAugInvSel yi $ w & hud . hudElement . diSelectionExtra .~ mempty
DisplayInventory{_subInventory = ExamineInventory}
| invKeyDown -> scrollAugInvSel yi w
| otherwise -> w
+79 -76
View File
@@ -336,7 +336,7 @@ Combinations src/Dodge/Combine/Combinations.hs 3;" m
Combine src/Dodge/Combine.hs 2;" m
Combine src/Dodge/Data/Combine.hs 2;" m
Combine src/Dodge/Data/Item/Combine.hs 6;" m
CombineInventory src/Dodge/Data/HUD.hs 38;" C
CombineInventory src/Dodge/Data/HUD.hs 39;" C
CombineInventoryChange src/Dodge/Data/World.hs 34;" C
Common src/Dodge/Zoning/Common.hs 1;" m
Compile src/Shader/Compile.hs 1;" m
@@ -514,10 +514,10 @@ Detector src/Dodge/Data/Item/Combine.hs 168;" t
Dirt src/Dodge/Data/Material.hs 11;" C
DisasterType src/Dodge/Data/Scenario.hs 24;" t
Display src/Dodge/Item/Display.hs 1;" m
DisplayCarte src/Dodge/Data/HUD.hs 25;" C
DisplayInventory src/Dodge/Data/HUD.hs 17;" C
DisplayCarte src/Dodge/Data/HUD.hs 26;" C
DisplayInventory src/Dodge/Data/HUD.hs 18;" C
DisplayInventory src/Dodge/DisplayInventory.hs 2;" m
DisplayTerminal src/Dodge/Data/HUD.hs 44;" C
DisplayTerminal src/Dodge/Data/HUD.hs 45;" C
Distortion src/Dodge/Data/Distortion.hs 12;" t
Distortion src/Dodge/Data/Distortion.hs 6;" m
Distortion src/Dodge/Distortion.hs 1;" m
@@ -663,7 +663,7 @@ Euse src/Dodge/Data/Item/HeldUse.hs 20;" t
Euse src/Dodge/Euse.hs 1;" m
Event src/Dodge/Button/Event.hs 1;" m
Event src/Dodge/Event.hs 14;" m
ExamineInventory src/Dodge/Data/HUD.hs 37;" C
ExamineInventory src/Dodge/Data/HUD.hs 38;" C
Explore src/Dodge/Data/Scenario.hs 4;" C
Explosion src/Dodge/Data/SoundOrigin.hs 37;" C
Explosion src/Dodge/WorldEvent/Explosion.hs 4;" m
@@ -821,10 +821,10 @@ HELD src/Dodge/Data/Item/Combine.hs 16;" C
HELDDETECTOR src/Dodge/Data/Item/Combine.hs 162;" C
HOMINGMODULE src/Dodge/Data/Item/Combine.hs 82;" C
HOSE src/Dodge/Data/Item/Combine.hs 32;" C
HUD src/Dodge/Data/HUD.hs 46;" t
HUD src/Dodge/Data/HUD.hs 47;" t
HUD src/Dodge/Data/HUD.hs 6;" m
HUD src/Dodge/Render/HUD.hs 3;" m
HUDElement src/Dodge/Data/HUD.hs 16;" t
HUDElement src/Dodge/Data/HUD.hs 17;" t
HalfRes src/Dodge/Data/Config.hs 95;" C
Hammer src/Dodge/Data/Hammer.hs 6;" m
Hammer src/Dodge/Hammer.hs 1;" m
@@ -1080,7 +1080,7 @@ Location src/Dodge/Item/Location.hs 1;" m
LocationLDT src/Dodge/Data/DoubleTree.hs 62;" t
Lock src/Dodge/Inventory/Lock.hs 1;" m
LockAndKey src/Dodge/LockAndKey.hs 1;" m
LockedInventory src/Dodge/Data/HUD.hs 43;" C
LockedInventory src/Dodge/Data/HUD.hs 44;" C
LoneWolf src/Dodge/Data/Creature/State.hs 46;" C
LongAI src/Dodge/Data/Creature/Misc.hs 60;" C
LongDoor src/Dodge/Room/LongDoor.hs 2;" m
@@ -1273,7 +1273,7 @@ NoRightButtonOptions src/Dodge/Data/RightButtonOptions.hs 14;" C
NoRoomClipBoundaries src/Dodge/Data/Config.hs 105;" C
NoShadowFidelity src/Shape/Data.hs 25;" C
NoShadows src/Dodge/Data/Config.hs 101;" C
NoSubInventory src/Dodge/Data/HUD.hs 34;" C
NoSubInventory src/Dodge/Data/HUD.hs 35;" C
NoWorldEffect src/Dodge/Data/WorldEffect.hs 24;" C
Noclip src/Dodge/Data/Config.hs 70;" C
NodeMTree src/Dodge/Tree/Compose/Data.hs 9;" C
@@ -1826,7 +1826,7 @@ Strategy src/Dodge/Creature/Strategy.hs 1;" m
StrategyActions src/Dodge/Data/ActionPlan.hs 188;" C
StrictHelp src/StrictHelp.hs 1;" m
StringHelp src/StringHelp.hs 1;" m
SubInventory src/Dodge/Data/HUD.hs 33;" t
SubInventory src/Dodge/Data/HUD.hs 34;" t
Superfluous src/Shape/Data.hs 38;" C
Surface src/Shape/Data.hs 41;" t
Survive src/Dodge/Data/Scenario.hs 5;" C
@@ -2293,17 +2293,17 @@ _camViewDistance src/Dodge/Data/Camera.hs 30;" f
_camViewFrom src/Dodge/Data/Camera.hs 29;" f
_camZoom src/Dodge/Data/Camera.hs 26;" f
_carriage src/Dodge/Data/Creature/Stance.hs 14;" f
_carteCenter src/Dodge/Data/HUD.hs 48;" f
_carteRot src/Dodge/Data/HUD.hs 50;" f
_carteZoom src/Dodge/Data/HUD.hs 49;" f
_carteCenter src/Dodge/Data/HUD.hs 49;" f
_carteRot src/Dodge/Data/HUD.hs 51;" f
_carteZoom src/Dodge/Data/HUD.hs 50;" f
_ceSideEffect src/Dodge/Data/Universe.hs 62;" f
_ceString src/Dodge/Data/Universe.hs 63;" f
_ciFilter src/Dodge/Data/HUD.hs 41;" f
_ciFilter src/Dodge/Data/HUD.hs 42;" f
_ciInfo src/Dodge/Data/Combine.hs 8;" f
_ciInvIDs src/Dodge/Data/Combine.hs 6;" f
_ciItem src/Dodge/Data/Combine.hs 7;" f
_ciSections src/Dodge/Data/HUD.hs 39;" f
_ciSelection src/Dodge/Data/HUD.hs 40;" f
_ciSections src/Dodge/Data/HUD.hs 40;" f
_ciSelection src/Dodge/Data/HUD.hs 41;" f
_cigType src/Dodge/Data/Camera.hs 19;" f
_clAlt src/Dodge/Data/Cloud.hs 23;" f
_clPict src/Dodge/Data/Cloud.hs 21;" f
@@ -2327,7 +2327,7 @@ _cldtUp src/Dodge/Data/DoubleTree.hs 46;" f
_cldtUp src/Dodge/Data/DoubleTree.hs 54;" f
_clickPos src/Dodge/Data/Input.hs 48;" f
_clickWorldPos src/Dodge/Data/Input.hs 50;" f
_closeObjects src/Dodge/Data/HUD.hs 51;" f
_closeObjects src/Dodge/Data/HUD.hs 52;" f
_cloudEBO src/Data/Preload/Render.hs 49;" f
_cloudShader src/Data/Preload/Render.hs 48;" f
_cloudVBO src/Data/Preload/Render.hs 47;" f
@@ -2437,11 +2437,11 @@ _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 131;" f
_dexterity src/Dodge/Data/Creature/Misc.hs 22;" f
_diCloseFilter src/Dodge/Data/HUD.hs 22;" f
_diInvFilter src/Dodge/Data/HUD.hs 21;" f
_diSections src/Dodge/Data/HUD.hs 19;" f
_diSelection src/Dodge/Data/HUD.hs 20;" f
_diSelectionExtra src/Dodge/Data/HUD.hs 23;" f
_diCloseFilter src/Dodge/Data/HUD.hs 23;" f
_diInvFilter src/Dodge/Data/HUD.hs 22;" f
_diSections src/Dodge/Data/HUD.hs 20;" f
_diSelection src/Dodge/Data/HUD.hs 21;" f
_diSelectionExtra src/Dodge/Data/HUD.hs 24;" 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
@@ -2610,7 +2610,7 @@ _heldPos src/Dodge/Data/Input.hs 49;" f
_heldTriggerType src/Dodge/Data/Item/Use.hs 42;" f
_heldWorldPos src/Dodge/Data/Input.hs 51;" f
_hud src/Dodge/Data/World.hs 47;" f
_hudElement src/Dodge/Data/HUD.hs 47;" f
_hudElement src/Dodge/Data/HUD.hs 48;" f
_humanoidAI src/Dodge/Data/Creature/Misc.hs 69;" f
_iaLoaded src/Dodge/Data/Item/Use/Consumption.hs 22;" f
_iaMax src/Dodge/Data/Item/Use/Consumption.hs 21;" f
@@ -3095,7 +3095,7 @@ _ssShownItems src/Dodge/Data/SelectionList.hs 34;" f
_strength src/Dodge/Data/Creature/Misc.hs 21;" f
_strideAmount src/Dodge/Data/Creature/Stance.hs 22;" f
_strideLength src/Dodge/Data/Creature/Stance.hs 16;" f
_subInventory src/Dodge/Data/HUD.hs 18;" f
_subInventory src/Dodge/Data/HUD.hs 19;" 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
@@ -3122,7 +3122,7 @@ _tcEffect src/Dodge/Data/Terminal.hs 120;" f
_tcHelp src/Dodge/Data/Terminal.hs 119;" f
_tcString src/Dodge/Data/Terminal.hs 117;" f
_tempLightSources src/Dodge/Data/LWorld.hs 137;" f
_termID src/Dodge/Data/HUD.hs 44;" f
_termID src/Dodge/Data/HUD.hs 45;" f
_terminals src/Dodge/Data/LWorld.hs 123;" f
_teslaArcs src/Dodge/Data/LWorld.hs 113;" f
_testFloat src/Dodge/Data/World.hs 45;" f
@@ -3348,7 +3348,7 @@ adjustIMZone src/Dodge/Base.hs 77;" f
advanceScrollAmount src/Dodge/Update.hs 399;" f
advanceSmoothScroll src/Dodge/SmoothScroll.hs 29;" f
advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 45;" f
aimDelaySweep src/Dodge/Render/Picture.hs 228;" f
aimDelaySweep src/Dodge/Render/Picture.hs 231;" f
aimStanceInfo src/Dodge/Item/Info.hs 210;" f
aimTurn src/Dodge/Creature/YourControl.hs 143;" f
aimingMuzzleLength src/Dodge/Creature/HandPos.hs 46;" f
@@ -3636,7 +3636,7 @@ clipZoom src/Dodge/Update/Camera.hs 215;" f
clockCycle src/Dodge/Clock.hs 9;" f
closeObjEq src/Dodge/Inventory/CloseObject.hs 15;" f
closeObjPos src/Dodge/Inventory/CloseObject.hs 10;" f
closeObjectInfo src/Dodge/Render/HUD.hs 225;" f
closeObjectInfo src/Dodge/Render/HUD.hs 226;" f
closeObjectToSelectionItem src/Dodge/Inventory/SelectionList.hs 54;" f
closeObjectToTextPictures src/Dodge/Inventory/SelectionList.hs 68;" f
closestCreatureID src/Dodge/Debug.hs 92;" f
@@ -3657,6 +3657,7 @@ colCrsWalls src/Dodge/WallCreatureCollisions.hs 17;" f
colSpark src/Dodge/Spark.hs 47;" f
colSparkRandDir src/Dodge/Spark.hs 101;" f
collectDamageTypes src/Dodge/Damage.hs 32;" f
collectInvItems src/Dodge/Update/Input/InGame.hs 214;" f
collideCircWalls src/Dodge/Base/Collide.hs 149;" f
collidePoint src/Dodge/Base/Collide.hs 48;" f
collidePointTestFilter src/Dodge/Base/Collide.hs 93;" f
@@ -3671,7 +3672,7 @@ combinationsOf src/Multiset.hs 46;" f
combinationsTrie src/Dodge/Combine.hs 41;" f
combineAwareness src/Dodge/Creature/Perception.hs 109;" f
combineFloors src/Dodge/Room/Procedural.hs 172;" f
combineInventoryExtra src/Dodge/Render/HUD.hs 335;" f
combineInventoryExtra src/Dodge/Render/HUD.hs 336;" f
combineItemListYouX src/Dodge/Combine.hs 33;" f
combineList src/Dodge/Combine.hs 20;" f
combineRooms src/Dodge/Room/Procedural.hs 152;" f
@@ -3690,6 +3691,7 @@ composeTree src/Dodge/Tree/Compose.hs 46;" f
computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f
conEffects src/Dodge/Concurrent.hs 13;" f
concBall src/Dodge/WorldEvent/SpawnParticle.hs 27;" f
concurrentIS src/Dodge/Update/Input/InGame.hs 206;" f
connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 532;" f
connectionBlurb src/Dodge/Terminal.hs 102;" f
connectionBlurbLines src/Dodge/Terminal.hs 47;" f
@@ -4042,7 +4044,7 @@ doPropUpdates src/Dodge/Prop/Update.hs 36;" 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 301;" f
doRegexInput src/Dodge/Update/Input/InGame.hs 328;" f
doRoomInPlacements src/Dodge/Layout.hs 97;" f
doRoomOutPlacements src/Dodge/Layout.hs 107;" f
doRoomPlacements src/Dodge/Layout.hs 122;" f
@@ -4095,9 +4097,9 @@ drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f
drawCarte src/Dodge/Render/HUD/Carte.hs 14;" f
drawCircFlare src/Dodge/Flare.hs 25;" f
drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f
drawCombFilter src/Dodge/Render/Picture.hs 209;" f
drawCombFilter src/Dodge/Render/Picture.hs 212;" f
drawCombFilterJump src/Dodge/Render/Picture.hs 153;" f
drawCombineInventory src/Dodge/Render/HUD.hs 185;" f
drawCombineInventory src/Dodge/Render/HUD.hs 186;" f
drawConcurrentMessage src/Dodge/Render/Picture.hs 62;" f
drawCorpse src/Dodge/Corpse/Draw.hs 6;" f
drawCrInfo src/Dodge/Debug/Picture.hs 342;" f
@@ -4111,29 +4113,29 @@ drawDoorPaths src/Dodge/Debug/Picture.hs 217;" f
drawDoubleLampCover src/Dodge/Prop/Draw.hs 81;" f
drawDrag src/Dodge/Render/Picture.hs 160;" f
drawDragDrop src/Dodge/Render/Picture.hs 171;" f
drawDragSelect src/Dodge/Render/HUD.hs 159;" f
drawDragSelect src/Dodge/Render/HUD.hs 160;" f
drawDragSelect src/Dodge/Render/Picture.hs 157;" f
drawDragSelected src/Dodge/Render/HUD.hs 147;" f
drawDragSelected src/Dodge/Render/HUD.hs 148;" f
drawEmptySet src/Dodge/Render/Picture.hs 108;" f
drawEnergyBall src/Dodge/EnergyBall/Draw.hs 8;" f
drawEquipment src/Dodge/Creature/Picture.hs 140;" f
drawExamineInventory src/Dodge/Render/HUD.hs 199;" f
drawExamineInventory src/Dodge/Render/HUD.hs 200;" f
drawFarWallDetect src/Dodge/Debug/Picture.hs 234;" f
drawFiltDrag src/Dodge/Render/Picture.hs 177;" f
drawFiltDragDrop src/Dodge/Render/Picture.hs 187;" f
drawFiltDrag src/Dodge/Render/Picture.hs 180;" f
drawFiltDragDrop src/Dodge/Render/Picture.hs 190;" f
drawFlame src/Dodge/Flame/Draw.hs 7;" f
drawFlamelet src/Dodge/EnergyBall/Draw.hs 23;" f
drawFlare src/Dodge/Flare.hs 12;" f
drawFooterText src/Dodge/Render/MenuScreen.hs 74;" f
drawForceField src/Dodge/Wall/Draw.hs 11;" f
drawGapPlus src/Dodge/Render/Picture.hs 219;" f
drawGapPlus src/Dodge/Render/Picture.hs 222;" f
drawGib src/Dodge/Prop/Draw.hs 28;" f
drawHP src/Dodge/Render/HUD.hs 53;" f
drawHUD src/Dodge/Render/HUD.hs 45;" f
drawHP src/Dodge/Render/HUD.hs 54;" f
drawHUD src/Dodge/Render/HUD.hs 46;" f
drawInputMenu src/Dodge/Render/MenuScreen.hs 21;" f
drawInspectWall src/Dodge/Debug/Picture.hs 209;" f
drawInspectWalls src/Dodge/Debug/Picture.hs 197;" f
drawInventory src/Dodge/Render/HUD.hs 62;" f
drawInventory src/Dodge/Render/HUD.hs 63;" f
drawLabCrossCol src/Dodge/Render/Label.hs 8;" f
drawLampCover src/Dodge/Prop/Draw.hs 44;" f
drawLaser src/Dodge/Laser/Draw.hs 6;" f
@@ -4150,7 +4152,7 @@ drawMenuCursor src/Dodge/Render/Picture.hs 141;" f
drawMenuOrHUD src/Dodge/Render/Picture.hs 57;" f
drawMenuScreen src/Dodge/Render/MenuScreen.hs 15;" f
drawMouseCursor src/Dodge/Render/Picture.hs 73;" f
drawMouseOver src/Dodge/Render/HUD.hs 110;" f
drawMouseOver src/Dodge/Render/HUD.hs 111;" f
drawMousePosition src/Dodge/Debug/Picture.hs 319;" f
drawMovingShape src/Dodge/Prop/Draw.hs 67;" f
drawMovingShapeCol src/Dodge/Prop/Draw.hs 73;" f
@@ -4164,14 +4166,14 @@ drawPointLabel src/Dodge/Render/Label.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 12;" f
drawRBOptions src/Dodge/Render/HUD.hs 243;" f
drawRBOptions src/Dodge/Render/HUD.hs 244;" f
drawRadarSweep src/Dodge/RadarSweep/Draw.hs 7;" f
drawRemoteShell src/Dodge/Projectile/Draw.hs 30;" f
drawReturn src/Dodge/Render/Picture.hs 114;" f
drawRootCursor src/Dodge/Render/HUD.hs 77;" f
drawRootCursor src/Dodge/Render/HUD.hs 78;" f
drawSSCursor src/Dodge/SelectionSections/Draw.hs 30;" f
drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 41;" f
drawSelect src/Dodge/Render/Picture.hs 198;" f
drawSelect src/Dodge/Render/Picture.hs 201;" f
drawSelectionList src/Dodge/Render/List.hs 35;" f
drawSelectionListBackground src/Dodge/Render/List.hs 51;" f
drawSelectionSections src/Dodge/SelectionSections/Draw.hs 17;" f
@@ -4183,13 +4185,13 @@ drawShell src/Dodge/Projectile/Draw.hs 20;" f
drawShockwave src/Dodge/Shockwave/Draw.hs 7;" f
drawSpark src/Dodge/Spark/Draw.hs 6;" f
drawStaticBall src/Dodge/EnergyBall/Draw.hs 14;" f
drawSubInventory src/Dodge/Render/HUD.hs 177;" f
drawSweep src/Dodge/Render/Picture.hs 235;" f
drawSubInventory src/Dodge/Render/HUD.hs 178;" f
drawSweep src/Dodge/Render/Picture.hs 238;" f
drawSwitch src/Dodge/Button/Draw.hs 15;" f
drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f
drawTargetLaser src/Dodge/Particle/Draw.hs 6;" f
drawTargeting src/Dodge/Targeting/Draw.hs 13;" f
drawTerminalDisplay src/Dodge/Render/HUD.hs 372;" f
drawTerminalDisplay src/Dodge/Render/HUD.hs 373;" f
drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f
drawText src/Picture/Base.hs 220;" f
drawTitle src/Dodge/Render/MenuScreen.hs 57;" f
@@ -4238,7 +4240,7 @@ encircleP src/Dodge/Creature/Boid.hs 27;" f
enterCombineInv src/Dodge/DisplayInventory.hs 281;" f
eqConstr src/SameConstr.hs 17;" f
eqPosText src/Dodge/Equipment/Text.hs 6;" f
equipAllocString src/Dodge/Render/HUD.hs 301;" f
equipAllocString src/Dodge/Render/HUD.hs 302;" f
equipInfo src/Dodge/Item/Info.hs 103;" f
equipItemSPic src/Dodge/Item/Draw/SPic.hs 65;" f
equipPosition src/Dodge/Item/Draw.hs 30;" f
@@ -4331,7 +4333,7 @@ flockPointTarget src/Dodge/Creature/Boid.hs 199;" f
flockPointTargetR src/Dodge/Creature/Boid.hs 266;" f
flockToPointUsing src/Dodge/Creature/Boid.hs 214;" f
flockToPointUsing' src/Dodge/Creature/Boid.hs 227;" f
floorItemPickupInfo src/Dodge/Render/HUD.hs 230;" f
floorItemPickupInfo src/Dodge/Render/HUD.hs 231;" f
floorItemSPic src/Dodge/Render/ShapePicture.hs 119;" f
floorWire src/Dodge/Wire.hs 13;" f
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 412;" f
@@ -4414,7 +4416,7 @@ getNodePos src/Dodge/Path.hs 31;" f
getPretty src/AesonHelp.hs 7;" f
getPrettyShort src/AesonHelp.hs 10;" f
getPromptTM src/Dodge/Terminal/Type.hs 8;" f
getRootItemBounds src/Dodge/Render/HUD.hs 100;" f
getRootItemBounds src/Dodge/Render/HUD.hs 101;" f
getSensor src/Dodge/Terminal.hs 189;" f
getSmoothScrollValue src/Dodge/SmoothScroll.hs 17;" f
getSplitString src/Dodge/Debug/Terminal.hs 123;" f
@@ -4599,7 +4601,7 @@ invAdj src/Dodge/Item/Grammar.hs 188;" f
invCursorParams src/Dodge/ListDisplayParams.hs 38;" f
invDimColor src/Dodge/DisplayInventory.hs 191;" f
invDisplayParams src/Dodge/ListDisplayParams.hs 32;" f
invHead src/Dodge/Render/HUD.hs 409;" f
invHead src/Dodge/Render/HUD.hs 410;" f
invLDT src/Dodge/Item/Grammar.hs 171;" f
invRootMap src/Dodge/Item/Grammar.hs 180;" f
invRootTrees src/Dodge/Item/Grammar.hs 210;" f
@@ -4610,8 +4612,8 @@ invSideEff src/Dodge/Creature/State.hs 162;" f
invSize src/Dodge/Inventory/CheckSlots.hs 41;" f
invTrees src/Dodge/Item/Grammar.hs 198;" f
invTrees' src/Dodge/Item/Grammar.hs 202;" f
inventoryExtra src/Dodge/Render/HUD.hs 310;" f
inventoryExtraH src/Dodge/Render/HUD.hs 321;" f
inventoryExtra src/Dodge/Render/HUD.hs 311;" f
inventoryExtraH src/Dodge/Render/HUD.hs 322;" f
inventoryX src/Dodge/Creature.hs 115;" f
inverseSelBoundaryDown src/Dodge/SelectionSections.hs 256;" f
inverseSelBoundaryUp src/Dodge/SelectionSections.hs 243;" f
@@ -4778,7 +4780,7 @@ llleft src/Dodge/Item/Grammar.hs 107;" f
llright src/Dodge/Item/Grammar.hs 114;" f
lmt src/MatrixHelper.hs 43;" f
lnkBothAnd src/Dodge/Room/Procedural.hs 121;" f
lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 398;" f
lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 399;" f
lnkPosDir src/Dodge/RoomLink.hs 97;" f
loadDodgeConfig src/Dodge/Config/Load.hs 9;" f
loadMusic src/Dodge/SoundLogic/LoadSound.hs 21;" f
@@ -4909,7 +4911,7 @@ maybeClearPath src/Dodge/Block.hs 77;" f
maybeClearPaths src/Dodge/Block.hs 74;" f
maybeDestroyBlock src/Dodge/Wall/Damage.hs 26;" f
maybeDestroyDoor src/Dodge/Wall/Damage.hs 31;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 463;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 489;" f
maybeOpenTerminal src/Dodge/Update.hs 123;" f
maybeReadFile src/Dodge/LoadSeed.hs 10;" f
maybeTakeOne src/RandomHelp.hs 111;" f
@@ -5134,7 +5136,7 @@ parseNum src/Dodge/Debug/Terminal.hs 73;" 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 398;" f
pauseGame src/Dodge/Update/Input/InGame.hs 425;" f
pauseMenu src/Dodge/Menu.hs 53;" f
pauseMenuOptions src/Dodge/Menu.hs 58;" f
pauseSound src/Dodge/SoundLogic.hs 41;" f
@@ -5595,11 +5597,11 @@ secondColumnParams src/Dodge/ListDisplayParams.hs 45;" f
seedStartMenu src/Dodge/Menu.hs 79;" f
seedStartOptions src/Dodge/Menu.hs 82;" f
segOnCirc src/Geometry.hs 116;" f
selNumPos src/Dodge/Render/HUD.hs 469;" f
selNumPosCardinal src/Dodge/Render/HUD.hs 492;" f
selNumPos src/Dodge/Render/HUD.hs 470;" f
selNumPosCardinal src/Dodge/Render/HUD.hs 493;" f
selSecDrawCursor src/Dodge/Render/List.hs 129;" f
selSecDrawCursorAt src/Dodge/Render/List.hs 107;" f
selSecSelCol src/Dodge/Render/HUD.hs 515;" f
selSecSelCol src/Dodge/Render/HUD.hs 516;" f
selSecSelSize src/Dodge/SelectionSections.hs 182;" f
selSecYint src/Dodge/SelectionSections.hs 191;" f
selectCreatureDebugItem src/Dodge/Debug.hs 39;" f
@@ -5691,8 +5693,9 @@ shiftDraw src/Dodge/Render/ShapePicture.hs 66;" f
shiftDraw' src/Dodge/Render/ShapePicture.hs 72;" f
shiftInBy src/Dodge/PlacementSpot.hs 236;" f
shiftInvItems src/Dodge/Update/Input/InGame.hs 190;" f
shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 211;" f
shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 205;" f
shiftInvItems' src/Dodge/Update/Input/InGame.hs 217;" f
shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 237;" f
shiftInvItemsUp src/Dodge/Update/Input/InGame.hs 231;" 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
@@ -5791,7 +5794,7 @@ soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f
soundWithStatus src/Dodge/SoundLogic.hs 98;" f
soundWithStatusVolume src/Dodge/SoundLogic.hs 48;" f
southPillarsRoom src/Dodge/Room/LongDoor.hs 85;" f
spaceAction src/Dodge/Update/Input/InGame.hs 401;" f
spaceAction src/Dodge/Update/Input/InGame.hs 428;" f
spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 186;" f
spanColLightI src/Dodge/Placement/Instance/LightSource.hs 179;" f
spanLS src/Dodge/Placement/Instance/LightSource.hs 171;" f
@@ -5987,8 +5990,8 @@ toggleCombineInv src/Dodge/DisplayInventory.hs 31;" f
toggleCommand src/Dodge/Terminal.hs 196;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 79;" f
toggleJust src/MaybeHelp.hs 41;" f
toggleMap src/Dodge/Update/Input/InGame.hs 425;" f
toggleTweakInv src/Dodge/Update/Input/InGame.hs 440;" f
toggleMap src/Dodge/Update/Input/InGame.hs 452;" f
toggleTweakInv src/Dodge/Update/Input/InGame.hs 466;" f
togglesToEffects src/Dodge/Terminal.hs 248;" f
tone440S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 474;" f
tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 444;" f
@@ -6059,7 +6062,7 @@ trunkDepth src/TreeHelp.hs 161;" f
tryAssignHotkey src/Dodge/Creature/YourControl.hs 85;" f
tryAttachBulletBelt src/Dodge/Euse.hs 40;" f
tryChargeBattery src/Dodge/Euse.hs 43;" f
tryCombine src/Dodge/Update/Input/InGame.hs 449;" f
tryCombine src/Dodge/Update/Input/InGame.hs 475;" f
tryGetChannel src/Sound.hs 96;" f
tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 20;" f
tryGetRootItemInvID src/Dodge/Inventory/Location.hs 29;" f
@@ -6105,7 +6108,7 @@ updateAllNodes src/TreeHelp.hs 85;" f
updateArc src/Dodge/Tesla/Arc.hs 86;" f
updateAttachedItems src/Dodge/Creature/State.hs 173;" f
updateAutoRecharge src/Dodge/Creature/State.hs 324;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 336;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 363;" f
updateBarrel src/Dodge/Barreloid.hs 45;" f
updateBarreloid src/Dodge/Barreloid.hs 13;" f
updateBounds src/Dodge/Update/Camera.hs 245;" f
@@ -6128,7 +6131,7 @@ updateDistortion src/Dodge/Distortion.hs 5;" f
updateDistortions src/Dodge/Update.hs 519;" f
updateEnergyBall src/Dodge/EnergyBall.hs 46;" f
updateEnergyBalls src/Dodge/Update.hs 546;" f
updateEnterRegex src/Dodge/Update/Input/InGame.hs 377;" f
updateEnterRegex src/Dodge/Update/Input/InGame.hs 404;" f
updateExpBarrel src/Dodge/Barreloid.hs 19;" f
updateFBOTO src/Framebuffer/Update.hs 97;" f
updateFBOTO3 src/Framebuffer/Update.hs 131;" f
@@ -6136,28 +6139,28 @@ updateFlame src/Dodge/Flame.hs 71;" f
updateFlames src/Dodge/Update.hs 543;" f
updateFlare src/Dodge/Flare.hs 7;" f
updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f
updateFunctionKey src/Dodge/Update/Input/InGame.hs 228;" f
updateFunctionKeys src/Dodge/Update/Input/InGame.hs 221;" f
updateFunctionKey src/Dodge/Update/Input/InGame.hs 255;" f
updateFunctionKeys src/Dodge/Update/Input/InGame.hs 248;" f
updateGusts src/Dodge/Update.hs 697;" f
updateHeldRootItem src/Dodge/Creature/State.hs 167;" f
updateHumanoid src/Dodge/Humanoid.hs 12;" f
updateIMl src/Dodge/Update.hs 488;" f
updateIMl' src/Dodge/Update.hs 493;" f
updateInGameCamera src/Dodge/Update/Camera.hs 70;" f
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 280;" f
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 307;" f
updateInstantBullets src/Dodge/Update.hs 635;" f
updateInv src/Dodge/Creature/State.hs 152;" f
updateInventoryPositioning src/Dodge/DisplayInventory.hs 85;" f
updateItemTargeting src/Dodge/Creature/State.hs 268;" f
updateItemWithOrientation src/Dodge/Creature/State.hs 194;" f
updateKeyInGame src/Dodge/Update/Input/InGame.hs 274;" f
updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 263;" f
updateKeyInGame src/Dodge/Update/Input/InGame.hs 301;" f
updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 290;" f
updateLampoid src/Dodge/Lampoid.hs 12;" f
updateLaser src/Dodge/Laser/Update.hs 13;" f
updateLasers src/Dodge/Update.hs 417;" f
updateLightSources src/Dodge/Update.hs 522;" f
updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 295;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 322;" f
updateMIM src/Dodge/Update.hs 648;" f
updateMachine src/Dodge/Machine/Update.hs 19;" f
updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 133;" f
@@ -6172,8 +6175,8 @@ updatePastWorlds src/Dodge/Update.hs 405;" f
updatePosEvent src/Dodge/PosEvent.hs 11;" f
updatePosEvents src/Dodge/Update.hs 555;" f
updatePreload src/Preload/Update.hs 20;" f
updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 238;" f
updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 241;" f
updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 265;" f
updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 268;" f
updateProjectile src/Dodge/Projectile/Update.hs 23;" f
updateProp src/Dodge/Prop/Update.hs 11;" f
updateRBList src/Dodge/Inventory/RBList.hs 16;" f
@@ -6366,7 +6369,7 @@ yV2 src/Geometry/Vector.hs 203;" f
yellow src/Color.hs 17;" f
you src/Dodge/Base/You.hs 18;" f
youDropItem src/Dodge/Creature/Action.hs 187;" f
yourAugmentedItem src/Dodge/Render/HUD.hs 237;" f
yourAugmentedItem src/Dodge/Render/HUD.hs 238;" f
yourControl src/Dodge/Creature/YourControl.hs 22;" f
yourDefaultSpeed src/Dodge/Default/Creature.hs 134;" f
yourDefaultStrideLength src/Dodge/Default/Creature.hs 137;" f