Work on selections when picking up/droping items

This commit is contained in:
2026-05-14 11:40:58 +01:00
parent 44ecaf409e
commit ab393febcb
7 changed files with 155 additions and 112 deletions
+20 -7
View File
@@ -10,6 +10,9 @@ module Dodge.Creature.Action (
youDropItem,
) where
import qualified IntSetHelp as IS
import Dodge.DisplayInventory
import Dodge.Data.SelectionList
import RandomHelp
import Dodge.WorldEvent.ThingsHit
import Control.Applicative
@@ -174,22 +177,32 @@ performTurnToA cr p
-- why not a cid (Int)?
dropItem :: Creature -> Int -> World -> World
dropItem cr invid w' =
doanyitemdropeffect
dropItem cr invid w =
itEffectOnDrop itm cr
. maybesetdropped
. (hud . diSections . ix 3 . ssSet %~ IS.map (+ 1))
. (hud . diSections . ix 0 . ssSet %~ IS.deleteShift invid)
. maybeshiftseldown
. copyItemToFloor (cr ^. crPos . _xy) itm -- . mayberemoveequip
. rmInvItem (_crID cr) (NInt invid) -- it is important
-- to do this before copying the item to the floor!
. soundStart (CrSound (_crID cr)) (cr ^. crPos . _xy) whiteNoiseFadeOutS Nothing
$ w'
$ w
where
doanyitemdropeffect = itEffectOnDrop itm cr
itm = fromMaybe (error "dropItem cannot find item") $ do
itid <- cr ^? crInv . ix (NInt invid)
w' ^? cWorld . lWorld . items . ix itid
maybeshiftseldown w = fromMaybe w $ do
w ^? cWorld . lWorld . items . ix itid
t = fromMaybe True $ do
s <- w ^? hud . diCloseFilter . _Just
si <- w ^? hud . diSections . ix 0 . ssItems . ix invid
return $ plainRegex s si
maybesetdropped = fromMaybe id $ do
guard $ t && (invid `IS.member` (w ^?! hud . diSections . ix 0 . ssSet))
return $ hud . diSections . ix 3 . ssSet %~ IS.insert 0
maybeshiftseldown = fromMaybe id $ do
guard t
3 <- w ^? hud . diSelection . _Just . slSec
return $ w & hud . diSelection . _Just . slInt +~ 1
return $ hud . diSelection . _Just . slInt +~ 1
-- | Get your creature to drop the item under the cursor.
youDropItem :: World -> World
+1
View File
@@ -8,6 +8,7 @@ module Dodge.DisplayInventory (
updateInventoryPositioning,
updateCombinePositioning,
toggleCombineInv,
plainRegex,
) where
import qualified Data.IntSet as IS
+27 -13
View File
@@ -6,9 +6,9 @@ module Dodge.Inventory.Add (
pickUpItemAt,
) where
import qualified IntSetHelp as IS
import Dodge.Data.SelectionList
import Linear
import qualified Data.IntSet as IS
import Control.Lens
import Control.Monad
import Data.Maybe
@@ -22,8 +22,8 @@ import qualified IntMapHelp as IM
import NewInt
-- this assumes that this item is currently on the floor
tryPutItemInInv :: Int -> Int -> World -> Maybe (NewInt InvInt, World)
tryPutItemInInv cid itid w = do
tryPutItemInInv :: Maybe Int -> Int -> Int -> World -> Maybe (NewInt InvInt, World)
tryPutItemInInv mcipos cid itid w = do
itm <- w ^? cWorld . lWorld . items . ix itid
invid <- checkInvSlotsYou itm w
let itloc = InInv
@@ -42,8 +42,18 @@ tryPutItemInInv cid itid w = do
& cWorld . lWorld . items . ix itid . itLocation .~ itloc
& cWorld . lWorld . floorItems . at itid .~ Nothing
& updateselectionextra invid
& updatecloseitemset
& maybeselect invid
& cWorld . highlightItems . at itid ?~ 20
where
maybeselect invid = fromMaybe id $ do
i <- mcipos
is <- w ^? hud . diSections . ix 3 . ssSet
guard $ i `IS.member` is
return $ hud . diSections . ix 0 . ssSet %~ IS.insert (invid ^. unNInt)
updatecloseitemset = fromMaybe id $ do
i <- mcipos
return $ hud . diSections . ix 3 . ssSet %~ IS.deleteShift i
updateselectionextra i
-- | cid == 0 = (hud . diSelection . _Just . slSet %~ IS.map (f i))
| cid == 0 = (hud . diSections . ix 0 . ssSet %~ IS.map (f i))
@@ -53,28 +63,32 @@ tryPutItemInInv cid itid w = do
| otherwise = i
-- not sure why we have the cid here, this will probably only work for cid == 0
tryPutItemInInvAt :: Int -> Int -> Int -> World -> Maybe World
tryPutItemInInvAt i cid itid w = do
(j, w') <- tryPutItemInInv cid itid w
tryPutItemInInvAt :: Maybe Int -> Int -> Int -> Int -> World -> Maybe World
tryPutItemInInvAt mcipos i cid itid w = do
(j, w') <- tryPutItemInInv mcipos cid itid w
guard (i <= _unNInt j)
return $ foldr f w' [i + 1 .. _unNInt j]
where
f j = swapInvItems (\_ _ -> Just (j -1)) j
createItemYou :: Item -> World -> World
createItemYou itm w = maybe w' snd $ tryPutItemInInv 0 itid w'
createItemYou itm w = maybe w' snd $ tryPutItemInInv Nothing 0 itid w'
where
itid = IM.newKey $ w ^. cWorld . lWorld . items
pos = w ^?! cWorld . lWorld . creatures . ix 0 . crPos . _xy
w' = copyItemToFloor pos (itm & itID .~ NInt itid) w
-- the duplication is annoying...
pickUpItem :: Int -> Int -> World -> World
pickUpItem cid itid w = fromMaybe w $ do
pickUpItem :: Int -> (Int,Int) -> World -> World
pickUpItem cid (i,itid) w = fromMaybe w $ do
p <- w ^? cWorld . lWorld . floorItems . ix itid . flItPos
soundStart (CrSound cid) p pickUpS Nothing . snd <$> tryPutItemInInv cid itid w
soundStart (CrSound cid) p pickUpS Nothing . snd <$> tryPutItemInInv (Just i) cid itid w
pickUpItemAt :: Int -> Int -> Int -> World -> World
pickUpItemAt invid cid itid w = fromMaybe w $ do
pickUpItemAt :: Int -> Int -> (Int,Int) -> World -> World
pickUpItemAt invid cid (i,itid) w = fromMaybe w $ do
p <- w ^? cWorld . lWorld . floorItems . ix itid . flItPos
soundStart (CrSound cid) p pickUpS Nothing <$> tryPutItemInInvAt invid cid itid w
soundStart (CrSound cid) p pickUpS Nothing <$> tryPutItemInInvAt (Just i) invid cid itid w
& _Just . hud . diSections . ix 0 . ssSet %~ IS.map f
where
f j | j >= invid = j +1
| otherwise = j
+5 -1
View File
@@ -5,10 +5,14 @@ import Dodge.Button.Event
import Dodge.Data.World
import Dodge.Inventory.Add
import NewInt
import Data.Maybe
-- assumes that, for picking up, you are selecting the item
interactWithCloseObj :: Either (NewInt ItmInt) Button -> World -> World
interactWithCloseObj e w = worldEventFlags . at InventoryChange ?~ () $ case e of
(Left flit) -> pickUpItem 0 (_unNInt flit) w
(Left flit) -> fromMaybe w $ do
i <- w ^? hud . diSelection . _Just . slInt
return $ pickUpItem 0 (i,_unNInt flit) w
(Right but) -> doButtonEvent (but ^. btEvent) but w
getSelectedCloseObj :: World -> Maybe (Either (NewInt ItmInt) Button)
+7 -13
View File
@@ -154,7 +154,6 @@ tryDropSelected mpos w = do
let xmin = IS.findMin xs
return
. (hud . diSelection ?~ Sel 3 (j - xmin))
. (hud . diSections . ix 3 . ssSet .~ IS.fromDistinctAscList [0 .. IS.size xs - 1])
. foldl' (flip $ dropItem cr) w
. IS.toDescList
$ xs
@@ -181,18 +180,17 @@ tryPickupSelected k mpos w = do
let xmin = IS.findMin xs
joff = sli - xmin
let nfreeslots = crNumFreeSlots (w ^. cWorld . lWorld . items) cr
itmstopickup = mapMaybe g $ IS.toList xs
is = IS.toList xs
itmstopickup = mapMaybe g is
slotsneeded = alaf Sum foldMap itInvHeight itmstopickup
ispickup = map (_unNInt . _itID) itmstopickup
guard $ nfreeslots >= slotsneeded
return $ case mpos of
Just (0, j) -> foldr (pickUpItemAt j 0) w ispickup & newdisel j joff xs
_ -> foldl' (flip $ pickUpItem 0) w ispickup & newdisel (length (cr ^. crInv)) joff xs
Just (0, j) -> foldr (pickUpItemAt j 0) w (zip is ispickup) & newdisel j joff
_ -> foldl' (flip $ pickUpItem 0) w (zip is ispickup) & newdisel (length (cr ^. crInv)) joff
where
newdisel j joff xs =
-- hud . diSelection ?~ Sel 0 (j+joff) (IS.fromDistinctAscList [j .. j + IS.size xs -1])
newdisel j joff =
(hud . diSelection ?~ Sel 0 (j + joff))
. (hud . diSections . ix 0 . ssSet .~ IS.fromDistinctAscList [j .. j + IS.size xs - 1])
g i = do
NInt j <- w ^? hud . closeItems . ix i
w ^? cWorld . lWorld . items . ix j
@@ -549,12 +547,8 @@ updateEnterRegex w = case w ^? hud . subInventory of
| secfocus [2, 3] ->
-- w & hud . diSelection ?~ Sel 2 0 mempty
w
& hud
. diSelection
?~ Sel 2 0
& hud
. diCloseFilter
%~ enterregex
& hud . diSelection ?~ Sel 2 0
& hud . diCloseFilter %~ enterregex
Just CombineInventory{} ->
w
& hud
+16
View File
@@ -0,0 +1,16 @@
module IntSetHelp
(
module Data.IntSet,
deleteShift
)
where
--import qualified Prelude
import Prelude hiding (map)
import Data.IntSet
deleteShift :: Int -> IntSet -> IntSet
deleteShift i x = y <> map (subtract 1) z
where
(y,z) = split i x
+79 -78
View File
@@ -39,7 +39,7 @@ AccessTerminal src/Dodge/Data/WorldEffect.hs 30;" C
Action src/Dodge/Data/ActionPlan.hs 71;" t
ActionPlan src/Dodge/Data/ActionPlan.hs 14;" t
ActionPlan src/Dodge/Data/ActionPlan.hs 17;" C
ActionUpdate src/Dodge/Creature/Action.hs 53;" t
ActionUpdate src/Dodge/Creature/Action.hs 56;" t
AimAt src/Dodge/Data/ActionPlan.hs 72;" C
AimStance src/Dodge/Data/AimStance.hs 10;" t
Aiming src/Dodge/Data/Creature/Stance.hs 38;" C
@@ -2406,10 +2406,10 @@ _sparks src/Dodge/Data/LWorld.hs 111;" f
_spawnEBT src/Dodge/Data/Bullet.hs 34;" f
_ssIndent src/Dodge/Data/SelectionList.hs 37;" f
_ssItems src/Dodge/Data/SelectionList.hs 33;" f
_ssOffset src/Dodge/Data/SelectionList.hs 34;" f
_ssSet src/Dodge/Data/SelectionList.hs 38;" f
_ssShownItems src/Dodge/Data/SelectionList.hs 35;" f
_ssShownLength src/Dodge/Data/SelectionList.hs 36;" f
_ssYOffset src/Dodge/Data/SelectionList.hs 34;" f
_ssboName src/Shader/Data.hs 97;" f
_ssboPtr src/Shader/Data.hs 98;" f
_startStopMv src/Dodge/Data/Creature/Misc.hs 89;" f
@@ -2674,7 +2674,7 @@ anRoom src/Dodge/Floor.hs 116;" f
analyser src/Dodge/Placement/Instance/Analyser.hs 8;" f
analyserByDoor src/Dodge/Room/LasTurret.hs 126;" f
analyserByNthLink src/Dodge/Room/LasTurret.hs 112;" f
andOrRegex src/Dodge/DisplayInventory.hs 79;" f
andOrRegex src/Dodge/DisplayInventory.hs 80;" f
angleBetween src/Geometry.hs 158;" f
angleThreeSides src/Geometry/Vector.hs 71;" f
angleVV src/Geometry/Vector.hs 58;" f
@@ -2907,7 +2907,7 @@ chasmSimpleMaze src/Dodge/Room/Tutorial.hs 417;" f
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 348;" f
chasmTestCliffPush src/Dodge/Creature/State/WalkCycle.hs 126;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 133;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 101;" f
checkCombineSelectionExists src/Dodge/DisplayInventory.hs 102;" f
checkConnection src/Dodge/Inventory/Swap.hs 75;" f
checkDeath src/Dodge/Creature/Update.hs 461;" f
checkDeath' src/Dodge/Creature/Update.hs 464;" f
@@ -2916,7 +2916,7 @@ checkErrorGL src/Shader/Compile.hs 86;" f
checkFBO src/Framebuffer/Check.hs 6;" f
checkGLError src/GLHelp.hs 17;" f
checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f
checkInventorySelectionExists src/Dodge/DisplayInventory.hs 94;" f
checkInventorySelectionExists src/Dodge/DisplayInventory.hs 95;" f
checkTermDist src/Dodge/Update.hs 413;" f
checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f
checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f
@@ -2998,7 +2998,7 @@ combinationsOf src/Multiset.hs 46;" f
combinationsTrie src/Dodge/Combine.hs 44;" f
combineAwareness src/Dodge/Creature/Perception.hs 119;" f
combineFloors src/Dodge/Room/Procedural.hs 154;" f
combineInventoryExtra src/Dodge/Render/HUD.hs 324;" f
combineInventoryExtra src/Dodge/Render/HUD.hs 323;" f
combineItemListYouX src/Dodge/Combine.hs 36;" f
combineList src/Dodge/Combine.hs 21;" f
combineRooms src/Dodge/Room/Procedural.hs 134;" f
@@ -3025,7 +3025,7 @@ connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 802;" f
constructEdges src/Polyhedra.hs 31;" f
constructEdgesList src/Polyhedra.hs 40;" f
contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 58;" f
continueTerminal src/Dodge/Update/Input/InGame.hs 407;" f
continueTerminal src/Dodge/Update/Input/InGame.hs 405;" f
convexHull src/Geometry/Polygon.hs 150;" f
convexHullSafe src/Geometry/Polygon.hs 172;" f
convexPolysOverlap src/Geometry/ConvexPoly.hs 48;" f
@@ -3067,7 +3067,7 @@ crLeftHandWall src/Dodge/Creature/HandPos.hs 94;" f
crMass src/Dodge/Creature/Mass.hs 5;" f
crMaterial src/Dodge/Creature/Material.hs 8;" f
crMaxHP src/Dodge/Creature/MaxHP.hs 6;" f
crMoveImpulses src/Dodge/Creature/Action.hs 140;" f
crMoveImpulses src/Dodge/Creature/Action.hs 143;" f
crMvAbsolute src/Dodge/Creature/Impulse/Movement.hs 39;" f
crMvAbsoluteNoStride src/Dodge/Creature/Impulse/Movement.hs 56;" f
crMvBy src/Dodge/Creature/Impulse/Movement.hs 28;" f
@@ -3080,7 +3080,7 @@ crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 25;" f
crOnSeg src/Dodge/WorldEvent/ThingsHit.hs 249;" f
crOnSeg' src/Dodge/Creature/State/WalkCycle.hs 145;" f
crPainEffect src/Dodge/Creature/State.hs 50;" f
crPathing src/Dodge/Creature/Action.hs 124;" f
crPathing src/Dodge/Creature/Action.hs 127;" f
crRad src/Dodge/Creature/Radius.hs 7;" f
crRightHandWall src/Dodge/Creature/HandPos.hs 76;" f
crSafeDistFromTarg src/Dodge/Creature/Test.hs 71;" f
@@ -3112,7 +3112,7 @@ crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 642;" f
createForceField src/Dodge/ForceField.hs 7;" f
createGas src/Dodge/Gas.hs 10;" f
createHeadLamp src/Dodge/Euse.hs 64;" f
createItemYou src/Dodge/Inventory/Add.hs 64;" f
createItemYou src/Dodge/Inventory/Add.hs 74;" f
createLightMap src/Render.hs 26;" f
createProjectile src/Dodge/HeldUse.hs 1305;" f
createProjectileR src/Dodge/HeldUse.hs 1254;" f
@@ -3289,6 +3289,7 @@ defaultWindow src/Dodge/Default/Wall.hs 54;" f
defaultWorld src/Dodge/Default/World.hs 34;" f
degToRad src/Geometry/Vector.hs 126;" f
deleteIMInZone src/Dodge/Base.hs 70;" f
deleteShift src/IntSetHelp.hs 12;" f
deleteWallFromZones src/Dodge/Wall/Zone.hs 23;" f
deleteWallID src/Dodge/Wall/Delete.hs 13;" f
deleteWallIDs src/Dodge/Wall/Delete.hs 27;" f
@@ -3324,8 +3325,8 @@ disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 848;" f
displayConfig src/Dodge/Menu.hs 223;" f
displayControls src/Dodge/Menu.hs 239;" f
displayFrameTicks src/Dodge/Render/Picture.hs 50;" f
displayFreeSlots src/Dodge/DisplayInventory.hs 196;" f
displayIndents src/Dodge/DisplayInventory.hs 110;" f
displayFreeSlots src/Dodge/DisplayInventory.hs 197;" f
displayIndents src/Dodge/DisplayInventory.hs 111;" f
displayPulse src/Dodge/Inventory/SelectionList.hs 192;" f
displayTerminalLineString src/Dodge/Update.hs 586;" f
dist src/Geometry/Vector.hs 193;" f
@@ -3368,7 +3369,7 @@ doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f
doDoorLerp src/Dodge/Door/DoorLerp.hs 8;" f
doDoorMount src/Dodge/Door.hs 32;" f
doDrag src/Dodge/Update/Input/InGame.hs 136;" f
doDragSelect src/Dodge/Update/Input/InGame.hs 216;" f
doDragSelect src/Dodge/Update/Input/InGame.hs 214;" f
doDrawing src/Dodge/Render.hs 33;" f
doDrawing' src/Dodge/Render.hs 44;" f
doFloatFloat src/Dodge/FloatFunction.hs 5;" f
@@ -3387,11 +3388,11 @@ doPreload appDodge/Main.hs 133;" f
doQuickload src/Dodge/Save.hs 83;" f
doQuicksave src/Dodge/Save.hs 77;" f
doRandImpulse src/Dodge/RandImpulse.hs 8;" f
doRegexInput src/Dodge/Update/Input/InGame.hs 460;" f
doRegexInput src/Dodge/Update/Input/InGame.hs 458;" f
doRoomPlacements src/Dodge/Layout.hs 121;" f
doRoomShift src/Dodge/Room/Link.hs 34;" f
doScopeZoom src/Dodge/Update/Scroll.hs 89;" f
doSectionSize src/Dodge/DisplayInventory.hs 215;" f
doSectionSize src/Dodge/DisplayInventory.hs 216;" f
doSideEffects appDodge/Main.hs 118;" f
doSlimeRadChange src/Dodge/Creature/Update.hs 299;" f
doTabComplete src/Dodge/Terminal.hs 241;" f
@@ -3536,8 +3537,8 @@ drawSubInventory src/Dodge/Render/HUD.hs 166;" f
drawSwitch src/Dodge/Button/Draw.hs 18;" f
drawSwitchWire src/Dodge/LevelGen/Switch.hs 24;" f
drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f
drawTerminalCursorLink src/Dodge/Render/HUD.hs 380;" f
drawTerminalDisplay src/Dodge/Render/HUD.hs 341;" f
drawTerminalCursorLink src/Dodge/Render/HUD.hs 379;" f
drawTerminalDisplay src/Dodge/Render/HUD.hs 340;" f
drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f
drawText src/Picture/Base.hs 224;" f
drawTitle src/Dodge/Render/MenuScreen.hs 49;" f
@@ -3559,7 +3560,7 @@ drawZoneCol src/Dodge/Debug/Picture.hs 149;" f
drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 286;" f
dropAll src/Dodge/Creature/Update.hs 546;" f
dropInventoryPath src/Dodge/HeldUse.hs 1380;" f
dropItem src/Dodge/Creature/Action.hs 176;" f
dropItem src/Dodge/Creature/Action.hs 179;" f
dropper src/Dodge/Item/Scope.hs 82;" f
drumMag src/Dodge/Item/Ammo.hs 31;" f
dsZoneSize src/Dodge/Zoning/Cloud.hs 51;" f
@@ -3599,10 +3600,10 @@ encircleCloseP src/Dodge/Creature/Boid.hs 38;" f
encircleDistP src/Dodge/Creature/Boid.hs 24;" f
encircleP src/Dodge/Creature/Boid.hs 30;" f
endArcPos src/Dodge/Tesla.hs 87;" f
endCombineRegex src/Dodge/Update/Input/InGame.hs 295;" f
endRegex src/Dodge/Update/Input/InGame.hs 289;" f
endCombineRegex src/Dodge/Update/Input/InGame.hs 293;" f
endRegex src/Dodge/Update/Input/InGame.hs 287;" f
energyReleaseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 742;" f
enterCombineInv src/Dodge/DisplayInventory.hs 321;" f
enterCombineInv src/Dodge/DisplayInventory.hs 322;" f
enumOption src/Dodge/Menu/OptionType.hs 17;" f
epText src/Dodge/Inventory/SelectionList.hs 74;" f
eqConstr src/SameConstr.hs 17;" f
@@ -3650,7 +3651,7 @@ fdiv src/ShortShow.hs 41;" f
feedSlime src/Dodge/Update.hs 1080;" f
feet src/Dodge/Creature/Picture.hs 226;" f
filter3 src/FoldableHelp.hs 76;" f
filterSectionsPair src/Dodge/DisplayInventory.hs 160;" f
filterSectionsPair src/Dodge/DisplayInventory.hs 161;" f
findBlips src/Dodge/RadarSweep.hs 63;" f
findBoundDists src/Dodge/Update/Camera.hs 252;" f
findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f
@@ -3759,7 +3760,7 @@ getAutoSpringLinks src/Dodge/Item/Grammar.hs 90;" f
getAvailableListLines src/Dodge/SelectionList.hs 10;" f
getBulHitDams src/Dodge/Bullet.hs 175;" f
getBulletType src/Dodge/HeldUse.hs 945;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 584;" f
getCloseObj src/Dodge/Update/Input/InGame.hs 578;" f
getCommand src/Dodge/Terminal.hs 61;" f
getCommands src/Dodge/Terminal.hs 58;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 56;" f
@@ -3784,7 +3785,7 @@ getRoomFromID src/Dodge/Room/Modify.hs 31;" f
getRoomsFromInts src/Dodge/Room/Tutorial.hs 611;" f
getRootItemBounds src/Dodge/Render/HUD.hs 98;" f
getRootItemInvID src/Dodge/Inventory/Location.hs 36;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 18;" f
getSmoothScrollValue src/Dodge/SmoothScroll.hs 21;" f
getSplitString src/Dodge/Debug/Terminal.hs 129;" f
getTiles src/Dodge/Layout.hs 224;" f
@@ -3944,7 +3945,7 @@ insertWallInZones src/Dodge/Wall/Zone.hs 20;" f
insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 131;" f
insertWithNewKeys src/IntMapHelp.hs 71;" f
intAnno src/Dodge/Floor.hs 110;" f
interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f
interactWithCloseObj src/Dodge/SelectedClose.hs 11;" f
interpWith src/Dodge/Creature/Boid.hs 13;" f
intersectCircLine src/Geometry/Intersect.hs 368;" f
intersectCircLineAlong src/Geometry/Intersect.hs 359;" f
@@ -3979,8 +3980,8 @@ invCursorParams src/Dodge/ListDisplayParams.hs 35;" f
invDP src/Dodge/ListDisplayParams.hs 32;" f
invDT src/Dodge/Item/Grammar.hs 227;" f
invDT' src/Dodge/Item/Grammar.hs 232;" f
invDimColor src/Dodge/DisplayInventory.hs 190;" f
invHead src/Dodge/Render/HUD.hs 410;" f
invDimColor src/Dodge/DisplayInventory.hs 191;" f
invHead src/Dodge/Render/HUD.hs 409;" f
invIMDT src/Dodge/Item/Grammar.hs 256;" f
invIndents src/Dodge/Item/Grammar.hs 263;" f
invItemEffs src/Dodge/Creature/State.hs 91;" f
@@ -4168,10 +4169,10 @@ listConfig src/Dodge/Menu.hs 232;" f
listControls src/Dodge/Menu.hs 244;" f
listCursor src/Dodge/Render/List.hs 120;" f
listGuard src/Dodge/Creature/ReaderUpdate.hs 287;" f
listSelectionColorPicture src/Dodge/DisplayInventory.hs 299;" f
listSelectionColorPicture src/Dodge/DisplayInventory.hs 300;" f
litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f
lmt src/MatrixHelper.hs 53;" f
lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 399;" f
lnkMidPosInvSelsCol src/Dodge/Render/HUD.hs 398;" f
loadAmmoTut src/Dodge/Room/Tutorial.hs 475;" f
loadDodgeConfig src/Dodge/Config.hs 30;" f
loadMusic src/Dodge/SoundLogic/LoadSound.hs 30;" f
@@ -4298,7 +4299,7 @@ maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f
maybeClearLoadingScreen src/Dodge/StartNewGame.hs 58;" f
maybeDestroyBlock src/Dodge/Wall/Damage.hs 136;" f
maybeDestroyDoor src/Dodge/Wall/Damage.hs 141;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 620;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 614;" f
maybeOpenConsole src/Dodge/Update.hs 135;" f
maybeReadFile src/Dodge/LoadSeed.hs 10;" f
maybeTakeOne src/RandomHelp.hs 135;" f
@@ -4494,7 +4495,7 @@ optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 53;" f
optionValueOffset src/Dodge/Menu/Option.hs 86;" f
optionsOptions src/Dodge/Menu.hs 113;" f
optionsToSelections src/Dodge/Menu/Option.hs 47;" f
orRegex src/Dodge/DisplayInventory.hs 82;" f
orRegex src/Dodge/DisplayInventory.hs 83;" f
orange src/Color.hs 52;" f
orderAround3 src/Geometry/Vector3D.hs 106;" f
orderAroundFirst src/Geometry/Polygon.hs 128;" f
@@ -4540,7 +4541,7 @@ passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 693;" f
pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f
pathEdgeObstructed src/Dodge/Path.hs 87;" f
pauseAndFloatCam src/Dodge/Camera.hs 10;" f
pauseGame src/Dodge/Update/Input/InGame.hs 576;" f
pauseGame src/Dodge/Update/Input/InGame.hs 570;" f
pauseMenu src/Dodge/Menu.hs 57;" f
pauseMenuOptions src/Dodge/Menu.hs 64;" f
pauseSound src/Dodge/SoundLogic.hs 42;" f
@@ -4552,14 +4553,14 @@ pedestalRoom src/Dodge/Room/Containing.hs 50;" f
penThing src/Dodge/Bullet.hs 217;" f
perMat src/MatrixHelper.hs 60;" f
perceptionUpdate src/Dodge/Creature/Perception.hs 25;" f
performAction src/Dodge/Creature/Action.hs 58;" f
performActions src/Dodge/Creature/Action.hs 41;" f
performAimAt src/Dodge/Creature/Action.hs 108;" f
performPathTo src/Dodge/Creature/Action.hs 129;" f
performTurnToA src/Dodge/Creature/Action.hs 149;" f
performAction src/Dodge/Creature/Action.hs 61;" f
performActions src/Dodge/Creature/Action.hs 44;" f
performAimAt src/Dodge/Creature/Action.hs 111;" f
performPathTo src/Dodge/Creature/Action.hs 132;" f
performTurnToA src/Dodge/Creature/Action.hs 152;" f
perspectiveMatrixb src/MatrixHelper.hs 11;" f
pickUpItem src/Dodge/Inventory/Add.hs 72;" f
pickUpItemAt src/Dodge/Inventory/Add.hs 77;" f
pickUpItem src/Dodge/Inventory/Add.hs 82;" f
pickUpItemAt src/Dodge/Inventory/Add.hs 87;" f
pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 830;" f
pincerP src/Dodge/Creature/Boid.hs 63;" f
pincerP' src/Dodge/Creature/Boid.hs 96;" f
@@ -4586,7 +4587,7 @@ placeSpotID src/Dodge/Placement/PlaceSpot.hs 99;" f
placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 84;" f
placeSpotUsingRoomPos src/Dodge/Placement/PlaceSpot.hs 62;" f
placeWallPoly src/Dodge/Placement/PlaceSpot.hs 157;" f
plainRegex src/Dodge/DisplayInventory.hs 193;" f
plainRegex src/Dodge/DisplayInventory.hs 194;" f
playIfFree src/Sound.hs 139;" f
playPositionalSoundQueue src/Sound.hs 147;" f
playSoundAndUpdate src/Sound.hs 55;" f
@@ -4830,8 +4831,8 @@ reflectLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 20;" f
reflectPulseLaserAlong src/Dodge/Item/Weapon/LaserPath.hs 65;" f
refract src/Dodge/Item/Weapon/LaserPath.hs 39;" f
refreshOptionsSelectionList src/Dodge/Menu/Option.hs 35;" f
regexCombs src/Dodge/DisplayInventory.hs 72;" f
regexList src/Dodge/DisplayInventory.hs 312;" f
regexCombs src/Dodge/DisplayInventory.hs 73;" f
regexList src/Dodge/DisplayInventory.hs 313;" f
reload1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 754;" f
reloadFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 860;" f
reloadLevelStart src/Dodge/Save.hs 71;" f
@@ -5005,20 +5006,20 @@ seagullWhistle1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 808;" f
seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f
searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 304;" f
secondColumnLDP src/Dodge/ListDisplayParams.hs 45;" f
sectionsDesiredLines src/Dodge/DisplayInventory.hs 202;" f
sectionsSizes src/Dodge/DisplayInventory.hs 205;" f
sectionsDesiredLines src/Dodge/DisplayInventory.hs 203;" f
sectionsSizes src/Dodge/DisplayInventory.hs 206;" f
seedStartMenu src/Dodge/Menu.hs 85;" f
seedStartOptions src/Dodge/Menu.hs 88;" f
segOnCirc src/Geometry.hs 113;" f
segmentArea src/Dodge/Creature/Update.hs 355;" f
selNumPos src/Dodge/Render/HUD.hs 459;" f
selNumPosCardinal src/Dodge/Render/HUD.hs 476;" f
selNumPos src/Dodge/Render/HUD.hs 458;" f
selNumPosCardinal src/Dodge/Render/HUD.hs 475;" f
selSecDrawCursor src/Dodge/Render/List.hs 101;" f
selSecSelCol src/Dodge/Render/HUD.hs 496;" f
selSecSelCol src/Dodge/Render/HUD.hs 495;" f
selSecSelSize src/Dodge/SelectionSections.hs 178;" f
selSecYint src/Dodge/SelectionSections.hs 187;" f
selectedItemScroll src/Dodge/Update/Scroll.hs 49;" f
selectionSet src/Dodge/Update/Input/InGame.hs 162;" f
selectionSet src/Dodge/Update/Input/InGame.hs 161;" f
semitoneLoop1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 846;" f
sensAboveDoor src/Dodge/Room/SensorDoor.hs 68;" f
sensInsideDoor src/Dodge/Room/SensorDoor.hs 77;" f
@@ -5053,7 +5054,7 @@ setOutLinksByType src/Dodge/RoomLink.hs 76;" f
setOutLinksPD src/Dodge/RoomLink.hs 96;" f
setPixelOffsetBounded src/Dodge/Update/Input/InGame.hs 123;" f
setRBCreatureTargeting src/Dodge/Creature/State.hs 318;" f
setSelWhileDragging src/Dodge/Update/Input/InGame.hs 351;" f
setSelWhileDragging src/Dodge/Update/Input/InGame.hs 349;" f
setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 93;" f
setShaderSource src/Shader/Compile.hs 121;" f
setShadowLimits src/Dodge/Shadows.hs 11;" f
@@ -5096,7 +5097,7 @@ shiftByV2 src/Dodge/PlacementSpot.hs 257;" f
shiftChildren src/Dodge/Tree/Compose.hs 45;" f
shiftDraw src/Dodge/Render/ShapePicture.hs 111;" f
shiftInBy src/Dodge/PlacementSpot.hs 254;" f
shiftInvItems src/Dodge/Update/Input/InGame.hs 319;" f
shiftInvItems src/Dodge/Update/Input/InGame.hs 317;" f
shiftInvItemsDown src/Dodge/Inventory.hs 186;" f
shiftInvItemsUp src/Dodge/Inventory.hs 196;" f
shiftLinkBy src/Dodge/Room/Link.hs 89;" f
@@ -5230,7 +5231,7 @@ soundWithStatus src/Dodge/SoundLogic.hs 104;" f
soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f
southPillarsRoom src/Dodge/Room/LongDoor.hs 89;" f
spPos src/ShapePicture/Data.hs 11;" f
spaceAction src/Dodge/Update/Input/InGame.hs 579;" f
spaceAction src/Dodge/Update/Input/InGame.hs 573;" f
spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 162;" f
spanColLightI src/Dodge/Placement/Instance/LightSource.hs 155;" f
spanLS src/Dodge/Placement/Instance/LightSource.hs 147;" f
@@ -5294,7 +5295,7 @@ stackedInventory src/Dodge/Creature.hs 318;" f
startCr src/Dodge/Creature.hs 83;" f
startCrafts src/Dodge/Room/Start.hs 94;" f
startDeathTimer src/Dodge/Creature/Update.hs 495;" f
startDrag src/Dodge/Update/Input/InGame.hs 304;" f
startDrag src/Dodge/Update/Input/InGame.hs 302;" f
startInvList src/Dodge/Creature.hs 97;" f
startInventory src/Dodge/Creature.hs 100;" f
startNewGameInSlot src/Dodge/StartNewGame.hs 16;" f
@@ -5338,7 +5339,7 @@ swapItemWith src/Dodge/Inventory.hs 280;" f
swapSelSet src/Dodge/Inventory.hs 160;" f
swarmCrit src/Dodge/Creature/SwarmCrit.hs 10;" f
swarmUsingCenter src/Dodge/Creature/Boid.hs 174;" f
symmetricDifference src/Dodge/Update/Input/InGame.hs 228;" f
symmetricDifference src/Dodge/Update/Input/InGame.hs 226;" f
t src/ShortShow.hs 48;" f
tEast src/Dodge/Room/Corridor.hs 96;" f
tToBTree src/Dodge/Tree/Compose.hs 93;" f
@@ -5419,7 +5420,7 @@ thingsHitZ' src/Dodge/WorldEvent/ThingsHit.hs 65;" f
threeLineDecoration src/Dodge/Placement/TopDecoration.hs 67;" f
throb1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 862;" f
throbC4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 820;" f
throwItem src/Dodge/Creature/Action.hs 209;" f
throwItem src/Dodge/Creature/Action.hs 222;" f
tileTexCoords src/Tile.hs 11;" f
tilesFromRooms src/Dodge/Layout.hs 221;" f
tilesToLine src/Shader/AuxAddition.hs 66;" f
@@ -5456,7 +5457,7 @@ toV2 src/Geometry/Data.hs 54;" f
toV3 src/Geometry/Data.hs 57;" f
toV4 src/Geometry/Data.hs 60;" f
tocrs src/Dodge/TestString.hs 40;" f
toggleCombineInv src/Dodge/DisplayInventory.hs 315;" f
toggleCombineInv src/Dodge/DisplayInventory.hs 316;" f
toggleCommands src/Dodge/Terminal.hs 86;" f
toggleEquipmentAt src/Dodge/Creature/Impulse/UseItem.hs 68;" f
toggleExamineInv src/Dodge/Creature/Impulse/UseItem.hs 106;" f
@@ -5524,17 +5525,17 @@ truncate src/Polyhedra/Geodesic.hs 39;" f
trunkDepth src/TreeHelp.hs 164;" f
tryAttachItems src/Dodge/Item/Grammar.hs 35;" f
tryClickUse src/Dodge/Creature/YourControl.hs 207;" f
tryCombine src/Dodge/Update/Input/InGame.hs 596;" f
tryCombine src/Dodge/Update/Input/InGame.hs 590;" f
tryDrawToCapacitor src/Dodge/Creature/State.hs 179;" f
tryDropSelected src/Dodge/Update/Input/InGame.hs 147;" f
tryEvadeSideways src/Dodge/Creature/Action.hs 101;" f
tryEvadeSideways src/Dodge/Creature/Action.hs 104;" f
tryGetChannel src/Sound.hs 99;" f
tryGetRootAttachedFromInvID src/Dodge/Inventory/Location.hs 23;" f
tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 42;" f
tryPickupSelected src/Dodge/Update/Input/InGame.hs 174;" f
tryPickupSelected src/Dodge/Update/Input/InGame.hs 173;" f
tryPlay src/Sound.hs 85;" f
tryPutItemInInv src/Dodge/Inventory/Add.hs 25;" f
tryPutItemInInvAt src/Dodge/Inventory/Add.hs 56;" f
tryPutItemInInvAt src/Dodge/Inventory/Add.hs 66;" f
trySeedFromClipboard src/Dodge/Menu.hs 94;" f
trySpin src/Dodge/Projectile/Update.hs 120;" f
trySynthBullet src/Dodge/Creature/State.hs 195;" f
@@ -5584,7 +5585,7 @@ updateAggroBee src/Dodge/Creature/Update.hs 129;" f
updateAimPos src/Dodge/Update.hs 400;" f
updateAllNodes src/TreeHelp.hs 88;" f
updateArc src/Dodge/Tesla.hs 44;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 491;" f
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 489;" f
updateBarrel src/Dodge/Barreloid.hs 43;" f
updateBarreloid src/Dodge/Barreloid.hs 16;" f
updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f
@@ -5604,8 +5605,8 @@ updateChaseCrit src/Dodge/Creature/Update.hs 371;" f
updateCloseObjects src/Dodge/Inventory.hs 129;" f
updateCloud src/Dodge/Update.hs 920;" f
updateClouds src/Dodge/Update.hs 784;" f
updateCombinePositioning src/Dodge/DisplayInventory.hs 41;" f
updateCombineSections src/Dodge/DisplayInventory.hs 48;" f
updateCombinePositioning src/Dodge/DisplayInventory.hs 42;" f
updateCombineSections src/Dodge/DisplayInventory.hs 49;" f
updateCreature src/Dodge/Creature/Update.hs 50;" f
updateCreatureGroups src/Dodge/Update.hs 645;" f
updateCreatureSoundPositions src/Dodge/Update.hs 624;" f
@@ -5615,7 +5616,7 @@ updateDebris src/Dodge/Update.hs 687;" f
updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f
updateDebugMessageOffset src/Dodge/Update.hs 104;" f
updateDelayedEvents src/Dodge/Update.hs 1117;" f
updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f
updateDisplaySections src/Dodge/DisplayInventory.hs 117;" f
updateDistortion src/Dodge/Distortion.hs 8;" f
updateDistortions src/Dodge/Update.hs 666;" f
updateDoor src/Dodge/Door.hs 22;" f
@@ -5628,14 +5629,14 @@ updateEdgesWall src/Dodge/Update/WallDamage.hs 23;" f
updateEdgesWall' src/Dodge/Update/WallDamage.hs 36;" f
updateEnergyBall src/Dodge/EnergyBall.hs 32;" f
updateEnergyBalls src/Dodge/Update.hs 775;" f
updateEnterRegex src/Dodge/Update/Input/InGame.hs 536;" f
updateEnterRegex src/Dodge/Update/Input/InGame.hs 534;" f
updateExpBarrel src/Dodge/Barreloid.hs 21;" f
updateFlame src/Dodge/Flame.hs 19;" f
updateFlames src/Dodge/Update.hs 772;" f
updateFloatingCamera src/Dodge/Update/Camera.hs 38;" f
updateFoodSearchChaseCrit src/Dodge/Creature/Update.hs 381;" f
updateFunctionKey src/Dodge/Update/Input/InGame.hs 368;" f
updateFunctionKeys src/Dodge/Update/Input/InGame.hs 364;" f
updateFunctionKey src/Dodge/Update/Input/InGame.hs 366;" f
updateFunctionKeys src/Dodge/Update/Input/InGame.hs 362;" f
updateGas src/Dodge/Update.hs 942;" f
updateGusts src/Dodge/Update.hs 904;" f
updateHiveCrit src/Dodge/Creature/Update.hs 82;" f
@@ -5643,30 +5644,30 @@ updateHoverCrit src/Dodge/Humanoid.hs 25;" f
updateIMl src/Dodge/Update.hs 639;" f
updateIMl' src/Dodge/Update.hs 642;" f
updateInGameCamera src/Dodge/Update/Camera.hs 86;" f
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 441;" f
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 439;" f
updateInt2Map src/Dodge/Zoning/Base.hs 94;" f
updateInventoryPositioning src/Dodge/DisplayInventory.hs 87;" f
updateInventoryPositioning src/Dodge/DisplayInventory.hs 88;" f
updateItemTargeting src/Dodge/Creature/State.hs 288;" f
updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 401;" f
updateKeyInGame src/Dodge/Update/Input/InGame.hs 435;" f
updateKeyContinueTerminal src/Dodge/Update/Input/InGame.hs 399;" f
updateKeyInGame src/Dodge/Update/Input/InGame.hs 433;" f
updateKeysInGame src/Dodge/Update/Input/InGame.hs 81;" f
updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 387;" f
updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 410;" f
updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 385;" f
updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 408;" f
updateLampoid src/Dodge/Lampoid.hs 13;" f
updateLaser src/Dodge/Laser/Update.hs 12;" f
updateLasers src/Dodge/Update.hs 517;" f
updateLeftParentSF src/Dodge/Item/Grammar.hs 179;" f
updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLivingCreature src/Dodge/Creature/Update.hs 61;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 454;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 452;" f
updateMachine src/Dodge/Machine/Update.hs 24;" f
updateMagnets src/Dodge/Update.hs 408;" f
updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 231;" f
updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 229;" f
updateMouseContext src/Dodge/Update.hs 421;" f
updateMouseContextGame src/Dodge/Update.hs 426;" f
updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 94;" f
updateMouseInGame src/Dodge/Update/Input/InGame.hs 84;" f
updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 200;" f
updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 198;" f
updateObjCatMaybes src/Dodge/Update.hs 657;" f
updateObjMapMaybe src/Dodge/Update.hs 650;" f
updatePastWorlds src/Dodge/Update.hs 506;" f
@@ -5689,8 +5690,8 @@ updateRightParentSF src/Dodge/Item/Grammar.hs 190;" f
updateRootItemID src/Dodge/Inventory/Location.hs 42;" f
updateScopeZoom src/Dodge/Update/Scroll.hs 77;" f
updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f
updateSection src/Dodge/DisplayInventory.hs 261;" f
updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f
updateSection src/Dodge/DisplayInventory.hs 262;" f
updateSectionsPositioning src/Dodge/DisplayInventory.hs 242;" f
updateShockwave src/Dodge/Shockwave/Update.hs 8;" f
updateShockwaves src/Dodge/Update.hs 769;" f
updateSingleNodes src/TreeHelp.hs 100;" f
@@ -5879,7 +5880,7 @@ yIntercepts src/Dodge/Zoning/Base.hs 78;" f
yV2 src/Geometry/Vector.hs 213;" f
yellow src/Color.hs 44;" f
you src/Dodge/Base/You.hs 17;" f
youDropItem src/Dodge/Creature/Action.hs 195;" f
youDropItem src/Dodge/Creature/Action.hs 208;" f
yourAugmentedItem src/Dodge/Render/HUD.hs 233;" f
yourControl src/Dodge/Creature/YourControl.hs 26;" f
yourDefaultStrideLength src/Dodge/Default/Creature.hs 109;" f