Door destruction happens during door update, updates pathing

This commit is contained in:
2025-10-22 22:47:10 +01:00
parent 151c037763
commit 0fd7ba46b5
9 changed files with 145 additions and 198 deletions
-36
View File
@@ -1,7 +1,6 @@
module Dodge.Block (
splinterBlock,
destroyBlock,
destroyDoor,
) where
import Dodge.Zoning.Wall
@@ -13,10 +12,7 @@ import Data.Foldable
import qualified Data.IntSet as IS
import Data.Maybe
import Dodge.Block.Debris
import Dodge.Data.MountedObject
import Dodge.Data.World
import Dodge.DrWdWd
import Dodge.LightSource
import Dodge.Material.Sound
import Dodge.Wall.Delete
import Dodge.Wall.Zone
@@ -83,35 +79,3 @@ maybeClearPath w (i,j) = fromMaybe w $ do
---- w
---- & cWorld . pathGraph %~ FGL.insEdge (x, y, pe & peObstacles .~ mempty) . FGL.delEdge (x, y)
destroyDoor :: Door -> World -> World
destroyDoor dr w =
w
& doDrWdWd (_drDeath dr) dr
& deleteWallIDs wlids
& cWorld . lWorld . doors %~ IM.delete (_drID dr)
-- & muchWlDustAt awl (0.5 * uncurry (+) (_drPos dr))
-- & flip (foldl' (flip $ muchWlDustAt awl)) (map (pos +.+) ps)
& stopPushing (_drPushes dr)
& destroyMounts (_drMounts dr)
where
wlids = _drWallIDs dr
--awl = _walls (_cWorld w) IM.! IS.findMin wlids
-- awl = w ^?! cWorld . lWorld . walls . ix (IS.findMin wlids)
-- pos = fst . _wlLine $ awl
-- ps = replicateM 25 (randInCirc 20) & evalState $ _randGen w
destroyMounts :: [MountedObject] -> World -> World
destroyMounts mos w = foldl' (flip destroyMount) w mos
destroyMount :: MountedObject -> World -> World
destroyMount mo = case mo of
MountedLS lsid -> destroyLS lsid
MountedProp prid -> cWorld . lWorld . props . at prid .~ Nothing
stopPushing :: Maybe Int -> World -> World
stopPushing mdrid w = fromMaybe w $ do
drid <- mdrid
dr <- w ^? cWorld . lWorld . doors . ix drid
return $
w & cWorld . lWorld . doors . ix drid . drMech .~ DrWdId
& stopPushing (_drPushes dr)
-1
View File
@@ -37,7 +37,6 @@ data Door = Door
, _drLerp :: Float
, _drFootPrint :: IM.IntMap (Point2,Point2)
, _drHP :: Int
, _drDeath :: DrWdWd
, _drSpeed :: Float
, _drPushedBy :: PushSource
, _drPushes :: Maybe Int
+1 -4
View File
@@ -60,10 +60,7 @@ data WdP2f
= WdP2f0
| WdP2fDoorPosition Int
data DrWdWd
= DrWdId
| DrWdMakeDoorDebris
| DoorLerp
data DrWdWd = DrWdId | DoorLerp
deriveJSON defaultOptions ''ItCrWdWd
deriveJSON defaultOptions ''WdWd
-1
View File
@@ -42,7 +42,6 @@ defaultDoor =
, _drLerp = 0
, _drFootPrint = mempty
, _drHP = 10000
, _drDeath = DrWdMakeDoorDebris
, _drSpeed = 1
, _drPushedBy = PushesItself
, _drPushes = Nothing
+51 -40
View File
@@ -1,12 +1,15 @@
module Dodge.DrWdWd (doDrWdWd,doDrWdWd') where
module Dodge.DrWdWd (updateDoor) where
import ListHelp
import Dodge.LightSource
import Data.Foldable
import Dodge.Wall.Delete
import Dodge.Block.Debris
import qualified Data.IntMap.Strict as IM
import Dodge.Zoning.Pathing
import Dodge.Zoning.Base
import Geometry.Data
import Control.Lens
import Data.Maybe
import Dodge.Block.Debris
import Dodge.Data.World
import Dodge.ShiftPoint
import Dodge.SoundLogic
@@ -14,47 +17,19 @@ import Dodge.Wall.Move
import Dodge.WorldBool
import qualified Data.Set as S
doDrWdWd :: DrWdWd -> Door -> World -> World
doDrWdWd dww = case dww of
DrWdId -> const id
DrWdMakeDoorDebris -> makeDoorDebris
DoorLerp -> doorLerp
updateDoor :: Door -> World -> (S.Set Int2, World)
updateDoor dr w
| dr ^. drHP < 1 = destroyDoor dr w
| DoorLerp <- dr ^. drMech = doorLerp dr w
| otherwise = (mempty,w)
doDrWdWd' :: Door -> World -> (S.Set Int2, World)
doDrWdWd' dr w = case dr ^. drMech of
DrWdId -> (mempty,w)
DrWdMakeDoorDebris -> (mempty, makeDoorDebris dr w)
DoorLerp -> doorLerp' dr w
doorLerp :: Door -> World -> World
doorLerp dr w = fromMaybe w $ do
x <- newlerp
return $
f x
& playSound x
& cWorld . lWorld . doors . ix drid . drLerp .~ x
where
f = ifoldl' (flip . moveWallID) w . wlposs
p2a = lerpP2A (dr ^. drZeroPos) (dr ^. drOnePos)
wlposs x = (dr ^. drFootPrint) & each . each %~ shiftPointBy (p2a x)
clerp = dr ^. drLerp
newlerp
| toOpen && clerp < 1 = Just . min 1 $ clerp + speed
| clerp > 0 && not toOpen = Just . max 0 $ clerp - speed
| otherwise = Nothing
toOpen = doWdBl (_drTrigger dr) w
speed = _drSpeed dr
drid = _drID dr
playSound x
| _drPushedBy dr == PushesItself =
soundContinue (WallSound drid) (fst $ p2a x) slideDoorS (Just 1)
| otherwise = id
doorLerp' :: Door -> World -> (S.Set Int2,World)
doorLerp' dr w = fromMaybe (mempty,w) $ do
doorLerp :: Door -> World -> (S.Set Int2,World)
doorLerp dr w = fromMaybe (mempty,w) $ do
x <- newlerp
let ps = (dr ^. drFootPrint) & each . each %~ shiftPointBy (p2a x)
is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps
-- it seems possible that this will miss some paths: we add zones for the
-- old footprint. Seems unlikely, but a possible cause of pathfinding bugs
return $ (is,
f x
& playSound x
@@ -75,3 +50,39 @@ doorLerp' dr w = fromMaybe (mempty,w) $ do
| _drPushedBy dr == PushesItself =
soundContinue (WallSound drid) (fst $ p2a x) slideDoorS (Just 1)
| otherwise = id
destroyDoor :: Door -> World -> (S.Set Int2, World)
destroyDoor dr w =
(is,w
& makeDoorDebris dr
& deleteWallIDs wlids
& cWorld . lWorld . doors %~ IM.delete (_drID dr)
-- & muchWlDustAt awl (0.5 * uncurry (+) (_drPos dr))
-- & flip (foldl' (flip $ muchWlDustAt awl)) (map (pos +.+) ps)
& stopPushing (_drPushes dr)
& destroyMounts (_drMounts dr))
where
p2a = lerpP2A (dr ^. drZeroPos) (dr ^. drOnePos) (dr ^. drLerp)
ps = (dr ^. drFootPrint) & each . each %~ shiftPointBy p2a
is = foldMap (S.fromList . uncurry (zoneOfSeg peZoneSize)) ps
wlids = _drWallIDs dr
--awl = _walls (_cWorld w) IM.! IS.findMin wlids
-- awl = w ^?! cWorld . lWorld . walls . ix (IS.findMin wlids)
-- pos = fst . _wlLine $ awl
-- ps = replicateM 25 (randInCirc 20) & evalState $ _randGen w
destroyMounts :: [MountedObject] -> World -> World
destroyMounts mos w = foldl' (flip destroyMount) w mos
destroyMount :: MountedObject -> World -> World
destroyMount mo = case mo of
MountedLS lsid -> destroyLS lsid
MountedProp prid -> cWorld . lWorld . props . at prid .~ Nothing
stopPushing :: Maybe Int -> World -> World
stopPushing mdrid w = fromMaybe w $ do
drid <- mdrid
dr <- w ^? cWorld . lWorld . doors . ix drid
return $
w & cWorld . lWorld . doors . ix drid . drMech .~ DrWdId
& stopPushing (_drPushes dr)
+7 -7
View File
@@ -40,13 +40,13 @@ import Linear
getNodePos :: Int -> World -> Maybe Point2
getNodePos i w = w ^? cWorld . incNode . ix i
getEdgesCrossingPoly :: [Point2] -> World -> [(Int,Int)]
getEdgesCrossingPoly ps w = filter tcross $ zonesExtract (w ^. incEdgeZoning)
$ Set.toList $ foldMap (uncurry $ zoneOfSegSet peZoneSize) $ pairs
where
pairs = loopPairs ps
tcross (i,j) = any (isJust . uncurry (intersectSegSeg (f i) (f j))) pairs
f i = w ^?! cWorld . incNode . ix i
--getEdgesCrossingPoly :: [Point2] -> World -> [(Int,Int)]
--getEdgesCrossingPoly ps w = filter tcross $ zonesExtract (w ^. incEdgeZoning)
-- $ Set.toList $ foldMap (uncurry $ zoneOfSegSet peZoneSize) $ pairs
-- where
-- pairs = loopPairs ps
-- tcross (i,j) = any (isJust . uncurry (intersectSegSeg (f i) (f j))) pairs
-- f i = w ^?! cWorld . incNode . ix i
getEdgesCrossing :: Point2 -> Point2 -> World -> [(Int,Int)]
getEdgesCrossing s e w = filter inedgecrosses $ nearSeg peZoneSize _incEdgeZoning s e w
+1 -17
View File
@@ -3,8 +3,6 @@
module Dodge.Update (updateUniverse) where
import Dodge.Zoning.Pathing
import Dodge.Debug.Picture
import Dodge.Zoning.Base
import Dodge.Path
import Data.Foldable
@@ -328,14 +326,8 @@ updateEdgeWallObs w (i,j) = fromMaybe w $ do
| otherwise = at DoorObstacle ?~ ()
updateDoors :: World -> World
updateDoors w = let (is,w') = foldrM doDrWdWd' w (w ^. cWorld . lWorld . doors)
updateDoors w = let (is,w') = foldrM updateDoor w (w ^. cWorld . lWorld . doors)
in updateEdgesWall (zonesExtract (w ^. incEdgeZoning & each . each %~ S.fromList) is) w'
& cWorld . lWorld . flares <>~ foldMap (drawZoneCol green peZoneSize) is
--updateDoors w = uncurry updateEdgesWall .
-- over _1 (zonesExtract (w ^. incEdgeZoning & each . each %~ S.fromList)) $ foldrM doDrWdWd' w (w ^. cWorld . lWorld . doors)
updateDoor :: Door -> World -> World
updateDoor dr = doDrWdWd (_drMech dr) dr
updateMagnets :: LWorld -> LWorld
updateMagnets lw =
@@ -561,14 +553,6 @@ updateIMl fim fup w = alaf Endo foldMap (dbArg fup) (fim w) w
updateIMl' :: (World -> IM.IntMap a) -> (a -> World -> World) -> World -> World
updateIMl' fim fup w = alaf Endo foldMap fup (fim w) w
updateAccum :: (Foldable f, Monoid m)
=> (World -> f a)
-> (a -> World -> (m, World))
-> World
-> (m, World)
updateAccum fim fup w = foldrM fup w (fim w)
--alaf Endo foldMap fup (fim w) w
updateCreatureGroups :: World -> World
updateCreatureGroups w =
w & cWorld . lWorld . creatureGroups
+5 -5
View File
@@ -20,7 +20,7 @@ damageWall dt wl w = case _wlStructure wl of
& maybeDestroyBlock blid
DoorPart drid ->
w' & cWorld . lWorld . doors . ix drid . drHP -~ x
& maybeDestroyDoor drid
-- & maybeDestroyDoor drid
_ -> w'
where
x = case dt of
@@ -34,7 +34,7 @@ maybeDestroyBlock blid w = case w ^? cWorld . lWorld . blocks . ix blid of
Just bl | _blHP bl < 1 -> destroyBlock bl w
_ -> w
maybeDestroyDoor :: Int -> World -> World
maybeDestroyDoor drid w = case w ^? cWorld . lWorld . doors . ix drid of
Just dr | _drHP dr < 1 -> destroyDoor dr w
_ -> w
--maybeDestroyDoor :: Int -> World -> World
--maybeDestroyDoor drid w = case w ^? cWorld . lWorld . doors . ix drid of
-- Just dr | _drHP dr < 1 -> destroyDoor dr w
-- _ -> w
+80 -87
View File
@@ -350,13 +350,12 @@ DoReplicate src/Dodge/Data/ActionPlan.hs 106;" C
DoReplicatePartial src/Dodge/Data/ActionPlan.hs 110;" C
DockingBaySS src/Dodge/Data/Scenario.hs 92;" C
Door src/Dodge/Data/Door.hs 30;" t
DoorLerp src/Dodge/Data/WorldEffect.hs 66;" C
DoorLerp src/Dodge/Data/WorldEffect.hs 63;" C
DoorObstacle src/Dodge/Data/PathGraph.hs 50;" C
DoorPart src/Dodge/Data/Wall/Structure.hs 12;" C
DoubleRes src/Dodge/Data/Config.hs 98;" C
DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 14;" t
DrWdId src/Dodge/Data/WorldEffect.hs 64;" C
DrWdMakeDoorDebris src/Dodge/Data/WorldEffect.hs 65;" C
DrWdId src/Dodge/Data/WorldEffect.hs 63;" C
DrWdWd src/Dodge/Data/WorldEffect.hs 63;" t
DrawForceField src/Dodge/Data/Wall.hs 45;" C
DrawnWall src/Dodge/Data/Wall.hs 41;" C
@@ -1755,18 +1754,17 @@ _doReplicateAction src/Dodge/Data/ActionPlan.hs 113;" f
_doReplicateTimes src/Dodge/Data/ActionPlan.hs 107;" f
_doReplicateTimes src/Dodge/Data/ActionPlan.hs 112;" f
_doors src/Dodge/Data/LWorld.hs 118;" f
_drDeath src/Dodge/Data/Door.hs 40;" f
_drFootPrint src/Dodge/Data/Door.hs 38;" f
_drHP src/Dodge/Data/Door.hs 39;" f
_drID src/Dodge/Data/Door.hs 31;" f
_drLerp src/Dodge/Data/Door.hs 37;" f
_drMech src/Dodge/Data/Door.hs 34;" f
_drMounts src/Dodge/Data/Door.hs 44;" f
_drObstacleType src/Dodge/Data/Door.hs 46;" f
_drMounts src/Dodge/Data/Door.hs 43;" f
_drObstacleType src/Dodge/Data/Door.hs 45;" f
_drOnePos src/Dodge/Data/Door.hs 36;" f
_drPushedBy src/Dodge/Data/Door.hs 42;" f
_drPushes src/Dodge/Data/Door.hs 43;" f
_drSpeed src/Dodge/Data/Door.hs 41;" f
_drPushedBy src/Dodge/Data/Door.hs 41;" f
_drPushes src/Dodge/Data/Door.hs 42;" f
_drSpeed src/Dodge/Data/Door.hs 40;" f
_drTrigger src/Dodge/Data/Door.hs 33;" f
_drWallIDs src/Dodge/Data/Door.hs 32;" f
_drZeroPos src/Dodge/Data/Door.hs 35;" f
@@ -2527,7 +2525,7 @@ addToTrunk src/TreeHelp.hs 157;" f
addWarningTerminal src/Dodge/Room/Warning.hs 61;" f
addZ src/Geometry/Vector3D.hs 89;" f
adjustIMZone src/Dodge/Base.hs 81;" f
advanceScrollAmount src/Dodge/Update.hs 441;" f
advanceScrollAmount src/Dodge/Update.hs 438;" f
advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f
advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 60;" f
aimDelaySweep src/Dodge/Render/Picture.hs 287;" f
@@ -2780,13 +2778,13 @@ checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f
checkConnection src/Dodge/Inventory/Swap.hs 66;" f
checkDeath src/Dodge/Creature/Update.hs 70;" f
checkDeath' src/Dodge/Creature/Update.hs 73;" f
checkEndGame src/Dodge/Update.hs 798;" f
checkEndGame src/Dodge/Update.hs 787;" f
checkErrorGL src/Shader/Compile.hs 255;" 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 93;" f
checkTermDist src/Dodge/Update.hs 340;" f
checkTermDist src/Dodge/Update.hs 337;" f
checkWallLeft src/Dodge/LevelGen/StaticWalls/Deprecated.hs 29;" f
checkWallRight src/Dodge/LevelGen/StaticWalls.hs 54;" f
checkWallRight src/Dodge/LevelGen/StaticWalls/Deprecated.hs 59;" f
@@ -2809,7 +2807,7 @@ circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f
circleSolid src/Picture/Base.hs 164;" f
circleSolidCol src/Picture/Base.hs 168;" f
clAlt src/Dodge/Cloud.hs 5;" f
clClSpringVel src/Dodge/Update.hs 871;" f
clClSpringVel src/Dodge/Update.hs 860;" f
clColor src/Shader/Poke/Cloud.hs 35;" f
clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f
clampPath src/Dodge/Room/Procedural.hs 168;" f
@@ -2836,7 +2834,7 @@ closeObjectInfo src/Dodge/Render/HUD.hs 226;" f
closestPointOnLine src/Geometry/Intersect.hs 272;" f
closestPointOnLineParam src/Geometry/Intersect.hs 288;" f
closestPointOnSeg src/Geometry/Intersect.hs 303;" f
cloudEffect src/Dodge/Update.hs 823;" f
cloudEffect src/Dodge/Update.hs 812;" f
cloudPoisonDamage src/Dodge/Update/Cloud.hs 11;" f
clsNearCirc src/Dodge/Zoning/Cloud.hs 18;" f
clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f
@@ -2915,7 +2913,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 85;" f
crBlips src/Dodge/RadarSweep.hs 88;" f
crCamouflage src/Dodge/Creature/Picture.hs 33;" f
crCanSeeCr src/Dodge/Creature/Test.hs 52;" f
crCrSpring src/Dodge/Update.hs 900;" f
crCrSpring src/Dodge/Update.hs 889;" f
crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f
crDexterity src/Dodge/Creature/Statistics.hs 19;" f
crDisplayAwareness src/Dodge/Creature/Picture/Awareness.hs 39;" f
@@ -2946,7 +2944,7 @@ crRad src/Dodge/Creature/Radius.hs 7;" f
crSafeDistFromTarg src/Dodge/Creature/Test.hs 74;" f
crSetRoots src/Dodge/Inventory/Location.hs 55;" f
crShape src/Dodge/Creature/Shape.hs 8;" f
crSpring src/Dodge/Update.hs 897;" f
crSpring src/Dodge/Update.hs 886;" f
crStratConMatches src/Dodge/Creature/Test.hs 80;" f
crStrength src/Dodge/Creature/Statistics.hs 29;" f
crUpdate src/Dodge/Creature/Update.hs 63;" f
@@ -3089,9 +3087,9 @@ defaultConfig src/Dodge/Data/Config.hs 128;" f
defaultCraftItem src/Dodge/Default/Item.hs 25;" f
defaultCreature src/Dodge/Default/Creature.hs 12;" f
defaultCreatureMemory src/Dodge/Default/Creature.hs 65;" f
defaultCrystalWall src/Dodge/Default/Wall.hs 47;" f
defaultCrystalWall src/Dodge/Default/Wall.hs 43;" f
defaultDirtBlock src/Dodge/Default/Block.hs 19;" f
defaultDirtWall src/Dodge/Default/Wall.hs 68;" f
defaultDirtWall src/Dodge/Default/Wall.hs 64;" f
defaultDoor src/Dodge/Default/Door.hs 29;" f
defaultDoorWall src/Dodge/Default/Wall.hs 39;" f
defaultDrawButton src/Dodge/Button/Draw.hs 29;" f
@@ -3107,17 +3105,17 @@ defaultInvSize src/Dodge/Default/Creature.hs 72;" f
defaultLWorld src/Dodge/Default/World.hs 100;" f
defaultListDisplayParams src/Dodge/ListDisplayParams.hs 18;" f
defaultMachine src/Dodge/Default.hs 30;" f
defaultMachineWall src/Dodge/Default/Wall.hs 55;" f
defaultMachineWall src/Dodge/Default/Wall.hs 51;" f
defaultPerceptionState src/Dodge/Default/Creature.hs 75;" f
defaultProp src/Dodge/Default/Prop.hs 6;" f
defaultProximitySensor src/Dodge/Default.hs 54;" f
defaultRoom src/Dodge/Default/Room.hs 9;" f
defaultSensorWall src/Dodge/Default/Wall.hs 65;" f
defaultSensorWall src/Dodge/Default/Wall.hs 61;" f
defaultSwitchWall src/Dodge/Default/Door.hs 22;" f
defaultTerminal src/Dodge/Default/Terminal.hs 10;" f
defaultVision src/Dodge/Default/Creature.hs 85;" f
defaultWall src/Dodge/Default/Wall.hs 17;" f
defaultWindow src/Dodge/Default/Wall.hs 85;" f
defaultWindow src/Dodge/Default/Wall.hs 81;" f
defaultWorld src/Dodge/Default/World.hs 31;" f
degToRad src/Geometry/Vector.hs 118;" f
deleteIMInZone src/Dodge/Base.hs 70;" f
@@ -3127,8 +3125,8 @@ deleteWallID src/Dodge/Wall/Delete.hs 13;" f
deleteWallIDs src/Dodge/Wall/Delete.hs 28;" f
denormalEdges src/Polyhedra.hs 136;" f
destroyAllInvItems src/Dodge/Inventory.hs 53;" f
destroyBlock src/Dodge/Block.hs 52;" f
destroyDoor src/Dodge/Block.hs 86;" f
destroyBlock src/Dodge/Block.hs 51;" f
destroyDoor src/Dodge/Block.hs 85;" f
destroyInvItem src/Dodge/Inventory.hs 40;" f
destroyItem src/Dodge/Inventory.hs 62;" f
destroyLS src/Dodge/LightSource.hs 32;" f
@@ -3136,8 +3134,8 @@ destroyLSFlashAt src/Dodge/LightSource.hs 42;" f
destroyMachine src/Dodge/Machine/Destroy.hs 13;" f
destroyMatS src/Dodge/Material/Sound.hs 7;" f
destroyMcType src/Dodge/Machine/Destroy.hs 22;" f
destroyMount src/Dodge/Block.hs 106;" f
destroyMounts src/Dodge/Block.hs 103;" f
destroyMount src/Dodge/Block.hs 105;" f
destroyMounts src/Dodge/Block.hs 102;" f
destroyProjectile src/Dodge/Projectile/Update.hs 108;" f
detV src/Geometry/Vector.hs 94;" f
detector src/Dodge/Item/Held/Utility.hs 27;" f
@@ -3151,7 +3149,7 @@ difference src/Geometry.hs 127;" f
digitalLine src/Geometry.hs 285;" f
digitalRect src/Geometry.hs 302;" f
dim src/Color.hs 112;" f
dirtColor src/Dodge/Default/Wall.hs 81;" f
dirtColor src/Dodge/Default/Wall.hs 77;" f
dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f
disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 650;" f
displayConfig src/Dodge/Menu.hs 230;" f
@@ -3160,7 +3158,7 @@ displayFrameTicks src/Dodge/Render/Picture.hs 51;" f
displayFreeSlots src/Dodge/DisplayInventory.hs 192;" f
displayIndents src/Dodge/DisplayInventory.hs 110;" f
displayPulse src/Dodge/Inventory/SelectionList.hs 179;" f
displayTerminalLineString src/Dodge/Update.hs 505;" f
displayTerminalLineString src/Dodge/Update.hs 502;" f
dist src/Geometry/Vector.hs 185;" f
dist3 src/Geometry/Vector3D.hs 101;" f
divTo src/Geometry/Zone.hs 6;" f
@@ -3196,8 +3194,6 @@ doDebugTestF12 src/Dodge/Update/Input/DebugTest.hs 84;" f
doDebugTestF6 src/Dodge/Update/Input/DebugTest.hs 41;" f
doDebugTestF7 src/Dodge/Update/Input/DebugTest.hs 51;" f
doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f
doDrWdWd src/Dodge/DrWdWd.hs 17;" f
doDrWdWd' src/Dodge/DrWdWd.hs 23;" f
doDrag src/Dodge/Update/Input/InGame.hs 127;" f
doDrawing src/Dodge/Render.hs 34;" f
doDrawing' src/Dodge/Render.hs 45;" f
@@ -3236,12 +3232,11 @@ doWdBl src/Dodge/WorldBool.hs 10;" f
doWdCrBl src/Dodge/CreatureEffect.hs 18;" f
doWdP2f src/Dodge/WdP2f.hs 10;" f
doWdWd src/Dodge/WorldEffect.hs 28;" f
doWorldEvents src/Dodge/Update.hs 450;" f
doWorldEvents src/Dodge/Update.hs 447;" f
doWorldPos src/Dodge/WorldPos.hs 10;" f
door src/Dodge/Room/Door.hs 14;" f
doorBetween src/Dodge/Placement/Instance/Door.hs 39;" f
doorLerp src/Dodge/DrWdWd.hs 29;" f
doorLerp' src/Dodge/DrWdWd.hs 53;" f
doorLerp src/Dodge/DrWdWd.hs 20;" f
dotV src/Geometry/Vector.hs 76;" f
dotV3 src/Geometry/Vector3D.hs 119;" f
doubleCorridorBarrels src/Dodge/Room/Room.hs 276;" f
@@ -3408,7 +3403,7 @@ dtToRootIntMap' src/Dodge/DoubleTree.hs 153;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 158;" f
dummyMenuOption src/Dodge/Menu/Option.hs 72;" f
dustColor src/Shader/Poke/Cloud.hs 71;" f
dustSpringVel src/Dodge/Update.hs 882;" f
dustSpringVel src/Dodge/Update.hs 871;" f
ebColor src/Dodge/EnergyBall.hs 77;" f
ebDamage src/Dodge/EnergyBall.hs 85;" f
ebEffect src/Dodge/EnergyBall.hs 45;" f
@@ -3588,10 +3583,9 @@ getCommands src/Dodge/Terminal.hs 49;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 342;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 329;" f
getDebugMouseOver src/Dodge/Update.hs 398;" f
getDebugMouseOver src/Dodge/Update.hs 395;" f
getDistortions src/Dodge/Render.hs 435;" f
getEdgesCrossing src/Dodge/Path.hs 51;" f
getEdgesCrossingPoly src/Dodge/Path.hs 43;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f
getInventoryPath src/Dodge/Inventory/Path.hs 9;" f
getItemValue src/Dodge/Inventory/SelectionList.hs 147;" f
@@ -3600,7 +3594,7 @@ getLaserDamage src/Dodge/HeldUse.hs 704;" f
getLaserPhaseV src/Dodge/HeldUse.hs 701;" f
getLinksOfType src/Dodge/RoomLink.hs 41;" f
getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f
getMenuMouseContext src/Dodge/Update.hs 410;" f
getMenuMouseContext src/Dodge/Update.hs 407;" f
getNodePos src/Dodge/Path.hs 40;" f
getPJStabiliser src/Dodge/HeldUse.hs 1251;" f
getPretty src/AesonHelp.hs 8;" f
@@ -3834,7 +3828,7 @@ isNHS src/Geometry/Intersect.hs 53;" f
isNothing' src/MaybeHelp.hs 31;" f
isOnSeg src/Geometry.hs 237;" f
isOutLnk src/Dodge/PlacementSpot.hs 166;" f
isOverTerminalScreen src/Dodge/Update.hs 421;" f
isOverTerminalScreen src/Dodge/Update.hs 418;" f
isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f
isPutID src/Dodge/Placement/Instance/Wall.hs 129;" f
isRHS src/Geometry/LHS.hs 32;" f
@@ -4116,8 +4110,8 @@ maxInvSlots src/Dodge/Inventory/CheckSlots.hs 30;" f
maxShowX src/Dodge/Combine/Graph.hs 48;" f
maxViewDistance src/Dodge/Viewpoints.hs 26;" f
maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f
maybeClearPath src/Dodge/Block.hs 72;" f
maybeClearPaths src/Dodge/Block.hs 69;" f
maybeClearPath src/Dodge/Block.hs 71;" f
maybeClearPaths src/Dodge/Block.hs 68;" f
maybeDestroyBlock src/Dodge/Wall/Damage.hs 32;" f
maybeDestroyDoor src/Dodge/Wall/Damage.hs 37;" f
maybeExitCombine src/Dodge/Update/Input/InGame.hs 562;" f
@@ -4235,7 +4229,7 @@ muzzleRandPos src/Dodge/HeldUse.hs 778;" f
mvButton src/Dodge/Placement/PlaceSpot.hs 193;" f
mvCr src/Dodge/Placement/PlaceSpot.hs 196;" f
mvFS src/Dodge/Placement/PlaceSpot.hs 203;" f
mvGust src/Dodge/Update.hs 814;" f
mvGust src/Dodge/Update.hs 803;" f
mvLS src/Dodge/Placement/PlaceSpot.hs 275;" f
mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f
mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f
@@ -4348,7 +4342,7 @@ pauseMenu src/Dodge/Menu.hs 59;" f
pauseMenuOptions src/Dodge/Menu.hs 66;" f
pauseSound src/Dodge/SoundLogic.hs 42;" f
pauseTime src/Dodge/Update.hs 185;" f
pbFlicker src/Dodge/Update.hs 491;" f
pbFlicker src/Dodge/Update.hs 488;" f
pbsHit src/Dodge/WorldEvent/ThingsHit.hs 90;" f
peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f
pedestalRoom src/Dodge/Room/Containing.hs 50;" f
@@ -4603,7 +4597,7 @@ randPeakedParam src/RandomHelp.hs 130;" f
randProb src/RandomHelp.hs 68;" f
randSpark src/Dodge/Spark.hs 69;" f
randSparkExtraVel src/Dodge/Spark.hs 92;" f
randWallReflect src/Dodge/Update.hs 673;" f
randWallReflect src/Dodge/Update.hs 662;" f
randomChallenges src/Dodge/Room/Start.hs 63;" f
randomCompass src/Dodge/Layout.hs 60;" f
randomFourCornerRoom src/Dodge/Room/Procedural.hs 268;" f
@@ -4854,7 +4848,7 @@ setLinkType src/Dodge/RoomLink.hs 78;" f
setLinkTypePD src/Dodge/RoomLink.hs 85;" f
setMusicVolume src/Sound.hs 162;" f
setMvPos src/Dodge/Creature/ReaderUpdate.hs 58;" f
setOldPos src/Dodge/Update.hs 524;" f
setOldPos src/Dodge/Update.hs 521;" f
setOutLinks src/Dodge/RoomLink.hs 50;" f
setOutLinksByType src/Dodge/RoomLink.hs 75;" f
setOutLinksPD src/Dodge/RoomLink.hs 95;" f
@@ -4965,7 +4959,7 @@ shuffleLinks src/Dodge/Room/Link.hs 30;" f
shuffleRoomPos src/Dodge/Layout.hs 82;" f
shuffleTail src/RandomHelp.hs 59;" f
sigmoid src/Dodge/Base.hs 151;" f
simpleCrSprings src/Dodge/Update.hs 891;" f
simpleCrSprings src/Dodge/Update.hs 880;" f
simpleTermMessage src/Dodge/Terminal.hs 164;" f
sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 680;" f
sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 472;" f
@@ -5035,7 +5029,7 @@ speedLegs src/Dodge/Item/Equipment.hs 90;" f
splashMenu src/Dodge/Menu.hs 33;" f
splashMenuOptions src/Dodge/Menu.hs 38;" f
splashScreen src/Dodge/Initialisation.hs 10;" f
splinterBlock src/Dodge/Block.hs 26;" f
splinterBlock src/Dodge/Block.hs 25;" f
splitBezierquad src/Geometry/Bezier.hs 15;" f
splitExtra src/Justify.hs 21;" f
splitLookupTrie src/SimpleTrie.hs 39;" f
@@ -5091,7 +5085,7 @@ stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f
stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 626;" f
stopAllSounds src/Sound.hs 125;" f
stopBulletAt src/Dodge/Bullet.hs 199;" f
stopPushing src/Dodge/Block.hs 111;" f
stopPushing src/Dodge/Block.hs 110;" f
stopSoundFrom src/Dodge/SoundLogic.hs 220;" f
strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f
strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f
@@ -5207,7 +5201,7 @@ titleOptionsMenu src/Dodge/Menu.hs 106;" f
titleOptionsNoWrite src/Dodge/Menu.hs 109;" f
tlDoEffect src/Dodge/Terminal.hs 102;" f
tlSetStatus src/Dodge/Terminal.hs 99;" f
tmUpdate src/Dodge/Update.hs 508;" f
tmUpdate src/Dodge/Update.hs 505;" f
toBinary src/Dodge/Inventory/SelectionList.hs 141;" f
toBothLnk src/Dodge/RoomLink.hs 136;" f
toClosestMultiple src/HelpNum.hs 3;" f
@@ -5336,14 +5330,13 @@ unpause src/Dodge/Menu.hs 212;" f
unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 57;" f
unsafeBlinker src/Dodge/Item/Held/Utility.hs 33;" f
unsafeSwapKeys src/IntMapHelp.hs 75;" f
unshadowBlock src/Dodge/Block.hs 39;" f
unshadowBlock src/Dodge/Block.hs 38;" f
untilJust src/MonadHelp.hs 7;" f
untilJustCount src/MonadHelp.hs 14;" f
unusedOffPathAwayFromLink src/Dodge/PlacementSpot.hs 131;" f
unusedSpotAwayFromInLink src/Dodge/PlacementSpot.hs 137;" f
unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 119;" f
unusedSpotNearInLink src/Dodge/PlacementSpot.hs 196;" f
updateAccum src/Dodge/Update.hs 559;" f
updateAimPos src/Dodge/Update.hs 309;" f
updateAllNodes src/TreeHelp.hs 86;" f
updateArc src/Dodge/Tesla.hs 44;" f
@@ -5354,47 +5347,47 @@ updateBaseWheelEvent src/Dodge/Update/Scroll.hs 34;" f
updateBounds src/Dodge/Update/Camera.hs 258;" f
updateBulVel src/Dodge/Bullet.hs 57;" f
updateBullet src/Dodge/Bullet.hs 22;" f
updateBullets src/Dodge/Update.hs 595;" f
updateBullets src/Dodge/Update.hs 584;" f
updateCamera src/Dodge/Update/Camera.hs 30;" f
updateCloseObjects src/Dodge/Inventory.hs 115;" f
updateCloud src/Dodge/Update.hs 828;" f
updateClouds src/Dodge/Update.hs 699;" f
updateCloud src/Dodge/Update.hs 817;" f
updateClouds src/Dodge/Update.hs 688;" f
updateCombinePositioning src/Dodge/DisplayInventory.hs 40;" f
updateCombineSections src/Dodge/DisplayInventory.hs 47;" f
updateCreature src/Dodge/Creature/Update.hs 32;" f
updateCreature' src/Dodge/Creature/Update.hs 41;" f
updateCreatureGroups src/Dodge/Update.hs 567;" f
updateCreatureSoundPositions src/Dodge/Update.hs 538;" f
updateDebris src/Dodge/Update.hs 602;" f
updateCreatureGroups src/Dodge/Update.hs 556;" f
updateCreatureSoundPositions src/Dodge/Update.hs 535;" f
updateDebris src/Dodge/Update.hs 591;" f
updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f
updateDebugMessageOffset src/Dodge/Update.hs 98;" f
updateDelayedEvents src/Dodge/Update.hs 920;" f
updateDelayedEvents src/Dodge/Update.hs 909;" f
updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f
updateDistortion src/Dodge/Distortion.hs 5;" f
updateDistortions src/Dodge/Update.hs 588;" f
updateDoor src/Dodge/Update.hs 332;" f
updateDistortions src/Dodge/Update.hs 577;" f
updateDoor src/Dodge/DrWdWd.hs 15;" f
updateDoorEdge src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 74;" f
updateDoorEdges src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 71;" f
updateDoors src/Dodge/Update.hs 328;" f
updateDust src/Dodge/Update.hs 852;" f
updateDusts src/Dodge/Update.hs 702;" f
updateDust src/Dodge/Update.hs 841;" f
updateDusts src/Dodge/Update.hs 691;" f
updateEdge src/Dodge/Path.hs 57;" f
updateEdgeWallObs src/Dodge/Update.hs 317;" f
updateEdgesWall src/Dodge/Update.hs 314;" f
updateEnergyBall src/Dodge/EnergyBall.hs 31;" f
updateEnergyBalls src/Dodge/Update.hs 690;" f
updateEnergyBalls src/Dodge/Update.hs 679;" f
updateEnterRegex src/Dodge/Update/Input/InGame.hs 505;" f
updateExpBarrel src/Dodge/Barreloid.hs 21;" f
updateFBOTO src/Framebuffer/Update.hs 97;" f
updateFBOTO3 src/Framebuffer/Update.hs 131;" f
updateFlame src/Dodge/Flame.hs 19;" f
updateFlames src/Dodge/Update.hs 687;" f
updateFlames src/Dodge/Update.hs 676;" f
updateFloatingCamera src/Dodge/Update/Camera.hs 35;" f
updateFunctionKey src/Dodge/Update/Input/InGame.hs 363;" f
updateFunctionKeys src/Dodge/Update/Input/InGame.hs 359;" f
updateGusts src/Dodge/Update.hs 811;" f
updateIMl src/Dodge/Update.hs 553;" f
updateIMl' src/Dodge/Update.hs 556;" f
updateGusts src/Dodge/Update.hs 800;" f
updateIMl src/Dodge/Update.hs 550;" f
updateIMl' src/Dodge/Update.hs 553;" f
updateInGameCamera src/Dodge/Update/Camera.hs 79;" f
updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 428;" f
updateInt2Map src/Dodge/Zoning/Base.hs 98;" f
@@ -5407,33 +5400,33 @@ updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 382;" f
updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 405;" f
updateLampoid src/Dodge/Lampoid.hs 13;" f
updateLaser src/Dodge/Laser/Update.hs 11;" f
updateLasers src/Dodge/Update.hs 457;" f
updateLasers src/Dodge/Update.hs 454;" f
updateLeftParentSF src/Dodge/Item/Grammar.hs 170;" f
updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f
updateLongPressInGame src/Dodge/Update/Input/InGame.hs 441;" f
updateMachine src/Dodge/Machine/Update.hs 24;" f
updateMagnets src/Dodge/Update.hs 335;" f
updateMagnets src/Dodge/Update.hs 332;" f
updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 203;" f
updateMouseContext src/Dodge/Update.hs 348;" f
updateMouseContextGame src/Dodge/Update.hs 353;" f
updateMouseContext src/Dodge/Update.hs 345;" f
updateMouseContextGame src/Dodge/Update.hs 350;" f
updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 96;" f
updateMouseInGame src/Dodge/Update/Input/InGame.hs 86;" f
updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 166;" f
updateObjCatMaybes src/Dodge/Update.hs 579;" f
updateObjMapMaybe src/Dodge/Update.hs 572;" f
updatePastWorlds src/Dodge/Update.hs 446;" f
updateObjCatMaybes src/Dodge/Update.hs 568;" f
updateObjMapMaybe src/Dodge/Update.hs 561;" f
updatePastWorlds src/Dodge/Update.hs 443;" f
updatePreload src/Preload/Update.hs 20;" f
updateProjectile src/Dodge/Projectile/Update.hs 25;" f
updateProp src/Dodge/Prop/Update.hs 11;" f
updatePulse src/Dodge/Creature/Update.hs 146;" f
updatePulseBall src/Dodge/Update.hs 471;" f
updatePulseLaser src/Dodge/Update.hs 642;" f
updatePulseLasers src/Dodge/Update.hs 466;" f
updatePulseBall src/Dodge/Update.hs 468;" f
updatePulseLaser src/Dodge/Update.hs 631;" f
updatePulseLasers src/Dodge/Update.hs 463;" f
updateRBList src/Dodge/Inventory/RBList.hs 22;" f
updateRadarBlip src/Dodge/RadarBlip.hs 11;" f
updateRadarBlips src/Dodge/Update.hs 591;" f
updateRadarBlips src/Dodge/Update.hs 580;" f
updateRadarSweep src/Dodge/RadarSweep.hs 40;" f
updateRadarSweeps src/Dodge/Update.hs 693;" f
updateRadarSweeps src/Dodge/Update.hs 682;" f
updateRandNode src/TreeHelp.hs 109;" f
updateRenderSplit appDodge/Main.hs 112;" f
updateRightParentSF src/Dodge/Item/Grammar.hs 181;" f
@@ -5443,16 +5436,16 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f
updateSection src/Dodge/DisplayInventory.hs 258;" f
updateSectionsPositioning src/Dodge/DisplayInventory.hs 237;" f
updateShockwave src/Dodge/Shockwave/Update.hs 8;" f
updateShockwaves src/Dodge/Update.hs 684;" f
updateShockwaves src/Dodge/Update.hs 673;" f
updateSingleNodes src/TreeHelp.hs 98;" f
updateSound src/Sound.hs 72;" f
updateSounds src/Sound.hs 67;" f
updateSpark src/Dodge/Spark.hs 19;" f
updateSparks src/Dodge/Update.hs 696;" f
updateTeslaArc src/Dodge/Update.hs 612;" f
updateTeslaArcs src/Dodge/Update.hs 609;" f
updateSparks src/Dodge/Update.hs 685;" f
updateTeslaArc src/Dodge/Update.hs 601;" f
updateTeslaArcs src/Dodge/Update.hs 598;" f
updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f
updateTractorBeams src/Dodge/Update.hs 681;" f
updateTractorBeams src/Dodge/Update.hs 670;" f
updateTurret src/Dodge/Machine/Update.hs 49;" f
updateUniverse src/Dodge/Update.hs 77;" f
updateUniverseFirst src/Dodge/Update.hs 88;" f
@@ -5463,7 +5456,7 @@ updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 23;" f
updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 11;" f
updateWallDamages src/Dodge/Update/WallDamage.hs 10;" f
updateWheelEvent src/Dodge/Update/Scroll.hs 25;" f
updateWheelEvents src/Dodge/Update.hs 436;" f
updateWheelEvents src/Dodge/Update.hs 433;" f
updateWorldEventFlag src/Dodge/Update.hs 123;" f
updateWorldEventFlags src/Dodge/Update.hs 111;" f
upperBody src/Dodge/Creature/Picture.hs 120;" f
@@ -5617,7 +5610,7 @@ xIntercepts src/Dodge/Zoning/Base.hs 66;" f
xV2 src/Geometry/Vector.hs 201;" f
xyV3 src/Geometry/Vector.hs 213;" f
xyzV4 src/Geometry/Vector.hs 209;" f
yIntercepts' src/Dodge/Zoning/Base.hs 82;" f
yIntercepts src/Dodge/Zoning/Base.hs 82;" f
yV2 src/Geometry/Vector.hs 205;" f
yellow src/Color.hs 17;" f
you src/Dodge/Base/You.hs 13;" f
@@ -5639,11 +5632,11 @@ zipArcs src/Dodge/Tesla.hs 52;" f
zipCount src/Dodge/Tree/Shift.hs 136;" f
zipCountDown src/Dodge/Room/Procedural.hs 121;" f
zoneCloud src/Dodge/Zoning/Cloud.hs 27;" f
zoneClouds src/Dodge/Update.hs 498;" f
zoneClouds src/Dodge/Update.hs 495;" f
zoneCreature src/Dodge/Zoning/Creature.hs 55;" f
zoneCreatures src/Dodge/Update.hs 534;" f
zoneCreatures src/Dodge/Update.hs 531;" f
zoneDust src/Dodge/Zoning/Cloud.hs 48;" f
zoneDusts src/Dodge/Update.hs 502;" f
zoneDusts src/Dodge/Update.hs 499;" f
zoneExtract src/Dodge/Zoning/Base.hs 58;" f
zoneIncPe src/Dodge/Zoning/Pathing.hs 66;" f
zoneMonoid src/Dodge/Zoning/Base.hs 89;" f