Compare commits

...

2 Commits

Author SHA1 Message Date
justin 505ced95bb Work towards convex partition of polygons 2026-03-22 13:41:45 +00:00
justin 1a3d54e3b5 Add decorations to chasmspit room 2026-03-21 23:58:12 +00:00
5 changed files with 93 additions and 60 deletions
+1 -1
View File
@@ -121,7 +121,7 @@ girderZ h d w x y =
[ thinHighBar h xt yt [ thinHighBar h xt yt
, thinHighBar h xb yb , thinHighBar h xb yb
] ]
<> zipWith (thinHighBar (h - 1)) ps qs <> zipWith (thinHighBar (h )) ps qs
where where
n = w *.* normalizeV (vNormal $ y -.- x) n = w *.* normalizeV (vNormal $ y -.- x)
xb = x +.+ n xb = x +.+ n
+1 -4
View File
@@ -41,10 +41,7 @@ removeLights = rmPmnts %~ mapMaybe f
addLightsNGon :: Room -> State LayoutVars Room addLightsNGon :: Room -> State LayoutVars Room
addLightsNGon rm = do addLightsNGon rm = do
(i, rm') <- storeRoomID $ removeLights rm (i, rm') <- storeRoomID $ removeLights rm
return $ return $ rm' & rmInPmnt .:~ (0, f i)
rm'
& rmInPmnt
.:~ (0, f i)
where where
a = 2 * pi - (2 * pi / fromIntegral (rm ^?! rmType . rmngonSides)) a = 2 * pi - (2 * pi / fromIntegral (rm ^?! rmType . rmngonSides))
y = rm ^?! rmType . rmngonSize y = rm ^?! rmType . rmngonSize
+58 -30
View File
@@ -2,6 +2,8 @@
module Dodge.Room.Tutorial where module Dodge.Room.Tutorial where
import Dodge.Room.Foreground
import Data.Foldable
import Control.Monad import Control.Monad
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import qualified Data.IntSet as IS import qualified Data.IntSet as IS
@@ -55,30 +57,30 @@ tutAnoTree = do
[ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, corDoor , corDoor
, chasmSpitTerminal , chasmSpitTerminal
, return $ tToBTree "cor" $ return $ cleatOnward corridor --a , return $ tToBTree "cor" $ return $ cleatOnward corridor
, corDoor --a , corDoor
, tToBTree "sdr" . return . cleatOnward --a , tToBTree "sdr" . return . cleatOnward
<$> (shuffleLinks =<< distributerRoom BulletAmmo 100000) --a <$> (shuffleLinks =<< distributerRoom BulletAmmo 100000)
, -- , return $ tToBTree "cor" $ return $ cleatOnward corridor --a , -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
-- --, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom --a -- --, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom
---- , tToBTree "sr" . return . cleatOnward <$> tanksRoom [] [] --a ---- , tToBTree "sr" . return . cleatOnward <$> tanksRoom [] []
-- , return $ tToBTree "door" $ return $ cleatOnward door --a -- , return $ tToBTree "door" $ return $ cleatOnward door
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor --a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
-- , tToBTree "sdr" . return . cleatOnward <$> --a -- , tToBTree "sdr" . return . cleatOnward <$>
-- (shuffleLinks =<< tanksPipesRoom) --a -- (shuffleLinks =<< tanksPipesRoom)
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor --a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor --a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor --a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
return $ tToBTree "door" $ return $ cleatOnward door --a return $ tToBTree "door" $ return $ cleatOnward door
, return $ tToBTree "cor" $ return $ cleatOnward corridor --a , return $ tToBTree "cor" $ return $ cleatOnward corridor
, tutHub --a , tutHub
, chasmSpitTerminal --a , chasmSpitTerminal
, return $ tToBTree "cor" $ return $ cleatOnward corridor --a , return $ tToBTree "cor" $ return $ cleatOnward corridor
, tutLight --a , tutLight
, tutDrop --a , tutDrop
, return $ tToBTree "cor" $ return $ cleatOnward corridor --a , return $ tToBTree "cor" $ return $ cleatOnward corridor
---- , AnTree $ pickupTut --a ---- , AnTree $ pickupTut
---- , AnTree $ weaponTut --a ---- , AnTree $ weaponTut
] ]
foldMTRS :: foldMTRS ::
@@ -236,10 +238,12 @@ sqPlatformChasm b a =
sqSpitChasm :: Float -> Float -> ([[Point2]], [[Point2]]) sqSpitChasm :: Float -> Float -> ([[Point2]], [[Point2]])
sqSpitChasm b a = sqSpitChasm b a =
( [[ibr, obr, otr, itr], [itr, otr, otl, itl], [itl, otl, obl, ibl]] ( --[[ibr, obr, otr, itr], [itr, otr, otl, itl], [itl, otl, obl, ibl]]
, [[ibr, obr, otr, otl, obl, ibl, itl, itr]] convexPartition clfs
, [clfs]
) )
where where
clfs = [ibr, obr, otr, otl, obl, ibl, itl, itr]
obr = V2 a (-a) obr = V2 a (-a)
obl = V2 (-a) (-a) obl = V2 (-a) (-a)
otl = V2 (-a) a otl = V2 (-a) a
@@ -248,6 +252,12 @@ sqSpitChasm b a =
ibl = V2 (-b) (-a) ibl = V2 (-b) (-a)
itl = V2 (-b) b itl = V2 (-b) b
itr = V2 b b itr = V2 b b
-- otl---------otr
-- | itl-itr |
-- obr-ibl ibr-obl
nonConvexChasm :: [Point2] -> PSType
nonConvexChasm ps = PutChasm [] [ps]
midChasmSpit :: State LayoutVars Room midChasmSpit :: State LayoutVars Room
midChasmSpit = do midChasmSpit = do
@@ -289,11 +299,26 @@ chasmSpitTerminal = do
i1 <- nextLayoutInt i1 <- nextLayoutInt
y <- midChasmSpit y <- midChasmSpit
shp <- takeOne [vShape, lShape, jShape, liShape] shp <- takeOne [vShape, lShape, jShape, liShape]
let l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 0 rp let l1 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp North East
l4 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 1 rp l2 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp North West
l5 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 2 rp l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East North
l4 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East South
ls <- takeOne [[l1,l2],[l3,l4]
,[spanLightI (V2 120 0) (V2 120 300)]
, [spanLightI (V2 0 128) (V2 300 128)]
, [spanLightI (V2 300 0) (V2 0 300), sps0 $ putShape $ thinHighBar 95 0 300]
]
gh <- takeOne [55,75,97]
gird <- takeOne [girderZ gh 30 10,girder gh 30 10,girderV gh 30 10]
dec <- takeOne $ -- replicate 3 [] <>
[--[]
-- ,[sps0 $ putShape $ gird (V2 30 0) (V2 30 300)
-- ,sps0 $ putShape $ gird (V2 270 0) (V2 270 300)]
-- ,[sps0 $ putShape $ gird (V2 0 20) (V2 300 20)]
[sps0 $ putShape $ gird (V2 0 200) (V2 300 200)]
]
-- let y' = y & rmPmnts <>~ [l3, l4, l5] -- let y' = y & rmPmnts <>~ [l3, l4, l5]
let y' = y & rmPmnts <>~ [l3, l4] let y' = y & rmPmnts <>~ ls <> dec
return $ return $
tToBTree "chasmTerm" $ tToBTree "chasmTerm" $
Node Node
@@ -302,6 +327,9 @@ chasmSpitTerminal = do
, treePost [triggerDoorRoom i1, critDeadEnd] , treePost [triggerDoorRoom i1, critDeadEnd]
, return $ cleatOnward $ triggerDoorRoom i1 , return $ cleatOnward $ triggerDoorRoom i1
] ]
where
f rp a b = FromEdge a 2 `S.member` (fold $ rp ^? rpType . rplsType)
&& OnEdge b `S.member` (fold $ rp ^? rpType . rplsType)
polyChasm :: Int -> Float -> State LayoutVars Room polyChasm :: Int -> Float -> State LayoutVars Room
polyChasm n x = polyChasm n x =
+8
View File
@@ -151,6 +151,14 @@ convexHull :: [Point2] -> [Point2]
convexHull (x : y : z : xs) = grahamScan $ orderAroundFirst $ sortOn (\(V2 a b) -> (b, a)) (x : y : z : xs) convexHull (x : y : z : xs) = grahamScan $ orderAroundFirst $ sortOn (\(V2 a b) -> (b, a)) (x : y : z : xs)
convexHull _ = error "Tried to create the convex hull of two or fewer points" convexHull _ = error "Tried to create the convex hull of two or fewer points"
-- assumes the points go "anticlockwise" around a non-self intersecting shape
convexPartition :: [Point2] -> [[Point2]]
convexPartition (x:y:z:[]) = [[x,y,z]]
convexPartition (x:y:z:xs)
| isLHS x y z = [x,y,z] : convexPartition (x:z:xs)
| otherwise = convexPartition (y:z:xs <> [x])
convexPartition _ = error "unexpected shape for convexPartition"
{- | Creates the convex hull of a set of points. {- | Creates the convex hull of a set of points.
assumes no repetition of points: try nubbing! assumes no repetition of points: try nubbing!
-} -}
+25 -25
View File
@@ -2759,7 +2759,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 247;" f
burstRifle src/Dodge/Item/Held/Cane.hs 30;" f burstRifle src/Dodge/Item/Held/Cane.hs 30;" f
buttonFlip src/Dodge/Button/Event.hs 17;" f buttonFlip src/Dodge/Button/Event.hs 17;" f
buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 593;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 593;" f
cChasm src/Dodge/Room/Tutorial.hs 126;" f cChasm src/Dodge/Room/Tutorial.hs 131;" f
cFilledRect src/Dodge/CharacterEnums.hs 6;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f
cWireRect src/Dodge/CharacterEnums.hs 10;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f
calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f
@@ -2795,8 +2795,8 @@ chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 121;" f
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f
chasmRotate src/Dodge/Creature/Update.hs 173;" f chasmRotate src/Dodge/Creature/Update.hs 173;" f
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 319;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 338;" f
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 281;" f chasmSpitTerminal src/Dodge/Room/Tutorial.hs 288;" f
chasmTestCorpse src/Dodge/Creature/Update.hs 155;" f chasmTestCorpse src/Dodge/Creature/Update.hs 155;" f
chasmTestLiving src/Dodge/Creature/Update.hs 137;" f chasmTestLiving src/Dodge/Creature/Update.hs 137;" f
chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f
@@ -3547,7 +3547,7 @@ floorTo src/Geometry/Zone.hs 12;" f
floorWire src/Dodge/Wire.hs 13;" f floorWire src/Dodge/Wire.hs 13;" f
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 777;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 777;" f
foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 823;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 823;" f
foldMTRS src/Dodge/Room/Tutorial.hs 80;" f foldMTRS src/Dodge/Room/Tutorial.hs 85;" f
foldPairs src/ListHelp.hs 37;" f foldPairs src/ListHelp.hs 37;" f
foldrWhileArb src/ListHelp.hs 111;" f foldrWhileArb src/ListHelp.hs 111;" f
followImpulse src/Dodge/Creature/Impulse.hs 25;" f followImpulse src/Dodge/Creature/Impulse.hs 25;" f
@@ -3609,8 +3609,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 539;" f
getCommand src/Dodge/Terminal.hs 61;" f getCommand src/Dodge/Terminal.hs 61;" f
getCommands src/Dodge/Terminal.hs 58;" f getCommands src/Dodge/Terminal.hs 58;" f
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 466;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 485;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 453;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 472;" f
getDebugMouseOver src/Dodge/Update.hs 424;" f getDebugMouseOver src/Dodge/Update.hs 424;" f
getDistortions src/Dodge/Render.hs 443;" f getDistortions src/Dodge/Render.hs 443;" f
getEdgesCrossing src/Dodge/Path.hs 37;" f getEdgesCrossing src/Dodge/Path.hs 37;" f
@@ -3628,7 +3628,7 @@ getPJStabiliser src/Dodge/HeldUse.hs 1268;" f
getPretty src/AesonHelp.hs 8;" f getPretty src/AesonHelp.hs 8;" f
getPromptTM src/Dodge/Terminal/Type.hs 3;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f
getRoomFromID src/Dodge/Room/Modify.hs 31;" f getRoomFromID src/Dodge/Room/Modify.hs 31;" f
getRoomsFromInts src/Dodge/Room/Tutorial.hs 449;" f getRoomsFromInts src/Dodge/Room/Tutorial.hs 468;" f
getRootItemBounds src/Dodge/Render/HUD.hs 106;" f getRootItemBounds src/Dodge/Render/HUD.hs 106;" f
getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
@@ -3942,7 +3942,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 37;" f
keyPic src/Dodge/Item/Draw/SPic.hs 438;" f keyPic src/Dodge/Item/Draw/SPic.hs 438;" f
keyholeCorridor src/Dodge/Room/Corridor.hs 45;" f keyholeCorridor src/Dodge/Room/Corridor.hs 45;" f
knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 741;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 741;" f
lChasm src/Dodge/Room/Tutorial.hs 138;" f lChasm src/Dodge/Room/Tutorial.hs 143;" f
lConnect src/Dodge/Render/Connectors.hs 43;" f lConnect src/Dodge/Render/Connectors.hs 43;" f
lConnectCol src/Dodge/Render/Connectors.hs 46;" f lConnectCol src/Dodge/Render/Connectors.hs 46;" f
lConnectMulti src/Dodge/Render/Connectors.hs 51;" f lConnectMulti src/Dodge/Render/Connectors.hs 51;" f
@@ -4177,9 +4177,9 @@ mglCreate src/GLHelp.hs 8;" f
mglDelete src/GLHelp.hs 14;" f mglDelete src/GLHelp.hs 14;" f
midBarDecoration src/Dodge/Placement/TopDecoration.hs 23;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 23;" f
midBounds src/Dodge/Room/Foreground.hs 150;" f midBounds src/Dodge/Room/Foreground.hs 150;" f
midChasm src/Dodge/Room/Tutorial.hs 167;" f midChasm src/Dodge/Room/Tutorial.hs 172;" f
midChasmPlatform src/Dodge/Room/Tutorial.hs 189;" f midChasmPlatform src/Dodge/Room/Tutorial.hs 194;" f
midChasmSpit src/Dodge/Room/Tutorial.hs 248;" f midChasmSpit src/Dodge/Room/Tutorial.hs 253;" f
midPad src/Padding.hs 27;" f midPad src/Padding.hs 27;" f
midPadL src/Padding.hs 33;" f midPadL src/Padding.hs 33;" f
midPoint src/Geometry.hs 83;" f midPoint src/Geometry.hs 83;" f
@@ -4352,7 +4352,7 @@ pairsToSCC src/Dodge/Graph.hs 32;" f
paletteToColor src/Color.hs 85;" f paletteToColor src/Color.hs 85;" f
parseItem src/Dodge/Debug/Terminal.hs 62;" f parseItem src/Dodge/Debug/Terminal.hs 62;" f
parseNum src/Dodge/Debug/Terminal.hs 77;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f
passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 531;" f passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 550;" f
pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f
pathEdgeObstructed src/Dodge/Path.hs 66;" f pathEdgeObstructed src/Dodge/Path.hs 66;" f
pauseAndFloatCam src/Dodge/Camera.hs 10;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f
@@ -4457,8 +4457,8 @@ pokeWall src/Shader/Poke.hs 80;" f
pokeWallsWindows src/Shader/Poke.hs 52;" f pokeWallsWindows src/Shader/Poke.hs 52;" f
poly3 src/Picture/Base.hs 76;" f poly3 src/Picture/Base.hs 76;" f
poly3Col src/Picture/Base.hs 80;" f poly3Col src/Picture/Base.hs 80;" f
polyChasm src/Dodge/Room/Tutorial.hs 297;" f polyChasm src/Dodge/Room/Tutorial.hs 316;" f
polyChasmC src/Dodge/Room/Tutorial.hs 309;" f polyChasmC src/Dodge/Room/Tutorial.hs 328;" f
polyCirc src/Shape.hs 47;" f polyCirc src/Shape.hs 47;" f
polyCircx src/Shape.hs 52;" f polyCircx src/Shape.hs 52;" f
polyCornerDist src/Geometry/Polygon.hs 69;" f polyCornerDist src/Geometry/Polygon.hs 69;" f
@@ -4835,7 +4835,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 242;" f
sensorRoom src/Dodge/Room/SensorDoor.hs 29;" f sensorRoom src/Dodge/Room/SensorDoor.hs 29;" f
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 61;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 61;" f
sensorSPic src/Dodge/Machine/Draw.hs 99;" f sensorSPic src/Dodge/Machine/Draw.hs 99;" f
sensorTut src/Dodge/Room/Tutorial.hs 475;" f sensorTut src/Dodge/Room/Tutorial.hs 494;" f
sensorTypeDamages src/Dodge/Machine/Update.hs 288;" f sensorTypeDamages src/Dodge/Machine/Update.hs 288;" f
sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
@@ -4870,7 +4870,7 @@ setSoundVolume src/Sound.hs 159;" f
setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f
setTile src/Dodge/Layout.hs 70;" f setTile src/Dodge/Layout.hs 70;" f
setTiles src/Dodge/Layout.hs 67;" f setTiles src/Dodge/Layout.hs 67;" f
setTreeInts src/Dodge/Room/Tutorial.hs 87;" f setTreeInts src/Dodge/Room/Tutorial.hs 92;" f
setViewDistance src/Dodge/Update/Camera.hs 245;" f setViewDistance src/Dodge/Update/Camera.hs 245;" f
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
setViewport src/Dodge/Render.hs 448;" f setViewport src/Dodge/Render.hs 448;" f
@@ -5050,8 +5050,8 @@ spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 11;" f
spreadOut src/Dodge/Creature/Boid.hs 160;" f spreadOut src/Dodge/Creature/Boid.hs 160;" f
sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f
sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f
sqPlatformChasm src/Dodge/Room/Tutorial.hs 218;" f sqPlatformChasm src/Dodge/Room/Tutorial.hs 223;" f
sqSpitChasm src/Dodge/Room/Tutorial.hs 233;" f sqSpitChasm src/Dodge/Room/Tutorial.hs 238;" f
square src/Geometry/Polygon.hs 56;" f square src/Geometry/Polygon.hs 56;" f
squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f
squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 116;" f squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 116;" f
@@ -5319,13 +5319,13 @@ tryThrust src/Dodge/Projectile/Update.hs 126;" f
tryUseParent src/Dodge/Creature/State.hs 145;" f tryUseParent src/Dodge/Creature/State.hs 145;" f
turnTo src/Dodge/Movement/Turn.hs 8;" f turnTo src/Dodge/Movement/Turn.hs 8;" f
turretItemOffset src/Dodge/Item/HeldOffset.hs 22;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 22;" f
tutAnoTree src/Dodge/Room/Tutorial.hs 52;" f tutAnoTree src/Dodge/Room/Tutorial.hs 53;" f
tutDrop src/Dodge/Room/Tutorial.hs 92;" f tutDrop src/Dodge/Room/Tutorial.hs 97;" f
tutHub src/Dodge/Room/Tutorial.hs 373;" f tutHub src/Dodge/Room/Tutorial.hs 392;" f
tutLight src/Dodge/Room/Tutorial.hs 341;" f tutLight src/Dodge/Room/Tutorial.hs 360;" f
tutRezBox src/Dodge/Room/Tutorial.hs 486;" f tutRezBox src/Dodge/Room/Tutorial.hs 505;" f
tutRoomTree src/Dodge/Floor.hs 20;" f tutRoomTree src/Dodge/Floor.hs 20;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 511;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 530;" f
tweenAngles src/Geometry/Vector.hs 190;" f tweenAngles src/Geometry/Vector.hs 190;" f
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f
@@ -5646,7 +5646,7 @@ yourInv src/Dodge/Base/You.hs 28;" f
yourRootItem src/Dodge/Base/You.hs 22;" f yourRootItem src/Dodge/Base/You.hs 22;" f
yourSelectedItem src/Dodge/Base/You.hs 16;" f yourSelectedItem src/Dodge/Base/You.hs 16;" f
yourStatsInfo src/Dodge/Creature/Info.hs 27;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f
zChasm src/Dodge/Room/Tutorial.hs 151;" f zChasm src/Dodge/Room/Tutorial.hs 156;" f
zConnect src/Dodge/Render/Connectors.hs 18;" f zConnect src/Dodge/Render/Connectors.hs 18;" f
zConnectCol src/Dodge/Render/Connectors.hs 29;" f zConnectCol src/Dodge/Render/Connectors.hs 29;" f
zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f