From 2c978b4de1a858f8d1cdf042a52b118c222626b1 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 1 Jan 2026 23:44:18 +0000 Subject: [PATCH] Move towards resolving picture rendering bug The bug concerns a mutable vector storing the amount of data that has been poked. --- src/Dodge/Combine/Graph.hs | 3 +- src/Dodge/Data/Config.hs | 3 +- src/Dodge/Debug.hs | 27 +- src/Dodge/Debug/Picture.hs | 3 +- src/Dodge/Picture.hs | 2 +- src/Dodge/Picture/SizeInvariant.hs | 2 +- src/Dodge/Render.hs | 4 + src/Dodge/Render/Label.hs | 1 + src/Dodge/Render/Picture.hs | 2 +- src/Dodge/Render/ShapePicture.hs | 79 +++--- src/Dodge/Update.hs | 2 +- src/Picture/Base.hs | 44 +-- src/Picture/Data.hs | 2 +- src/Polyhedra.hs | 10 +- src/Render.hs | 2 +- src/Shader.hs | 2 + src/Shader/Poke.hs | 2 +- src/ShapePicture.hs | 2 +- tags | 439 ++++++++++++++--------------- 19 files changed, 316 insertions(+), 315 deletions(-) diff --git a/src/Dodge/Combine/Graph.hs b/src/Dodge/Combine/Graph.hs index 1b0b2e410..bfcdc0bb1 100644 --- a/src/Dodge/Combine/Graph.hs +++ b/src/Dodge/Combine/Graph.hs @@ -1,6 +1,6 @@ {-# LANGUAGE LambdaCase #-} -module Dodge.Combine.Graph ( combinationsDotGraph) where +module Dodge.Combine.Graph (combinationsDotGraph) where import Dodge.Data.CombAmount import Data.Bifunctor @@ -91,7 +91,6 @@ belowNumX bt = case maxShowX bt of --toCombNodeLabel (CombNode Right{}) = "" combinationsDotGraph :: Text ---combinationsDotGraph = toStrict . printDotGraph . graphToDot nonClusteredParams $ combinationsGraph combinationsDotGraph = toStrict . printDotGraph . graphToDot myParams $ combinationsGraph diff --git a/src/Dodge/Data/Config.hs b/src/Dodge/Data/Config.hs index d8e33ee89..26743f7d7 100644 --- a/src/Dodge/Data/Config.hs +++ b/src/Dodge/Data/Config.hs @@ -98,7 +98,7 @@ data DebugBool | Circ_collision_test | Show_far_wall_detect | Show_walls_near_point_cursor - | Show_walls_near_point_you + | Show_walls_near_you | Show_walls_near_segment | Show_zone_near_point_cursor | Show_zone_circ @@ -106,6 +106,7 @@ data DebugBool | Show_path_between | Show_writable_values | Show_mouse_click_pos + | Muzzle_positions deriving (Eq, Ord, Bounded, Enum, Show) data ResFactor = DoubleRes | FullRes | HalfRes | QuarterRes | EighthRes | SixteenthRes diff --git a/src/Dodge/Debug.hs b/src/Dodge/Debug.hs index b2b17c0f5..7446db330 100644 --- a/src/Dodge/Debug.hs +++ b/src/Dodge/Debug.hs @@ -2,6 +2,13 @@ module Dodge.Debug (debugEvents, drawDebug) where +import Geometry.Data +import Dodge.Render.Label +import Dodge.Data.DoubleTree +import Dodge.HeldUse +import Dodge.DoubleTree +import Dodge.Item.Grammar +import NewInt import AesonHelp import Control.Lens import Control.Monad @@ -55,7 +62,7 @@ debugItem = \case Show_wall_search_rays -> mempty Show_dda_test -> mempty Show_far_wall_detect -> mempty - Show_walls_near_point_you -> mempty + Show_walls_near_you -> mempty Show_zone_near_point_cursor -> mempty Show_zone_circ -> mempty Inspect_wall -> mempty @@ -70,6 +77,7 @@ debugItem = \case Show_mouse_click_pos -> debugMouseClickPos Debug_get -> doDebugGet Debug_put -> debugPutItems + Muzzle_positions -> mempty debugGet :: Universe -> [String] debugGet u = foldMap getPretty $ u ^. uvWorld . cWorld . lWorld . shockwaves @@ -224,7 +232,7 @@ drawDebug u = \case Show_wall_search_rays -> drawWallSearchRays $ _uvWorld u Show_dda_test -> drawDDATest $ _uvWorld u Show_far_wall_detect -> drawFarWallDetect $ _uvWorld u - Show_walls_near_point_you -> drawWallsNearYou $ _uvWorld u + Show_walls_near_you -> drawWallsNearYou $ _uvWorld u Show_zone_near_point_cursor -> drawZoneNearPointCursor $ _uvWorld u Show_zone_circ -> drawZoneCirc $ _uvWorld u Inspect_wall -> drawInspectWalls $ _uvWorld u @@ -239,3 +247,18 @@ drawDebug u = \case Show_path_between -> drawPathBetween u Show_writable_values -> mempty Show_mouse_click_pos -> mempty + Muzzle_positions -> showMuzzlePositions u + + +showMuzzlePositions :: Universe -> Picture +showMuzzlePositions u = fold $ do + cr <- u ^? uvWorld . cWorld . lWorld . creatures . ix 0 + invid <- cr ^? crManipulation . manObject . imRootSelectedItem . unNInt + loc <- invIndents ((\k -> u ^?! uvWorld . cWorld . lWorld . items . ix k) <$> _crInv cr) + ^? ix invid . _2 + return . color red $ setLayer DebugLayer $ reduceLocDT (f cr) loc + where + f cr loc = foldMap g $ map (muzzlePos loc cr) (itemMuzzles $ loc ^. locDT . dtValue . _1) + where + g :: Point3Q -> Picture + g pq = translate3 (pq ^. _1) $ crossPic 5 diff --git a/src/Dodge/Debug/Picture.hs b/src/Dodge/Debug/Picture.hs index 584d6c686..508648c48 100644 --- a/src/Dodge/Debug/Picture.hs +++ b/src/Dodge/Debug/Picture.hs @@ -72,7 +72,7 @@ lineOnScreenCone cfig w p1 p2 = drawWallFace :: Config -> World -> Wall -> Picture drawWallFace cfig w wall - | isRHS sightFrom x y || not (wlIsOpaque wall) = blank + | isRHS sightFrom x y || not (wlIsOpaque wall) = mempty | otherwise = setDepth (-1) . color (withAlpha 0 black) . polygon $ points where (x, y) = _wlLine wall @@ -226,6 +226,7 @@ drawWallsNearYou w = concat $ do return $ setLayer DebugLayer $ foldMap f $ wlsNearPoint p w where f wl = color violet $ thickLine 3 [a, b] + <> uncurryV translate (0.5 *^ (a + b)) (scale 0.05 0.05 . text $ show (_wlID wl)) where (a, b) = _wlLine wl diff --git a/src/Dodge/Picture.hs b/src/Dodge/Picture.hs index 74c1a4e7a..af8a0f7c4 100644 --- a/src/Dodge/Picture.hs +++ b/src/Dodge/Picture.hs @@ -8,7 +8,7 @@ import Picture wedgeOfThickness :: Float -> Point2 -> Point2 -> Picture wedgeOfThickness t x y - | x == y = blank + | x == y = mempty | otherwise = fold [uncurryV translate x $ circleSolid (0.5*t) ,polygon [x +.+ n x y, x -.- n x y, y] diff --git a/src/Dodge/Picture/SizeInvariant.hs b/src/Dodge/Picture/SizeInvariant.hs index ede087d7f..09344baeb 100644 --- a/src/Dodge/Picture/SizeInvariant.hs +++ b/src/Dodge/Picture/SizeInvariant.hs @@ -75,7 +75,7 @@ fixedSizePicClampArrow xbord ybord pic p cfig w = borderPoint = intersectSegPolyFirst campos p bords windowPoint = intersectSegPolyFirst campos p winps arrowPic = case borderPoint of - Nothing -> blank + Nothing -> mempty Just bp -> thickLine 5 [bp, fromMaybe p windowPoint] (V2 x y) = fromMaybe p borderPoint campos = w ^. wCam . camCenter diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 14e2220dc..98e30e164 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -77,6 +77,8 @@ doDrawing' win pdata u = do (0, 0, 0) ws ) + UMV.forM_ pokeCounts $ print + print "--" nCloudVs' <- -- foldM (pokeCloud $ pdata ^. cloudVBO . vboPtr) 0 (w ^. cWorld . lWorld . clouds) V.foldM' (pokeCloud (pdata ^. cloudVBO . vboPtr)) @@ -412,7 +414,9 @@ doDrawing' win pdata u = do glEnable GL_BLEND --glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA -- assume premultiplied alpha + glDisable GL_CULL_FACE renderLayer DebugLayer shadV pokeCounts + glEnable GL_CULL_FACE withArray (scaleMatrix (2 / windowXFloat cfig) (2 / windowYFloat cfig)) $ glNamedBufferSubData (pdata ^. matUBO) 0 64 glDepthMask GL_TRUE diff --git a/src/Dodge/Render/Label.hs b/src/Dodge/Render/Label.hs index 38819f294..97f4f87df 100644 --- a/src/Dodge/Render/Label.hs +++ b/src/Dodge/Render/Label.hs @@ -20,6 +20,7 @@ drawPointLabel p = drawCrossCol :: Color -> Point2 -> Picture drawCrossCol col p = setLayer DebugLayer . color col . uncurryV translate p $ crossPic 5 +--drawCrossCol col p = mempty drawCross :: Point2 -> Picture drawCross = drawCrossCol red diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index 0eaf7a322..b6ae4a6fa 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -149,7 +149,7 @@ drawQuitTerminal x = <> polygonWire (square x) drawEmptySet :: Float -> Picture -drawEmptySet x = line [V2 x x, V2 (- x) (- x)] <> circle x +drawEmptySet x = line [V2 x x, -(V2 x x)] <> circle x drawReturn :: Float -> Picture drawReturn x = diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index 82e4fe779..585566da0 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -1,12 +1,6 @@ --{-# LANGUAGE LambdaCase #-} module Dodge.Render.ShapePicture (worldSPic) where -import Dodge.DoubleTree -import Dodge.Data.DoubleTree -import Dodge.HeldUse -import NewInt -import Dodge.Item.Grammar -import Dodge.Render.Label import Dodge.Debug import Control.Lens import Data.Foldable @@ -27,30 +21,31 @@ import ShapePicture worldSPic :: Config -> Universe -> SPic worldSPic cfig u = - (mempty :!: extraPics cfig u) - <> foldup propSPic (filtOn _prPos _props) - <> foldMap' debrisSPic (filtOn' (xyV3 . _dbPos) _debris) - <> foldup drawProjectile (filtOn (^. pjPos . _xy) _projectiles) - <> foldup drawPulseBall (filtOn _pbPos _pulseBalls) - <> foldup (shiftDraw _blPos _blDir (const drawBlock)) (filtOn _blPos _blocks) - <> foldMap' (shiftDraw _fsPos _fsDir (const _fsSPic)) (filtOn' _fsPos _foreShapes) - <> foldup (drawCreature (lw ^. items)) (filtOn (^. crPos . _xy) _creatures) - <> foldup - (Prelude.uncurry floorItemSPic) - ( IM.intersectionWith - (,) - (lw ^. items) - (filtOn _flItPos _floorItems) - ) - <> foldup btSPic (filtOn _btPos _buttons) - <> foldup (mcSPic (w ^. cWorld)) (filtOn _mcPos _machines) - <> foldMap' drawChasm (w ^. cWorld . chasms) - <> w ^. cWorld . lWorld . tempSPic - <> testSPic cfig u +-- (mempty :!: extraPics cfig u) +-- <> foldup propSPic (filtOn _prPos _props) +-- <> foldMap' debrisSPic (filtOn' (xyV3 . _dbPos) _debris) +-- <> foldup drawProjectile (filtOn (^. pjPos . _xy) _projectiles) +-- <> foldup drawPulseBall (filtOn _pbPos _pulseBalls) +-- <> foldup (shiftDraw _blPos _blDir (const drawBlock)) (filtOn _blPos _blocks) +-- <> foldMap' (shiftDraw _fsPos _fsDir (const _fsSPic)) (filtOn' _fsPos _foreShapes) +-- <> foldup (drawCreature (lw ^. items)) (filtOn (^. crPos . _xy) _creatures) +-- <> foldup +-- (Prelude.uncurry floorItemSPic) +-- ( IM.intersectionWith +-- (,) +-- (lw ^. items) +-- (filtOn _flItPos _floorItems) +-- ) +-- <> foldup btSPic (filtOn _btPos _buttons) +-- <> foldup (mcSPic (w ^. cWorld)) (filtOn _mcPos _machines) +-- <> foldMap' drawChasm (w ^. cWorld . chasms) +-- <> w ^. cWorld . lWorld . tempSPic +-- <> + testSPic cfig u where w = u ^. uvWorld lw = w ^. cWorld . lWorld - foldup = foldMap' + --foldup = foldMap' filtOn f g = IM.filter (pointIsClose . f) (g lw) filtOn' f g = filter (pointIsClose . f) (g lw) pointIsClose = cullPoint cfig w @@ -59,18 +54,24 @@ testSPic :: Config -> Universe -> SPic testSPic cfig u = noShape $ testPic cfig u testPic :: Config -> Universe -> Picture -testPic _ u = fold $ do - cr <- u ^? uvWorld . cWorld . lWorld . creatures . ix 0 --- return mempty - invid <- cr ^? crManipulation . manObject . imRootSelectedItem . unNInt - loc <- invIndents ((\k -> u ^?! uvWorld . cWorld . lWorld . items . ix k) <$> _crInv cr) - ^? ix invid . _2 - return . color red $ setLayer DebugLayer $ reduceLocDT (f cr) loc - where - f cr loc = foldMap g $ map (muzzlePos loc cr) (itemMuzzles $ loc ^. locDT . dtValue . _1) - where - g :: Point3Q -> Picture - g pq = translate3 (pq ^. _1) $ crossPic 5 +testPic _ _ = setLayer DebugLayer + $ mempty +-- <> color white (line [0,10]) +-- <> text "A" + <> translate 20 20 (arc pi 0 10) + <> translate 0 20 (circleSolidCol white red 10) +-- fold $ do +-- cr <- u ^? uvWorld . cWorld . lWorld . creatures . ix 0 +---- return mempty +-- invid <- cr ^? crManipulation . manObject . imRootSelectedItem . unNInt +-- loc <- invIndents ((\k -> u ^?! uvWorld . cWorld . lWorld . items . ix k) <$> _crInv cr) +-- ^? ix invid . _2 +-- return . color red $ setLayer DebugLayer $ reduceLocDT (f cr) loc +-- where +-- f cr loc = foldMap g $ map (muzzlePos loc cr) (itemMuzzles $ loc ^. locDT . dtValue . _1) +-- where +-- g :: Point3Q -> Picture +-- g pq = translate3 (pq ^. _1) $ crossPic 5 drawBlock :: Block -> SPic diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 742bcb120..a3c7ea9cd 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -328,7 +328,7 @@ muzzleWallCheck w cr = fromMaybe cr $ do let ps = reduceLocDT f loc ^.. each . _1 . _xy cp = cr ^. crPos . _xy r <- boundPointsRect (cp : ps) - let wls = uncurry wlsNearRect r w + let wls = uncurry wlsNearRect r w & filter (not . _wlTouchThrough) vs = mapMaybe (g cp wls) ps return $ if null vs then cr diff --git a/src/Picture/Base.hs b/src/Picture/Base.hs index 7f927aa95..22d82d41e 100644 --- a/src/Picture/Base.hs +++ b/src/Picture/Base.hs @@ -5,7 +5,6 @@ module Picture.Base ( module Picture.Data, module Picture.Arc, module Color, - blank, polygon, polygonWire, polygonCol, @@ -17,7 +16,6 @@ module Picture.Base ( --thickArcFull, thickCircle, thickLine, - lineThick, thickLineCol, circleSolid, circleSolidCol, @@ -49,7 +47,6 @@ module Picture.Base ( mirroryz, mirrorxz, overPos, - picMap, fold, ) where @@ -59,18 +56,10 @@ import Geometry import Picture.Arc import Picture.Data -blank :: Picture -{-# INLINE blank #-} -blank = mempty - polygonWire :: [Point2] -> Picture {-# INLINE polygonWire #-} polygonWire ps = line (ps <> [head ps]) -picMap :: (Verx -> Verx) -> Picture -> Picture -{-# INLINE picMap #-} -picMap = map - -- | Expects clockwise input. polygon :: [Point2] -> Picture {-# INLINE polygon #-} @@ -110,7 +99,7 @@ poly3Col = map f . polyToTris color :: RGBA -> Picture -> Picture {-# INLINE color #-} -color = picMap . overCol . const +color = fmap . overCol . const translateH :: Float -> Float -> Point3 -> Point3 {-# INLINE translateH #-} @@ -118,30 +107,30 @@ translateH !a !b (V3 x y z) = V3 (x + a) (y + b) z translate :: Float -> Float -> Picture -> Picture {-# INLINE translate #-} -translate x = picMap . overPos . translateH x +translate x = fmap . overPos . translateH x translate3 :: Point3 -> Picture -> Picture {-# INLINE translate3 #-} -translate3 = picMap . overPos . (+.+.+) +translate3 = fmap . overPos . (+.+.+) tranRot :: V2 Float -> Float -> Picture -> Picture {-# INLINE tranRot #-} -tranRot (V2 x y) r = picMap $ overPos (translateH x y . rotate3 r) +tranRot (V2 x y) r = fmap $ overPos (translateH x y . rotate3 r) setDepth :: Float -> Picture -> Picture {-# INLINE setDepth #-} --setDepth d = map $ second $ overPos (\(x,y,_) -> (x,y,d)) -setDepth d = picMap $ overPos (\(V3 x y _) -> V3 x y d) +setDepth d = fmap $ overPos (\(V3 x y _) -> V3 x y d) addDepth :: Float -> Picture -> Picture {-# INLINE addDepth #-} --addDepth d = map $ second $ overPos (\(x,y,z) -> (x,y,z+d)) -addDepth d = picMap $ overPos (\(V3 x y z) -> V3 x y (z + d)) +addDepth d = fmap $ overPos (\(V3 x y z) -> V3 x y (z + d)) -- TODO change the Int here to a dedicated type setLayer :: Layer -> Picture -> Picture {-# INLINE setLayer #-} -setLayer i = picMap f +setLayer i = fmap f where f v = v{_vxLayer = i} @@ -151,11 +140,11 @@ scale3 a b (V3 x y z) = V3 (x * a) (y * b) z scale :: Float -> Float -> Picture -> Picture {-# INLINE scale #-} -scale x = picMap . overPos . scale3 x +scale x = fmap . overPos . scale3 x rotate :: Float -> Picture -> Picture {-# INLINE rotate #-} -rotate = picMap . overPos . rotate3 +rotate = fmap . overPos . rotate3 makeArc :: Float -> Point2 -> [Point2] {-# INLINE makeArc #-} @@ -246,16 +235,6 @@ lineCol :: [(Point2, RGBA)] -> Picture {-# INLINE lineCol #-} lineCol = thickLineCol 1 -lineThick :: Float -> [Point2] -> Picture -{-# INLINE lineThick #-} -lineThick t = fold . f - where - f (x : y : ys) - | x == y = f (x : ys) - | otherwise = polygon [x +.+ n x y, x -.- n x y, y -.- n x y, y +.+ n x y] : f (y : ys) - f _ = [] - n a b = (t * 0.5) *.* errorNormalizeV 42 (vNormal (a -.- b)) - thickLine :: Float -> [Point2] -> Picture {-# INLINE thickLine #-} thickLine t = fold . f @@ -266,6 +245,7 @@ thickLine t = fold . f where n = (t * 0.5) *.* errorNormalizeV 42 (vNormal (x -.- y)) f _ = [] + --f _ = error "Tried to draw line without at least two points" thickLineCol :: Float -> [(Point2, RGBA)] -> Picture {-# INLINE thickLineCol #-} @@ -348,11 +328,11 @@ charToTuple xoff c -- offset = fromIntegral (fromEnum c) - 32 mirrorxz :: Picture -> Picture -mirrorxz = picMap (overPos flipy) +mirrorxz = fmap (overPos flipy) where flipy (V3 x y z) = V3 x (negate y) z mirroryz :: Picture -> Picture -mirroryz = picMap (overPos flipx) +mirroryz = fmap (overPos flipx) where flipx (V3 x y z) = V3 (negate x) y z diff --git a/src/Picture/Data.hs b/src/Picture/Data.hs index 2c776437f..562ab9d37 100644 --- a/src/Picture/Data.hs +++ b/src/Picture/Data.hs @@ -19,8 +19,8 @@ data Verx = Verx data Layer = BloomLayer --- | BloomNoZWrite | DebugLayer + | DebugLayer1 | FixedCoordLayer deriving (Eq, Ord, Enum, Bounded, Show, Read) --Generic, Flat) diff --git a/src/Polyhedra.hs b/src/Polyhedra.hs index 70d3d3277..b6946525f 100644 --- a/src/Polyhedra.hs +++ b/src/Polyhedra.hs @@ -20,9 +20,6 @@ import Data.List import Data.Bifunctor import Control.Lens -picFormat :: [Verx] -> Picture -picFormat = id - translateXY :: Float -> Float -> Polyhedra -> Polyhedra translateXY x y = pyFaces %~ map (map $ first tran) where @@ -120,12 +117,7 @@ boxABC a b c = faceNA = rhombus c b polyToPics :: Polyhedra -> [Picture] -polyToPics = map helpPoly3D . _pyFaces - -helpPoly3D :: [(Point3, Point4)] -> Picture -helpPoly3D = picFormat . map f . polyToTris - where - f (pos,col) = Verx pos col [] minBound PolyShad +polyToPics = map poly3Col . _pyFaces polysToPic :: [Polyhedra] -> Picture polysToPic = foldMap (fold . polyToPics) diff --git a/src/Render.hs b/src/Render.hs index 522525df2..9a1069095 100644 --- a/src/Render.hs +++ b/src/Render.hs @@ -227,7 +227,7 @@ renderLayer :: UMV.MVector (PrimState IO) Int -> IO () renderLayer layer shads counts = do - let layerCounts = UMV.slice (ln * numLayers) numShads counts + let layerCounts = UMV.slice (ln * numShads) numShads counts MV.imapM_ (drawShaderLay ln layerCounts) shads where ln = fromEnum layer diff --git a/src/Shader.hs b/src/Shader.hs index 030426ab7..1fdbd9e6c 100644 --- a/src/Shader.hs +++ b/src/Shader.hs @@ -1,5 +1,6 @@ module Shader (drawShaderLay) where +--import Picture.Data import Control.Monad.Primitive import qualified Data.Vector.Unboxed.Mutable as UMV import Graphics.GL.Core45 @@ -12,6 +13,7 @@ drawShaderLay l countsVector shadIn fs = do i <- UMV.read countsVector shadIn glUseProgram (fst fs) glUniform1i 0 . fromIntegral $ (l * numSubElements) +-- if l == fromEnum DebugLayer && shadIn == 0 then print i else return () glDrawArrays GL_TRIANGLES (fromIntegral $ l * numSubElements) diff --git a/src/Shader/Poke.hs b/src/Shader/Poke.hs index 871dc0f9a..dac1eccde 100644 --- a/src/Shader/Poke.hs +++ b/src/Shader/Poke.hs @@ -492,7 +492,7 @@ pokeLayVerx vbos counts vx = do where sn = fromEnum shadnum shadnum = _vxShadNum vx - vecPos = theLayer * numLayers + sn + vecPos = theLayer * numShads + sn theLayer = fromEnum $ _vxLayer vx thePos = _vxPos vx theCol = _vxCol vx diff --git a/src/ShapePicture.hs b/src/ShapePicture.hs index f98230cad..957b18062 100644 --- a/src/ShapePicture.hs +++ b/src/ShapePicture.hs @@ -40,7 +40,7 @@ noShape = (mempty :!:) overPosSP :: (Point3 -> Point3) -> SPic -> SPic {-# INLINE overPosSP #-} -overPosSP f = bimap (overPosSH f) (picMap $ overPos f) +overPosSP f = bimap (overPosSH f) (fmap $ overPos f) translateSPxy :: Float -> Float -> SPic -> SPic {-# INLINE translateSPxy #-} diff --git a/tags b/tags index d0228ac12..221266056 100644 --- a/tags +++ b/tags @@ -45,7 +45,7 @@ AimStance src/Dodge/Data/AimStance.hs 10;" t Aiming src/Dodge/Data/Creature/Stance.hs 33;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C -AllRoomClipBoundaries src/Dodge/Data/Config.hs 121;" C +AllRoomClipBoundaries src/Dodge/Data/Config.hs 122;" C AlteRifleSwitch src/Dodge/Data/Item/Params.hs 18;" C Ambush src/Dodge/Data/ActionPlan.hs 130;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 33;" C @@ -60,7 +60,7 @@ AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 31;" C AmmoType src/Dodge/Data/AmmoType.hs 8;" t ArbitraryAction src/Dodge/Data/ActionPlan.hs 119;" C ArcNodeType src/Dodge/Data/LWorld.hs 156;" t -ArcShad src/Picture/Data.hs 34;" C +ArcShad src/Picture/Data.hs 33;" C ArcStep src/Dodge/Data/ArcStep.hs 12;" t Arcing src/Dodge/Data/Item/Params.hs 15;" C ArmourySS src/Dodge/Data/Scenario.hs 112;" C @@ -310,7 +310,7 @@ DebrisChunk src/Dodge/Data/Prop.hs 25;" C DebrisType src/Dodge/Data/Prop.hs 21;" t DebugBool src/Dodge/Data/Config.hs 77;" t DebugItem src/Dodge/Data/Universe.hs 57;" t -DebugLayer src/Picture/Data.hs 23;" C +DebugLayer src/Picture/Data.hs 22;" C Debug_get src/Dodge/Data/Config.hs 80;" C Debug_put src/Dodge/Data/Config.hs 81;" C DecorationShape src/Dodge/Data/GenParams.hs 18;" t @@ -346,7 +346,7 @@ DoorDoNothing src/Dodge/Data/Door.hs 43;" C DoorLerp src/Dodge/Data/Door.hs 43;" C DoorPart src/Dodge/Data/Wall/Structure.hs 12;" C DoorUpdate src/Dodge/Data/Door.hs 43;" t -DoubleRes src/Dodge/Data/Config.hs 111;" C +DoubleRes src/Dodge/Data/Config.hs 112;" C DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 14;" t DrawForceField src/Dodge/Data/Wall.hs 37;" C DrawnWall src/Dodge/Data/Wall.hs 33;" C @@ -365,7 +365,7 @@ Ears src/Dodge/Data/Creature/Perception.hs 45;" C East src/Dodge/Data/CardinalPoint.hs 8;" C East8 src/Dodge/Data/CardinalPoint.hs 30;" C EdgeObstacle src/Dodge/Data/PathGraph.hs 49;" t -EighthRes src/Dodge/Data/Config.hs 111;" C +EighthRes src/Dodge/Data/Config.hs 112;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor.hs 14;" C ElectricSpark src/Dodge/Data/Spark.hs 19;" C @@ -373,7 +373,7 @@ Electrical src/Dodge/Data/Damage.hs 24;" C ElectricalAmmo src/Dodge/Data/AmmoType.hs 12;" C ElectricalBall src/Dodge/Data/EnergyBall/Type.hs 13;" C Electronics src/Dodge/Data/Material.hs 18;" C -EllShad src/Picture/Data.hs 35;" C +EllShad src/Picture/Data.hs 34;" C EncircleFlock src/Dodge/Data/Creature/State.hs 15;" C EnergyBall src/Dodge/Data/EnergyBall.hs 15;" t EnergyBallType src/Dodge/Data/EnergyBall/Type.hs 10;" t @@ -416,7 +416,7 @@ FetchItem src/Dodge/Data/Scenario.hs 11;" C FilterBySoundOrigin src/Dodge/Data/WorldEffect.hs 22;" C FireSpark src/Dodge/Data/Spark.hs 19;" C Fixated src/Dodge/Data/Creature/Perception.hs 60;" C -FixedCoordLayer src/Picture/Data.hs 24;" C +FixedCoordLayer src/Picture/Data.hs 23;" C FixedSelectionWidth src/Dodge/Data/SelectionList.hs 42;" C FlIt src/Dodge/Data/FloorItem.hs 11;" C Flame src/Dodge/Data/Flame.hs 11;" t @@ -455,7 +455,7 @@ ForceField src/Dodge/Data/Material.hs 19;" C ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" t ForegroundShape src/Dodge/Data/ForegroundShape.hs 12;" t FromEdge src/Dodge/Data/Room.hs 49;" C -FullRes src/Dodge/Data/Config.hs 111;" C +FullRes src/Dodge/Data/Config.hs 112;" C FullShadowFidelity src/Shape/Data.hs 19;" C FullSize src/Dodge/Data/Item/Params.hs 26;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C @@ -484,7 +484,7 @@ GenFloat src/Dodge/Data/GenFloat.hs 9;" t GenParams src/Dodge/Data/GenParams.hs 13;" t GenWorld src/Dodge/Data/GenWorld.hs 23;" t GenericFaction src/Dodge/Data/Creature/State.hs 13;" C -GeoObjShads src/Dodge/Data/Config.hs 115;" C +GeoObjShads src/Dodge/Data/Config.hs 116;" C GetTo src/Dodge/Data/ActionPlan.hs 141;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 22;" C @@ -514,7 +514,7 @@ HOMINGMODULE src/Dodge/Data/Item/Combine.hs 100;" C HOSE src/Dodge/Data/Item/Combine.hs 54;" C HP src/Dodge/Data/Creature.hs 63;" C HUD src/Dodge/Data/HUD.hs 29;" t -HalfRes src/Dodge/Data/Config.hs 111;" C +HalfRes src/Dodge/Data/Config.hs 112;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HardQuit src/Dodge/Data/Universe.hs 68;" C HeavySmokeFlare src/Dodge/Data/Muzzle.hs 33;" C @@ -579,7 +579,7 @@ Institution src/Dodge/Data/Scenario.hs 42;" t Int2 src/Geometry/Data.hs 21;" t IntID src/Dodge/Data/Universe.hs 120;" t Intention src/Dodge/Data/Creature.hs 68;" t -IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 121;" C +IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 122;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C IntroScanType src/Dodge/Data/Item/Combine.hs 44;" t InvInt src/Dodge/Data/Item/Location.hs 16;" t @@ -803,6 +803,7 @@ MuzzleStopper src/Dodge/Data/Muzzle.hs 57;" C MuzzleTesla src/Dodge/Data/Muzzle.hs 43;" C MuzzleTractor src/Dodge/Data/Muzzle.hs 44;" C MuzzleUnsafeBlink src/Dodge/Data/Muzzle.hs 55;" C +Muzzle_positions src/Dodge/Data/Config.hs 109;" C MvForward src/Dodge/Data/ActionPlan.hs 34;" C MvTurnToward src/Dodge/Data/ActionPlan.hs 33;" C MvWalking src/Dodge/Data/Creature/Misc.hs 28;" C @@ -838,17 +839,17 @@ NoItTargeting src/Dodge/Data/Item.hs 44;" C NoItemScroll src/Dodge/Data/Item.hs 39;" C NoItemZone src/Dodge/Data/Machine/Sensor.hs 31;" C NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C -NoLighting src/Dodge/Data/Config.hs 118;" C +NoLighting src/Dodge/Data/Config.hs 119;" C NoMouseContext src/Dodge/Data/Input.hs 14;" C NoMvType src/Dodge/Data/Creature/Misc.hs 27;" C -NoObjShads src/Dodge/Data/Config.hs 116;" C +NoObjShads src/Dodge/Data/Config.hs 117;" C NoParams src/Dodge/Data/Item/Params.hs 13;" C NoRightButtonState src/Dodge/Data/RightButtonOptions.hs 14;" C -NoRoomClipBoundaries src/Dodge/Data/Config.hs 121;" C +NoRoomClipBoundaries src/Dodge/Data/Config.hs 122;" C NoSF src/Dodge/Data/ComposedItem.hs 29;" C NoSIDisplayMod src/Dodge/Data/SelectionList.hs 56;" C NoShadowFidelity src/Shape/Data.hs 20;" C -NoShadows src/Dodge/Data/Config.hs 117;" C +NoShadows src/Dodge/Data/Config.hs 118;" C NoSoundFilter src/Dodge/Data/WorldEffect.hs 23;" C NoSubInventory src/Dodge/Data/HUD.hs 15;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C @@ -990,7 +991,7 @@ PenetrateBullet src/Dodge/Data/Bullet.hs 29;" C Perception src/Dodge/Data/Creature/Perception.hs 30;" t PhysicalDamage src/Dodge/Data/Damage/Type.hs 4;" C PhysicalSensor src/Dodge/Data/Machine/Sensor.hs 16;" C -Picture src/Picture/Data.hs 42;" t +Picture src/Picture/Data.hs 41;" t Piercing src/Dodge/Data/Damage.hs 16;" C PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C Placement src/Dodge/Data/GenWorld.hs 104;" t @@ -1010,7 +1011,7 @@ Poison src/Dodge/Data/Damage.hs 26;" C PoisonDamage src/Dodge/Data/Damage/Type.hs 6;" C PoisonGas src/Dodge/Data/Cloud.hs 42;" C PolyEdge src/Dodge/Data/Room.hs 47;" C -PolyShad src/Picture/Data.hs 32;" C +PolyShad src/Picture/Data.hs 31;" C Polyhedra src/Polyhedra/Data.hs 13;" t Polyhedron src/Polyhedra/Data.hs 13;" C PosInf src/Dodge/Data/CardinalPoint.hs 44;" C @@ -1059,7 +1060,7 @@ PutTrigger src/Dodge/Data/GenWorld.hs 46;" C PutWall src/Dodge/Data/GenWorld.hs 53;" C PutWorldUpdate src/Dodge/Data/GenWorld.hs 57;" C QFloat src/Geometry/Data.hs 50;" t -QuarterRes src/Dodge/Data/Config.hs 111;" C +QuarterRes src/Dodge/Data/Config.hs 112;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 8;" C RAM src/Dodge/Data/Item/Combine.hs 73;" C RCommands src/Dodge/Terminal.hs 165;" C @@ -1102,7 +1103,7 @@ ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 29;" C RequireDeadCreatures src/Dodge/Data/Machine/Sensor.hs 36;" C RequireEquipment src/Dodge/Data/Machine/Sensor.hs 35;" C RequireHealth src/Dodge/Data/Machine/Sensor.hs 34;" C -ResFactor src/Dodge/Data/Config.hs 111;" t +ResFactor src/Dodge/Data/Config.hs 112;" t ResearchFacility src/Dodge/Data/Scenario.hs 62;" C ResourceFailure src/Dodge/Data/Scenario.hs 29;" C RespawnDelay src/Dodge/Data/World.hs 64;" C @@ -1120,7 +1121,7 @@ RocketHoming src/Dodge/Data/Projectile.hs 39;" t RocketSmoke src/Dodge/Data/Projectile.hs 52;" t RocketSmoke src/Dodge/Data/Cloud.hs 22;" C Room src/Dodge/Data/GenWorld.hs 119;" t -RoomClipping src/Dodge/Data/Config.hs 121;" t +RoomClipping src/Dodge/Data/Config.hs 122;" t RoomInt src/Dodge/Tree/Shift.hs 26;" t RoomLink src/Dodge/Data/Room.hs 24;" t RoomLinkType src/Dodge/Data/Room.hs 43;" t @@ -1179,11 +1180,11 @@ SensorWithRequirement src/Dodge/Data/Machine/Sensor.hs 30;" C SentinelAt src/Dodge/Data/ActionPlan.hs 152;" C SetLSCol src/Dodge/Data/WorldEffect.hs 29;" C SetTrigger src/Dodge/Data/WorldEffect.hs 27;" C -ShadNum src/Picture/Data.hs 31;" t +ShadNum src/Picture/Data.hs 30;" t Shader src/Shader/Data.hs 51;" t ShaderTexture src/Shader/Data.hs 102;" t ShadowFidelity src/Shape/Data.hs 19;" t -ShadowRendering src/Dodge/Data/Config.hs 114;" t +ShadowRendering src/Dodge/Data/Config.hs 115;" t Shape src/Shape/Data.hs 49;" t ShapeProp src/Dodge/Data/Prop.hs 14;" C ShapeType src/Shape/Data.hs 11;" t @@ -1216,7 +1217,7 @@ Shrunk src/Dodge/Data/Item/Params.hs 26;" C SideCluster src/Dodge/Data/RoomCluster.hs 13;" C SideEffect src/Dodge/Data/Universe.hs 62;" t SimpleEdge src/Dodge/Data/PathGraph.hs 43;" t -SixteenthRes src/Dodge/Data/Config.hs 111;" C +SixteenthRes src/Dodge/Data/Config.hs 112;" C Size src/Shape/Data.hs 23;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C @@ -1334,7 +1335,7 @@ TerrestrialBiome src/Dodge/Data/Scenario.hs 76;" t TeslaArc src/Dodge/Data/TeslaArc.hs 15;" t TeslaBeamCombine src/Dodge/Data/Beam.hs 39;" C TeslaGunFlare src/Dodge/Data/Muzzle.hs 35;" C -TextShad src/Picture/Data.hs 33;" C +TextShad src/Picture/Data.hs 32;" C ThermalSensor src/Dodge/Data/Machine/Sensor.hs 15;" C Tile src/Data/Tile.hs 16;" t Tiled src/Data/Tile.hs 14;" C @@ -2528,7 +2529,7 @@ addArmour src/Dodge/Creature.hs 82;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f addButtonSlowDoor src/Dodge/Room/LongDoor.hs 96;" f addCrGibs src/Dodge/Prop/Gib.hs 17;" f -addDepth src/Picture/Base.hs 136;" f +addDepth src/Picture/Base.hs 125;" f addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 41;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 60;" f addDoorToggleTerminal src/Dodge/Room/Warning.hs 38;" f @@ -2560,7 +2561,7 @@ addToTrunk src/TreeHelp.hs 157;" f addWarningTerminal src/Dodge/Room/Warning.hs 81;" f addZ src/Geometry/Vector3D.hs 89;" f adjustIMZone src/Dodge/Base.hs 81;" f -advanceScrollAmount src/Dodge/Update.hs 443;" f +advanceScrollAmount src/Dodge/Update.hs 453;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f aimDelaySweep src/Dodge/Render/Picture.hs 285;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f @@ -2589,7 +2590,7 @@ angleVV3 src/Geometry/Vector3D.hs 122;" f anyUnusedSpot src/Dodge/PlacementSpot.hs 66;" f anythingHitCirc src/Dodge/Base/Collide.hs 342;" f applyCME src/Dodge/HeldUse.hs 371;" f -applyClip src/Dodge/Debug.hs 130;" f +applyClip src/Dodge/Debug.hs 138;" f applyCreatureDamage src/Dodge/Creature/Damage.hs 14;" f applyEventIO src/Loop.hs 90;" f applyGravityPU src/Dodge/Projectile/Update.hs 41;" f @@ -2599,8 +2600,8 @@ applyMagnetsToBul src/Dodge/Bullet.hs 32;" f applyPastDamages src/Dodge/Creature/State.hs 49;" f applyPosition src/Sound.hs 112;" f applyRecoil src/Dodge/HeldUse.hs 461;" f -applyResFactor src/Dodge/Data/Config.hs 124;" f -applyResFactorF src/Dodge/Data/Config.hs 133;" f +applyResFactor src/Dodge/Data/Config.hs 125;" f +applyResFactorF src/Dodge/Data/Config.hs 134;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 83;" f applySidePush src/Dodge/HeldUse.hs 561;" f applySoundCME src/Dodge/HeldUse.hs 451;" f @@ -2615,10 +2616,10 @@ applyTorqueCME src/Dodge/HeldUse.hs 572;" f applyWorldConfig src/Dodge/Config.hs 55;" f aquamarine src/Color.hs 50;" f arHUD src/Dodge/Item/Scope.hs 134;" f -arc src/Picture/Base.hs 302;" f +arc src/Picture/Base.hs 282;" f arcFull src/Picture/Arc.hs 11;" f arcPart src/Picture/Arc.hs 24;" f -arcSolid src/Picture/Base.hs 291;" f +arcSolid src/Picture/Base.hs 271;" f arcStepwise src/Geometry.hs 326;" f arcStepwisePositive src/Geometry.hs 340;" f arcTest src/Picture/Test.hs 9;" f @@ -2670,7 +2671,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 822;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 231;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -barrelShape src/Dodge/Render/ShapePicture.hs 107;" f +barrelShape src/Dodge/Render/ShapePicture.hs 102;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 407;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 76;" f baseCI src/Dodge/Item/Grammar.hs 158;" f @@ -2701,7 +2702,6 @@ bgunSound src/Dodge/HeldUse.hs 516;" f bindFBO src/Render.hs 235;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 54;" f -blank src/Picture/Base.hs 62;" f blinkAcrossChallenge src/Dodge/Room/BlinkAcross.hs 14;" f blinkActionFail src/Dodge/Creature/Action/Blink.hs 87;" f blinkActionMousePos src/Dodge/Creature/Action/Blink.hs 24;" f @@ -2742,18 +2742,18 @@ bounceSound src/Dodge/Projectile/Update.hs 74;" f boundPoints src/Bound.hs 9;" f boundPointsRect src/Bound.hs 23;" f boundedGrid src/Grid.hs 17;" f -boxABC src/Polyhedra.hs 108;" f +boxABC src/Polyhedra.hs 105;" f boxEdgeIndices src/Shader/Poke.hs 358;" f boxSurfaces src/Shader/Poke.hs 277;" f boxSurfacesIndices src/Shader/Poke.hs 290;" f -boxXYZ src/Polyhedra.hs 94;" f -boxXYZnobase src/Polyhedra.hs 80;" f +boxXYZ src/Polyhedra.hs 91;" f +boxXYZnobase src/Polyhedra.hs 77;" f brainHat src/Dodge/Item/Equipment.hs 73;" f branchRectWith src/Dodge/Room/Branch.hs 15;" f branchWith src/Dodge/Room/Room.hs 77;" f bright src/Color.hs 147;" f brightX src/Color.hs 143;" f -btSPic src/Dodge/Render/ShapePicture.hs 156;" f +btSPic src/Dodge/Render/ShapePicture.hs 151;" f btText src/Dodge/Inventory/SelectionList.hs 242;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPerspectiveMatrixUBO src/Dodge/Render.hs 429;" f @@ -2785,7 +2785,7 @@ cardinalVectors src/Dodge/FloorItem.hs 24;" f cdtPropagateFold src/Dodge/DoubleTree.hs 407;" f ceilingTo src/Geometry/Zone.hs 15;" f cenLasTur src/Dodge/Room/LasTurret.hs 34;" f -centerText src/Picture/Base.hs 187;" f +centerText src/Picture/Base.hs 176;" f centerVaultExplosiveExit src/Dodge/Room/NoNeedWeapon.hs 20;" f centerVaultRoom src/Dodge/Room/Procedural.hs 269;" f centroid src/Geometry/Polygon.hs 169;" f @@ -2794,7 +2794,7 @@ chainPairs src/Geometry.hs 360;" f changeSwapOther src/Dodge/Inventory.hs 141;" f changeSwapSel src/Dodge/Inventory.hs 134;" f changeSwapWith src/Dodge/Inventory.hs 175;" f -charToTuple src/Picture/Base.hs 332;" f +charToTuple src/Picture/Base.hs 312;" f charToTupleGrad src/Picture/Text.hs 18;" f chartreuse src/Color.hs 51;" f chaseCrit src/Dodge/Creature/ChaseCrit.hs 27;" f @@ -2810,13 +2810,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 796;" f +checkEndGame src/Dodge/Update.hs 806;" f 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 93;" f -checkTermDist src/Dodge/Update.hs 355;" f +checkTermDist src/Dodge/Update.hs 365;" 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 @@ -2834,10 +2834,10 @@ circOnAnyCr src/Dodge/Base/Collide.hs 292;" f circOnSeg src/Geometry.hs 101;" f circOnSegNoEndpoints src/Geometry.hs 91;" f circOnSomeWall src/Dodge/Base/Collide.hs 286;" f -circle src/Picture/Base.hs 183;" f +circle src/Picture/Base.hs 172;" f circleDecoration src/Dodge/Placement/TopDecoration.hs 62;" f -circleSolid src/Picture/Base.hs 167;" f -circleSolidCol src/Picture/Base.hs 171;" f +circleSolid src/Picture/Base.hs 156;" f +circleSolidCol src/Picture/Base.hs 160;" f clAlt src/Dodge/Cloud.hs 5;" f clColor src/Shader/Poke/Cloud.hs 39;" f clZoneSize src/Dodge/Zoning/Cloud.hs 24;" f @@ -2869,8 +2869,8 @@ clsNearCirc src/Dodge/Zoning/Cloud.hs 21;" f clsNearPoint src/Dodge/Zoning/Cloud.hs 9;" f clsNearRect src/Dodge/Zoning/Cloud.hs 18;" f clsNearSeg src/Dodge/Zoning/Cloud.hs 15;" f -clusterFormatting src/Dodge/Combine/Graph.hs 123;" f -clusterFunc src/Dodge/Combine/Graph.hs 117;" f +clusterFormatting src/Dodge/Combine/Graph.hs 122;" f +clusterFunc src/Dodge/Combine/Graph.hs 116;" f cogRaised src/Dodge/Creature/Perception.hs 101;" f colCrWall src/Dodge/WallCreatureCollisions.hs 29;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 19;" f @@ -2888,7 +2888,7 @@ collideCircWalls src/Dodge/Base/Collide.hs 253;" f collidePoint src/Dodge/Base/Collide.hs 52;" f collidePointTestFilter src/Dodge/Base/Collide.hs 188;" f collidePointWallsFilter src/Dodge/Base/Collide.hs 202;" f -color src/Picture/Base.hs 111;" f +color src/Picture/Base.hs 100;" f colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorSH src/Shape.hs 233;" f combinationsDotGraph src/Dodge/Combine/Graph.hs 93;" f @@ -2918,8 +2918,8 @@ conEffects src/Dodge/Concurrent.hs 12;" f conLDTToConDT src/Dodge/DoubleTree.hs 22;" f concurrentIS src/Dodge/Update/Input/InGame.hs 292;" f connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 740;" f -constructEdges src/Polyhedra.hs 34;" f -constructEdgesList src/Polyhedra.hs 43;" 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 convexHull src/Geometry/Polygon.hs 142;" f @@ -2942,7 +2942,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 906;" f +crCrSpring src/Dodge/Update.hs 916;" 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 @@ -2973,7 +2973,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 903;" f +crSpring src/Dodge/Update.hs 913;" 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 @@ -3019,7 +3019,7 @@ crsNearRect src/Dodge/Zoning/Creature.hs 40;" f crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 58;" f cubeShape src/Dodge/Block/Debris.hs 110;" f -cullPoint src/Dodge/Render/ShapePicture.hs 123;" f +cullPoint src/Dodge/Render/ShapePicture.hs 118;" f cullPretty src/AesonHelp.hs 14;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f @@ -3078,19 +3078,19 @@ deadUpperBody src/Dodge/Creature/Picture.hs 114;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 720;" f debrisSPic src/Dodge/Prop/Draw.hs 16;" f debrisSize src/Dodge/Block/Debris.hs 83;" f -debugEvent src/Dodge/Debug.hs 37;" f -debugEvents src/Dodge/Debug.hs 22;" f -debugGet src/Dodge/Debug.hs 74;" f -debugItem src/Dodge/Debug.hs 40;" f +debugEvent src/Dodge/Debug.hs 44;" f +debugEvents src/Dodge/Debug.hs 29;" f +debugGet src/Dodge/Debug.hs 82;" f +debugItem src/Dodge/Debug.hs 47;" f debugMenu src/Dodge/Menu.hs 124;" f debugMenuOptions src/Dodge/Menu.hs 130;" f -debugMouseClickPos src/Dodge/Debug.hs 145;" f -debugOn src/Dodge/Data/Config.hs 175;" f -debugPutDraw src/Dodge/Debug.hs 95;" f -debugPutItems src/Dodge/Debug.hs 78;" f -debugPutN src/Dodge/Debug.hs 84;" f -debugShowPath src/Dodge/Debug.hs 105;" f -debugWritableValues src/Dodge/Debug.hs 118;" f +debugMouseClickPos src/Dodge/Debug.hs 153;" f +debugOn src/Dodge/Data/Config.hs 176;" f +debugPutDraw src/Dodge/Debug.hs 103;" f +debugPutItems src/Dodge/Debug.hs 86;" f +debugPutN src/Dodge/Debug.hs 92;" f +debugShowPath src/Dodge/Debug.hs 113;" f +debugWritableValues src/Dodge/Debug.hs 126;" f decodeSensorType src/Dodge/Terminal.hs 81;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f decomposeTree src/Dodge/Tree/Compose.hs 58;" f @@ -3119,7 +3119,7 @@ defaultCWGen src/Dodge/Default/World.hs 62;" f defaultCWorld src/Dodge/Default/World.hs 87;" f defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f -defaultConfig src/Dodge/Data/Config.hs 150;" f +defaultConfig src/Dodge/Data/Config.hs 151;" 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 @@ -3155,7 +3155,7 @@ deleteIMInZone src/Dodge/Base.hs 70;" 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 -denormalEdges src/Polyhedra.hs 136;" f +denormalEdges src/Polyhedra.hs 128;" f destroyAllInvItems src/Dodge/Inventory.hs 53;" f destroyBlock src/Dodge/Block.hs 17;" f destroyDoor src/Dodge/Wall/Damage.hs 69;" f @@ -3188,7 +3188,7 @@ displayFrameTicks src/Dodge/Render/Picture.hs 50;" f displayFreeSlots src/Dodge/DisplayInventory.hs 196;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f displayPulse src/Dodge/Inventory/SelectionList.hs 182;" f -displayTerminalLineString src/Dodge/Update.hs 508;" f +displayTerminalLineString src/Dodge/Update.hs 518;" f dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f distributeAmmoToItem src/Dodge/WorldEffect.hs 152;" f @@ -3218,8 +3218,8 @@ doCrWdAc src/Dodge/CreatureEffect.hs 47;" f doDamage src/Dodge/Creature/State.hs 43;" f doDeathToggle src/Dodge/WorldEffect.hs 101;" f doDeathTriggers src/Dodge/WorldEffect.hs 94;" f -doDebugGet src/Dodge/Debug.hs 98;" f -doDebugPut src/Dodge/Debug.hs 87;" f +doDebugGet src/Dodge/Debug.hs 106;" f +doDebugPut src/Dodge/Debug.hs 95;" f doDebugTest src/Dodge/Update/Input/DebugTest.hs 23;" f doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 38;" f doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 66;" f @@ -3240,7 +3240,7 @@ doHeldUseEffect src/Dodge/HeldUse.hs 353;" f doInPlacements src/Dodge/Layout.hs 87;" f doIndividualPlacements src/Dodge/Layout.hs 101;" f doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 38;" f -doItemTimeScroll src/Dodge/Update.hs 204;" f +doItemTimeScroll src/Dodge/Update.hs 207;" f doLoop src/Loop.hs 60;" f doMagnetBuBu src/Dodge/Bullet.hs 35;" f doModificationEffect src/Dodge/ModificationEffect.hs 7;" f @@ -3260,14 +3260,14 @@ doTestDrawing src/Dodge/Render.hs 40;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doThrust src/Dodge/Projectile/Update.hs 132;" f -doTimeScroll src/Dodge/Update.hs 209;" f +doTimeScroll src/Dodge/Update.hs 212;" f doTmWdWd src/Dodge/WorldEffect.hs 104;" f doWallRotate src/Dodge/Update/Camera.hs 227;" f 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 34;" f -doWorldEvents src/Dodge/Update.hs 452;" f +doWorldEvents src/Dodge/Update.hs 462;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 13;" f doorBetween src/Dodge/Placement/Instance/Door.hs 38;" f @@ -3286,23 +3286,23 @@ drawAnySelectionBox src/Dodge/Render/Picture.hs 130;" f drawArrowDown src/Dodge/Render/Picture.hs 219;" f drawBaseMachine src/Dodge/Machine/Draw.hs 75;" f drawBlip src/Dodge/RadarBlip.hs 16;" f -drawBlock src/Dodge/Render/ShapePicture.hs 76;" f +drawBlock src/Dodge/Render/ShapePicture.hs 71;" f drawBoundingBox src/Dodge/Debug/Picture.hs 358;" f -drawBullet src/Dodge/Render/ShapePicture.hs 162;" f +drawBullet src/Dodge/Render/ShapePicture.hs 157;" f drawButton src/Dodge/Button/Draw.hs 10;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f -drawChasm src/Dodge/Render/ShapePicture.hs 79;" f +drawChasm src/Dodge/Render/ShapePicture.hs 74;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f -drawCliff src/Dodge/Render/ShapePicture.hs 82;" f +drawCliff src/Dodge/Render/ShapePicture.hs 77;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombFilter src/Dodge/Render/Picture.hs 267;" f drawCombineInventory src/Dodge/Render/HUD.hs 186;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 72;" f drawCoord src/Dodge/Debug/Picture.hs 386;" f drawCountMod src/Shader.hs 20;" f -drawCrInfo src/Dodge/Debug.hs 169;" f -drawCrInfo' src/Dodge/Debug.hs 164;" f -drawCreature src/Dodge/Render/ShapePicture.hs 98;" f +drawCrInfo src/Dodge/Debug.hs 177;" f +drawCrInfo' src/Dodge/Debug.hs 172;" f +drawCreature src/Dodge/Render/ShapePicture.hs 93;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 199;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f @@ -3310,7 +3310,7 @@ drawCursorAt src/Dodge/Render/List.hs 73;" f drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 137;" f drawDDATest src/Dodge/Debug/Picture.hs 303;" f drawDamSensor src/Dodge/Machine/Draw.hs 38;" f -drawDebug src/Dodge/Debug.hs 207;" f +drawDebug src/Dodge/Debug.hs 215;" f drawDrag src/Dodge/Render/Picture.hs 198;" f drawDragDrop src/Dodge/Render/Picture.hs 227;" f drawDragPickup src/Dodge/Render/Picture.hs 236;" f @@ -3363,7 +3363,7 @@ drawPathing src/Dodge/Debug/Picture.hs 407;" f drawPlus src/Dodge/Render/Picture.hs 163;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f -drawPulseBall src/Dodge/Render/ShapePicture.hs 90;" f +drawPulseBall src/Dodge/Render/ShapePicture.hs 85;" f drawQuitTerminal src/Dodge/Render/Picture.hs 145;" f drawRBOptions src/Dodge/Render/HUD.hs 249;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f @@ -3388,7 +3388,7 @@ drawTargetingAR src/Dodge/Targeting/Draw.hs 20;" f drawTerminalCursorLink src/Dodge/Render/HUD.hs 386;" f drawTerminalDisplay src/Dodge/Render/HUD.hs 351;" f drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f -drawText src/Picture/Base.hs 235;" f +drawText src/Picture/Base.hs 224;" f drawTitle src/Dodge/Render/MenuScreen.hs 49;" f drawTitleBackground src/Dodge/Render/List.hs 60;" f drawTractorBeam src/Dodge/TractorBeam/Draw.hs 7;" f @@ -3434,7 +3434,7 @@ ebDamage src/Dodge/EnergyBall.hs 85;" f ebEffect src/Dodge/EnergyBall.hs 45;" f ebFlicker src/Dodge/EnergyBall.hs 70;" f ebtToDamage src/Dodge/EnergyBall.hs 93;" f -edgeFormatting src/Dodge/Combine/Graph.hs 129;" f +edgeFormatting src/Dodge/Combine/Graph.hs 128;" f edgeToPic src/Dodge/Debug/Picture.hs 416;" f effectOnEquip src/Dodge/Equipment.hs 32;" f effectOnRemove src/Dodge/Equipment.hs 19;" f @@ -3489,11 +3489,11 @@ explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 688;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 80;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f -extraPics src/Dodge/Render/ShapePicture.hs 128;" f +extraPics src/Dodge/Render/ShapePicture.hs 123;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 90;" f extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 99;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f -faceEdges src/Polyhedra.hs 65;" f +faceEdges src/Polyhedra.hs 62;" f facesToVF src/Polyhedra/Geodesic.hs 70;" f farWallDistDirection src/Dodge/Update/Camera.hs 248;" f fdiv src/ShortShow.hs 41;" f @@ -3505,8 +3505,8 @@ findBoundDists src/Dodge/Update/Camera.hs 255;" f findClosePoint src/Dodge/LevelGen/StaticWalls.hs 155;" f findClosePoint src/Dodge/LevelGen/StaticWalls/Deprecated.hs 74;" f findIndex src/IntMapHelp.hs 86;" f -findReverseEdge src/Polyhedra.hs 50;" f -findReverseEdgeList src/Polyhedra.hs 57;" f +findReverseEdge src/Polyhedra.hs 47;" f +findReverseEdgeList src/Polyhedra.hs 54;" f findWallFreeDropPoint src/Dodge/FloorItem.hs 27;" f findWallsInPolygon src/Dodge/LevelGen/StaticWalls/Deprecated.hs 78;" f findWithIx src/ListHelp.hs 124;" f @@ -3541,7 +3541,7 @@ flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 229;" f -floorItemSPic src/Dodge/Render/ShapePicture.hs 149;" f +floorItemSPic src/Dodge/Render/ShapePicture.hs 144;" f floorTo src/Geometry/Zone.hs 12;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 772;" f @@ -3570,7 +3570,7 @@ fromV3 src/Geometry/Data.hs 63;" f frontArmour src/Dodge/Item/Equipment.hs 38;" f fstV2 src/Geometry/Data.hs 70;" f fuelPack src/Dodge/Item/Equipment.hs 53;" f -functionalUpdate src/Dodge/Update.hs 252;" f +functionalUpdate src/Dodge/Update.hs 255;" f fusePoint src/Dodge/LevelGen/StaticWalls.hs 158;" f fuseWall src/Dodge/LevelGen/StaticWalls.hs 165;" f fuseWallsWith src/Dodge/LevelGen/StaticWalls.hs 172;" f @@ -3584,7 +3584,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomsFromRooms src/Dodge/Layout.hs 149;" f gameplayMenu src/Dodge/Menu.hs 154;" f gameplayMenuOptions src/Dodge/Menu.hs 157;" f -gasEffect src/Dodge/Update.hs 821;" f +gasEffect src/Dodge/Update.hs 831;" f gasType src/Dodge/HeldUse.hs 1109;" f gassesNearPoint src/Dodge/Zoning/Cloud.hs 12;" f generateGenParams src/Dodge/LevelGen/LevelStructure.hs 23;" f @@ -3610,7 +3610,7 @@ getCommands src/Dodge/Terminal.hs 58;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 351;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 338;" f -getDebugMouseOver src/Dodge/Update.hs 413;" f +getDebugMouseOver src/Dodge/Update.hs 423;" f getDistortions src/Dodge/Render.hs 441;" f getEdgesCrossing src/Dodge/Path.hs 37;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1258;" f @@ -3621,7 +3621,7 @@ getLaserDamage src/Dodge/HeldUse.hs 706;" f getLaserPhaseV src/Dodge/HeldUse.hs 703;" f getLinksOfType src/Dodge/RoomLink.hs 41;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f -getMenuMouseContext src/Dodge/Update.hs 425;" f +getMenuMouseContext src/Dodge/Update.hs 435;" f getNodePos src/Dodge/Path.hs 34;" f getPJStabiliser src/Dodge/HeldUse.hs 1245;" f getPretty src/AesonHelp.hs 8;" f @@ -3678,9 +3678,9 @@ gut4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 690;" f gut5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f gut6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 716;" f gyroscope src/Dodge/Item/Scope.hs 156;" f -hackBoldText src/Picture/Base.hs 204;" f -hackDropShadow src/Picture/Base.hs 207;" f -hackInvertText src/Picture/Base.hs 200;" f +hackBoldText src/Picture/Base.hs 193;" f +hackDropShadow src/Picture/Base.hs 196;" f +hackInvertText src/Picture/Base.hs 189;" f hackOutline src/Dodge/Render/Outline.hs 5;" f halfHeight src/Dodge/Base/Window.hs 49;" f halfWidth src/Dodge/Base/Window.hs 49;" f @@ -3731,7 +3731,6 @@ heldItemWeight src/Dodge/Creature/Statistics.hs 80;" f heldPositionInfo src/Dodge/Item/Info.hs 240;" f heldTorqueAmount src/Dodge/HeldUse.hs 588;" f heldTriggerType src/Dodge/BaseTriggerType.hs 27;" f -helpPoly3D src/Polyhedra.hs 125;" f heron src/Geometry.hs 218;" f hiToFloat src/Dodge/Room/Modify/Girder.hs 171;" f highBar src/Dodge/Room/Foreground.hs 89;" f @@ -3858,7 +3857,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 433;" f +isOverTerminalScreen src/Dodge/Update.hs 443;" f isPulseLaser src/Dodge/IsPulseLaser.hs 10;" f isPutID src/Dodge/Placement/Instance/Wall.hs 108;" f isRHS src/Geometry/LHS.hs 32;" f @@ -3949,7 +3948,7 @@ lConnectCol src/Dodge/Render/Connectors.hs 46;" f lConnectMulti src/Dodge/Render/Connectors.hs 51;" f lShape src/Dodge/Placement/Instance/LightSource.hs 54;" f lamp src/Dodge/Creature/Lamp.hs 18;" f -lampCrSPic src/Dodge/Render/ShapePicture.hs 112;" f +lampCrSPic src/Dodge/Render/ShapePicture.hs 107;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 130;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 413;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 726;" f @@ -3995,14 +3994,13 @@ lightSensor src/Dodge/Placement/Instance/Sensor.hs 26;" f lightsToRender src/Dodge/Render/Lights.hs 14;" f lightx4 src/Color.hs 155;" f linGrad src/Geometry/Intersect.hs 241;" f -line src/Picture/Base.hs 241;" f -lineCol src/Picture/Base.hs 245;" f +line src/Picture/Base.hs 230;" f +lineCol src/Picture/Base.hs 234;" f lineGeom src/Dodge/Base.hs 32;" f lineOnScreenCone src/Dodge/Debug/Picture.hs 60;" f lineOrth src/Dodge/Creature/Boid.hs 128;" f lineOutputTerminal src/Dodge/Room/Warning.hs 86;" f lineSplit src/Justify.hs 26;" f -lineThick src/Picture/Base.hs 249;" f lineUp src/Dodge/Creature/Boid.hs 150;" f linksDAGToPath src/Dodge/Room/Path.hs 13;" f linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f @@ -4077,7 +4075,7 @@ magenta src/Color.hs 46;" f main appDodge/Main.hs 28;" f main bench/Bench.hs 15;" f main test/Spec.hs 12;" f -makeArc src/Picture/Base.hs 160;" f +makeArc src/Picture/Base.hs 149;" f makeAttach src/Dodge/Item/Attach.hs 10;" f makeBlip src/Dodge/RadarSweep.hs 70;" f makeBlockDebris src/Dodge/Block/Debris.hs 36;" f @@ -4139,7 +4137,7 @@ maybeClearLoadingScreen src/Dodge/StartNewGame.hs 58;" f maybeDestroyBlock src/Dodge/Wall/Damage.hs 59;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 64;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 568;" f -maybeOpenConsole src/Dodge/Update.hs 131;" f +maybeOpenConsole src/Dodge/Update.hs 134;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/RandomHelp.hs 116;" f maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f @@ -4156,7 +4154,7 @@ mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 126;" f mcProxSensorUpdate src/Dodge/Machine/Update.hs 177;" f mcProxTest src/Dodge/Machine/Update.hs 258;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 219;" f -mcSPic src/Dodge/Render/ShapePicture.hs 159;" f +mcSPic src/Dodge/Render/ShapePicture.hs 154;" f mcShootAuto src/Dodge/HeldUse.hs 1163;" f mcShootLaser src/Dodge/HeldUse.hs 1156;" f mcTypeUpdate src/Dodge/Machine/Update.hs 33;" f @@ -4207,8 +4205,8 @@ miniS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 648;" f miniTree2 src/Dodge/Room/Room.hs 121;" f minimumOn src/FoldlHelp.hs 14;" f mirrorXAxis src/Geometry/Polygon.hs 68;" f -mirrorxz src/Picture/Base.hs 350;" f -mirroryz src/Picture/Base.hs 355;" f +mirrorxz src/Picture/Base.hs 330;" f +mirroryz src/Picture/Base.hs 335;" f missileLaunchS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 616;" f mixColors src/Color.hs 113;" f mixColorsFrac src/Color.hs 109;" f @@ -4253,11 +4251,11 @@ muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 680;" f muzzlePos src/Dodge/HeldUse.hs 766;" f muzzleRandPos src/Dodge/HeldUse.hs 775;" f -muzzleWallCheck src/Dodge/Update.hs 320;" f +muzzleWallCheck src/Dodge/Update.hs 323;" f mvButton src/Dodge/Placement/PlaceSpot.hs 175;" f mvCr src/Dodge/Placement/PlaceSpot.hs 178;" f mvFS src/Dodge/Placement/PlaceSpot.hs 184;" f -mvGust src/Dodge/Update.hs 812;" f +mvGust src/Dodge/Update.hs 822;" f mvLS src/Dodge/Placement/PlaceSpot.hs 219;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f @@ -4266,7 +4264,7 @@ mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f mvProp src/Dodge/Placement/PlaceSpot.hs 172;" f myIntersectLineLine src/Geometry/Intersect.hs 198;" f myIntersectSegSeg src/Geometry/Intersect.hs 176;" f -myParams src/Dodge/Combine/Graph.hs 101;" f +myParams src/Dodge/Combine/Graph.hs 100;" f nRays src/Geometry.hs 182;" f nRaysRad src/Geometry.hs 186;" f nearCollinear src/Dodge/LevelGen/StaticWalls/Deprecated.hs 19;" f @@ -4287,7 +4285,7 @@ nextLayoutInt src/Dodge/Data/MetaTree.hs 43;" f noPic src/ShapePicture.hs 25;" f noShape src/ShapePicture.hs 29;" f noclipCheck src/Dodge/WallCreatureCollisions.hs 23;" f -nodeFormatting src/Dodge/Combine/Graph.hs 145;" f +nodeFormatting src/Dodge/Combine/Graph.hs 144;" f nodesNear src/Dodge/Path.hs 75;" f normalGait src/Dodge/Creature/State/WalkCycle.hs 30;" f normalTo8 src/Shader/Poke.hs 466;" f @@ -4300,12 +4298,12 @@ notLink src/Dodge/Data/Room.hs 72;" f nulgate src/Dodge/Item/Scope.hs 95;" f numDrawableVertices src/Shader/Parameters.hs 34;" f numGLuint src/Shader/Parameters.hs 29;" f -numLayers src/Picture/Data.hs 27;" f +numLayers src/Picture/Data.hs 26;" f numMetaTree src/Dodge/Tree/Compose.hs 119;" f numMetaTree' src/Dodge/Tree/Compose.hs 122;" f numSelfTree src/Dodge/Tree/Compose.hs 107;" f numSelfTree' src/Dodge/Tree/Compose.hs 110;" f -numShads src/Picture/Data.hs 38;" f +numShads src/Picture/Data.hs 37;" f numSubElements src/Shader/Parameters.hs 39;" f numTraversable src/TreeHelp.hs 184;" f obstacleColor src/Dodge/Debug/Picture.hs 263;" f @@ -4315,7 +4313,7 @@ onEquipWristShield src/Dodge/Equipment.hs 37;" f onRemoveWristShield src/Dodge/Equipment.hs 24;" f onXY src/Geometry/Vector3D.hs 130;" f oneH src/Dodge/Creature/Test.hs 96;" f -openConsole src/Dodge/Update.hs 136;" f +openConsole src/Dodge/Update.hs 139;" f optionMenu src/Dodge/Menu.hs 112;" f optionScreenDefaultEffect src/Dodge/Update/Input/ScreenLayer.hs 62;" f optionScreenUpdate src/Dodge/Update/Input/ScreenLayer.hs 53;" f @@ -4336,13 +4334,13 @@ orthogonalPointOnSeg src/Geometry/Intersect.hs 312;" f outLink src/Dodge/RoomLink.hs 120;" f outsideScreenPolygon src/Dodge/Debug/Picture.hs 44;" f outwardIntegers src/Dodge/Base.hs 181;" f -overCol src/Picture/Base.hs 323;" f +overCol src/Picture/Base.hs 303;" f overColObj src/Shape.hs 269;" f overColSH src/Shape.hs 237;" f -overDebugEvent src/Dodge/Debug.hs 31;" f +overDebugEvent src/Dodge/Debug.hs 38;" f overLnkPosDir src/Dodge/RoomLink.hs 115;" f overLnkType src/Dodge/RoomLink.hs 105;" f -overPos src/Picture/Base.hs 318;" f +overPos src/Picture/Base.hs 298;" f overPosObj src/Shape.hs 273;" f overPosSH src/Shape.hs 257;" f overPosSP src/ShapePicture.hs 41;" f @@ -4370,8 +4368,8 @@ pauseGame src/Dodge/Update/Input/InGame.hs 531;" f 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 193;" f -pbFlicker src/Dodge/Update.hs 493;" f +pauseTime src/Dodge/Update.hs 196;" f +pbFlicker src/Dodge/Update.hs 503;" f pbsHit src/Dodge/WorldEvent/ThingsHit.hs 97;" f peZoneSize src/Dodge/Zoning/Pathing.hs 49;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f @@ -4384,8 +4382,6 @@ performAimAt src/Dodge/Creature/Action.hs 103;" f performPathTo src/Dodge/Creature/Action.hs 116;" f performTurnToA src/Dodge/Creature/Action.hs 128;" f perspectiveMatrixb src/MatrixHelper.hs 11;" f -picFormat src/Polyhedra.hs 23;" f -picMap src/Picture/Base.hs 70;" f pickUpItem src/Dodge/Inventory/Add.hs 70;" f pickUpItemAt src/Dodge/Inventory/Add.hs 75;" f pickUpS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 766;" f @@ -4467,8 +4463,8 @@ pokeVerxs src/Shader/Poke.hs 32;" f pokeW src/Shader/Poke.hs 91;" f pokeWall src/Shader/Poke.hs 80;" f pokeWallsWindows src/Shader/Poke.hs 52;" f -poly3 src/Picture/Base.hs 87;" f -poly3Col src/Picture/Base.hs 91;" f +poly3 src/Picture/Base.hs 76;" f +poly3Col src/Picture/Base.hs 80;" f polyChasm src/Dodge/Room/Tutorial.hs 184;" f polyChasmC src/Dodge/Room/Tutorial.hs 193;" f polyCirc src/Shape.hs 47;" f @@ -4477,16 +4473,16 @@ polyCornerDist src/Geometry/Polygon.hs 61;" f polyOrthDist src/Geometry/Polygon.hs 51;" f polyPointsIntersect src/Geometry/ConvexPoly.hs 60;" f polyPointsOverlap src/Geometry/ConvexPoly.hs 53;" f -polyToEdges src/Polyhedra.hs 133;" f -polyToGeoRender src/Polyhedra.hs 142;" f -polyToPics src/Polyhedra.hs 122;" f +polyToEdges src/Polyhedra.hs 125;" f +polyToGeoRender src/Polyhedra.hs 134;" f +polyToPics src/Polyhedra.hs 119;" f polyToTris src/Geometry/Triangulate.hs 7;" f polyToTris' src/Geometry.hs 172;" f polyToTris'' src/Geometry/Triangulate.hs 15;" f -polygon src/Picture/Base.hs 75;" f -polygonCol src/Picture/Base.hs 81;" f -polygonWire src/Picture/Base.hs 66;" f -polysToPic src/Polyhedra.hs 130;" f +polygon src/Picture/Base.hs 64;" f +polygonCol src/Picture/Base.hs 70;" f +polygonWire src/Picture/Base.hs 59;" f +polysToPic src/Polyhedra.hs 122;" f popScreen src/Dodge/Menu/PushPop.hs 6;" f posRms src/Dodge/Tree/Shift.hs 44;" f posSelSecYint src/Dodge/SelectionSections.hs 147;" f @@ -4546,7 +4542,7 @@ pushOutFromWall src/Dodge/WallCreatureCollisions.hs 101;" f pushOutFromWalls src/Dodge/WallCreatureCollisions.hs 64;" f pushR src/DoubleStack.hs 24;" f pushScreen src/Dodge/Menu/PushPop.hs 9;" f -pushYouOutFromWalls src/Dodge/Update.hs 317;" f +pushYouOutFromWalls src/Dodge/Update.hs 320;" f putAutoDoor src/Dodge/Placement/Instance/Door.hs 87;" f putBlockN src/Dodge/Placement/Instance/Wall.hs 120;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 111;" f @@ -4581,7 +4577,7 @@ rLauncher src/Dodge/Item/Held/Launcher.hs 14;" f rLauncherX src/Dodge/Item/Held/Launcher.hs 30;" f rToOnward src/Dodge/Cleat.hs 21;" f radToDeg src/Geometry/Vector.hs 123;" f -radiusSpring src/Dodge/Update.hs 892;" f +radiusSpring src/Dodge/Update.hs 902;" f randBlockBreakWeapon src/Dodge/Item/Random.hs 7;" f randC1 src/Dodge/Placement/Instance/Creature.hs 8;" f randDirPS src/Dodge/PlacementSpot.hs 56;" f @@ -4603,7 +4599,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 668;" f +randWallReflect src/Dodge/Update.hs 678;" f randomChallenges src/Dodge/Room/Start.hs 63;" f randomCompass src/Dodge/Layout.hs 60;" f randomFourCornerRoom src/Dodge/Room/Procedural.hs 246;" f @@ -4703,7 +4699,7 @@ rezColor src/Dodge/Room/RezBox.hs 138;" f rezInvBox src/Dodge/Room/RezBox.hs 145;" f rezText src/Dodge/Story.hs 4;" f rezText' src/Dodge/Story.hs 17;" f -rhombus src/Polyhedra.hs 72;" f +rhombus src/Polyhedra.hs 69;" f rifle src/Dodge/Item/Held/Cane.hs 19;" f right src/DoubleStack.hs 16;" f rightChildList src/Dodge/Item/Grammar.hs 191;" f @@ -4743,7 +4739,7 @@ rose src/Color.hs 47;" f rotD src/Padding.hs 44;" f rotMatr src/MatrixHelper.hs 79;" f rotU src/Padding.hs 39;" f -rotate src/Picture/Base.hs 156;" f +rotate src/Picture/Base.hs 145;" f rotate3 src/Geometry/Vector3D.hs 48;" f rotate3x src/Geometry/Vector3D.hs 60;" f rotate3y src/Geometry/Vector3D.hs 66;" f @@ -4759,7 +4755,7 @@ rotateToOverlappingWall src/Dodge/Update/Camera.hs 216;" f rotateToZ src/Quaternion.hs 35;" f rotateV src/Geometry/Vector.hs 106;" f rotateVAround src/Geometry/Vector.hs 113;" f -rotateXY src/Polyhedra.hs 31;" f +rotateXY src/Polyhedra.hs 28;" f roundPoint2 src/Geometry/Intersect.hs 237;" f roundTank src/Dodge/Placement/Instance/Tank.hs 26;" f roundTankCross src/Dodge/Placement/Instance/Tank.hs 32;" f @@ -4792,8 +4788,8 @@ saveSlotPath src/Dodge/Save.hs 63;" f saveWorldInSlot src/Dodge/Save.hs 68;" f sawtoothFailS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 786;" f scToTS src/Dodge/Event/Input.hs 34;" f -scale src/Picture/Base.hs 152;" f -scale3 src/Picture/Base.hs 148;" f +scale src/Picture/Base.hs 141;" f +scale3 src/Picture/Base.hs 137;" f scaleMat src/MatrixHelper.hs 71;" f scaleMatrix src/MatrixHelper.hs 68;" f scaleSH src/Shape.hs 265;" f @@ -4810,8 +4806,8 @@ scrollAugInvSel src/Dodge/Inventory.hs 191;" f scrollAugNextInSection src/Dodge/Inventory.hs 204;" f scrollRBOption src/Dodge/Update/Scroll.hs 137;" f scrollSelectionSections src/Dodge/SelectionSections.hs 28;" f -scrollTimeBack src/Dodge/Update.hs 219;" f -scrollTimeForward src/Dodge/Update.hs 236;" f +scrollTimeBack src/Dodge/Update.hs 222;" f +scrollTimeForward src/Dodge/Update.hs 239;" f seagullBarkS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 576;" f seagullBarkTransformedS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 530;" f seagullChatter1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 596;" f @@ -4850,22 +4846,22 @@ sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 82;" f sentinelFireType src/Dodge/Creature/SentinelAI.hs 49;" f setAimPosture src/Dodge/Creature/YourControl.hs 145;" f setChannelPos src/Sound.hs 151;" f -setClickWorldPos src/Dodge/Update.hs 106;" f -setClip src/Dodge/Debug.hs 193;" f -setClusterID src/Dodge/Combine/Graph.hs 114;" f -setDepth src/Picture/Base.hs 131;" f +setClickWorldPos src/Dodge/Update.hs 109;" f +setClip src/Dodge/Debug.hs 201;" f +setClusterID src/Dodge/Combine/Graph.hs 113;" f +setDepth src/Picture/Base.hs 120;" f setDirPS src/Dodge/PlacementSpot.hs 49;" f setFallback src/Dodge/PlacementSpot.hs 125;" f setInLinks src/Dodge/RoomLink.hs 53;" f setInLinksByType src/Dodge/RoomLink.hs 72;" f setInLinksPD src/Dodge/RoomLink.hs 92;" f setInvPosFromSS src/Dodge/Inventory/Location.hs 92;" f -setLayer src/Picture/Base.hs 142;" f +setLayer src/Picture/Base.hs 131;" f setLinkType src/Dodge/RoomLink.hs 78;" f setLinkTypePD src/Dodge/RoomLink.hs 85;" f setMusicVolume src/Sound.hs 163;" f setMvPos src/Dodge/Creature/ReaderUpdate.hs 58;" f -setOldPos src/Dodge/Update.hs 527;" f +setOldPos src/Dodge/Update.hs 537;" f setOutLinks src/Dodge/RoomLink.hs 50;" f setOutLinksByType src/Dodge/RoomLink.hs 75;" f setOutLinksPD src/Dodge/RoomLink.hs 95;" f @@ -4913,7 +4909,7 @@ shellShape src/Dodge/Projectile/Draw.hs 35;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 77;" f shiftByV2 src/Dodge/PlacementSpot.hs 250;" f shiftChildren src/Dodge/Tree/Compose.hs 44;" f -shiftDraw src/Dodge/Render/ShapePicture.hs 117;" f +shiftDraw src/Dodge/Render/ShapePicture.hs 112;" f shiftInBy src/Dodge/PlacementSpot.hs 247;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 310;" f shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 355;" f @@ -4956,6 +4952,7 @@ showInt src/Dodge/Item/Info.hs 75;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f showInventoryPathing src/Dodge/Item/Display.hs 86;" f showManObj src/Dodge/TestString.hs 54;" f +showMuzzlePositions src/Dodge/Debug.hs 253;" f showTerminalError src/Dodge/Debug/Terminal.hs 80;" f showTimeFlow src/Dodge/TestString.hs 77;" f shrinkPolyOnEdges src/Geometry/Polygon.hs 175;" f @@ -4965,7 +4962,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 897;" f +simpleCrSprings src/Dodge/Update.hs 907;" f simpleTermMessage src/Dodge/Terminal.hs 275;" f sineRaisePitchOneSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 752;" f sineRaisePitchTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 788;" f @@ -5081,7 +5078,7 @@ ssSetCursor src/Dodge/SelectionSections.hs 59;" f ssfold src/FoldableHelp.hs 105;" f stackPicturesAt src/Dodge/Render/List.hs 95;" f stackPicturesAtOff src/Dodge/Render/List.hs 98;" f -stackText src/Picture/Base.hs 191;" f +stackText src/Picture/Base.hs 180;" f stackedInventory src/Dodge/Creature.hs 309;" f startCr src/Dodge/Creature.hs 90;" f startCrafts src/Dodge/Room/Start.hs 93;" f @@ -5111,13 +5108,13 @@ strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 51;" f strictify src/MaybeHelp.hs 35;" f strideRot src/Dodge/Item/HeldOffset.hs 66;" f -stringToList src/Picture/Base.hs 328;" f +stringToList src/Picture/Base.hs 308;" f stringToListGrad src/Picture/Text.hs 12;" f stripZ src/Geometry/Vector3D.hs 97;" f subInvX src/Dodge/ListDisplayParams.hs 47;" f subMap src/TreeHelp.hs 119;" f subZipWith src/Dodge/Placement/Instance/Wall.hs 94;" f -succB src/Dodge/Debug.hs 113;" f +succB src/Dodge/Debug.hs 121;" f swapAnyExtraSelection src/Dodge/Inventory/Swap.hs 57;" f swapInOutLinks src/Dodge/RoomLink.hs 98;" f swapIndices src/ListHelp.hs 50;" f @@ -5170,29 +5167,29 @@ teslaGunPic src/Dodge/Item/Draw/SPic.hs 410;" f teslaParams src/Dodge/Item/Held/BatteryGuns.hs 25;" f testEvent src/Dodge/Event/Test.hs 11;" f testInventory src/Dodge/Creature.hs 290;" f -testPic src/Dodge/Render/ShapePicture.hs 61;" f -testSPic src/Dodge/Render/ShapePicture.hs 58;" f +testPic src/Dodge/Render/ShapePicture.hs 55;" f +testSPic src/Dodge/Render/ShapePicture.hs 52;" f testStringInit src/Dodge/TestString.hs 34;" f -text src/Picture/Base.hs 196;" f +text src/Picture/Base.hs 185;" f textGrad src/Picture/Text.hs 5;" f textInputBlurb src/Dodge/Terminal.hs 43;" f textInputFocus src/Dodge/InputFocus.hs 11;" f -textJustifyCenter src/Picture/Base.hs 227;" f -textJustifyLeft src/Picture/Base.hs 223;" f -textJustifyRight src/Picture/Base.hs 213;" f -textRight src/Picture/Base.hs 218;" f +textJustifyCenter src/Picture/Base.hs 216;" f +textJustifyLeft src/Picture/Base.hs 212;" f +textJustifyRight src/Picture/Base.hs 202;" f +textRight src/Picture/Base.hs 207;" f textTerminal src/Dodge/Terminal.hs 40;" f -textVMirror src/Picture/Base.hs 231;" f -tflat2 src/Picture/Data.hs 56;" f -tflat3 src/Picture/Data.hs 60;" f -tflat4 src/Picture/Data.hs 64;" f +textVMirror src/Picture/Base.hs 220;" f +tflat2 src/Picture/Data.hs 55;" f +tflat3 src/Picture/Data.hs 59;" f +tflat4 src/Picture/Data.hs 63;" f theCleanup appDodge/Main.hs 65;" f theColumns src/Dodge/Tree/Shift.hs 146;" f theUpdateStep appDodge/Main.hs 101;" f -thickArc src/Picture/Base.hs 313;" f -thickCircle src/Picture/Base.hs 287;" f -thickLine src/Picture/Base.hs 259;" f -thickLineCol src/Picture/Base.hs 270;" f +thickArc src/Picture/Base.hs 293;" f +thickCircle src/Picture/Base.hs 267;" f +thickLine src/Picture/Base.hs 238;" f +thickLineCol src/Picture/Base.hs 250;" f thinHighBar src/Dodge/Room/Foreground.hs 77;" f thingHit src/Dodge/WorldEvent/ThingsHit.hs 118;" f thingHitFilt src/Dodge/WorldEvent/ThingsHit.hs 106;" f @@ -5206,7 +5203,7 @@ throwItem src/Dodge/Creature/Action.hs 191;" f tileTexCoords src/Tile.hs 11;" f tilesFromRooms src/Dodge/Layout.hs 196;" f tilesToLine src/Shader/AuxAddition.hs 66;" f -timeFlowUpdate src/Dodge/Update.hs 179;" f +timeFlowUpdate src/Dodge/Update.hs 182;" f timeScroller src/Dodge/Item/Held/Utility.hs 42;" f timeStopper src/Dodge/Item/Held/Utility.hs 39;" f tinMag src/Dodge/Item/Ammo.hs 28;" f @@ -5261,14 +5258,14 @@ tractorGun src/Dodge/Item/Held/BatteryGuns.hs 53;" f tractorGunPic src/Dodge/Item/Draw/SPic.hs 416;" f tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f -tranRot src/Picture/Base.hs 127;" f +tranRot src/Picture/Base.hs 116;" f transMat src/MatrixHelper.hs 87;" f transToHandle src/Dodge/Item/HeldOffset.hs 27;" f -translate src/Picture/Base.hs 119;" f -translate3 src/Picture/Base.hs 123;" f +translate src/Picture/Base.hs 108;" f +translate3 src/Picture/Base.hs 112;" f translateFloatingCamera src/Dodge/Update/Camera.hs 48;" f translateFloatingCameraKeys src/Dodge/Update/Camera.hs 66;" f -translateH src/Picture/Base.hs 115;" f +translateH src/Picture/Base.hs 104;" f translatePointToLeftHand src/Dodge/Creature/HandPos.hs 76;" f translatePointToRightHand src/Dodge/Creature/HandPos.hs 37;" f translateSH src/Shape.hs 241;" f @@ -5283,7 +5280,7 @@ translateToLeftHand src/Dodge/Creature/HandPos.hs 79;" f translateToLeftLeg src/Dodge/Creature/HandPos.hs 98;" f translateToRightHand src/Dodge/Creature/HandPos.hs 55;" f translateToRightLeg src/Dodge/Creature/HandPos.hs 113;" f -translateXY src/Polyhedra.hs 26;" f +translateXY src/Polyhedra.hs 23;" f trapezionBWHW src/Geometry/Polygon.hs 26;" f treeAttachDeep src/TreeHelp.hs 193;" f treeChildNums src/TreeHelp.hs 130;" f @@ -5358,7 +5355,7 @@ 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 -updateAimPos src/Dodge/Update.hs 342;" f +updateAimPos src/Dodge/Update.hs 352;" f updateAllNodes src/TreeHelp.hs 86;" f updateArc src/Dodge/Tesla.hs 44;" f updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 484;" f @@ -5368,48 +5365,48 @@ updateBaseWheelEvent src/Dodge/Update/Scroll.hs 30;" f updateBounds src/Dodge/Update/Camera.hs 265;" f updateBulVel src/Dodge/Bullet.hs 57;" f updateBullet src/Dodge/Bullet.hs 22;" f -updateBullets src/Dodge/Update.hs 590;" f +updateBullets src/Dodge/Update.hs 600;" f updateCamera src/Dodge/Update/Camera.hs 31;" f updateCloseObjects src/Dodge/Inventory.hs 115;" f -updateCloud src/Dodge/Update.hs 825;" f -updateClouds src/Dodge/Update.hs 694;" f +updateCloud src/Dodge/Update.hs 835;" f +updateClouds src/Dodge/Update.hs 704;" 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 562;" f -updateCreatureSoundPositions src/Dodge/Update.hs 541;" f -updateCreatureStride src/Dodge/Update.hs 336;" f -updateCreatureStrides src/Dodge/Update.hs 333;" f -updateDebris src/Dodge/Update.hs 597;" f +updateCreatureGroups src/Dodge/Update.hs 572;" f +updateCreatureSoundPositions src/Dodge/Update.hs 551;" f +updateCreatureStride src/Dodge/Update.hs 346;" f +updateCreatureStrides src/Dodge/Update.hs 343;" f +updateDebris src/Dodge/Update.hs 607;" f updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f -updateDebugMessageOffset src/Dodge/Update.hs 100;" f -updateDelayedEvents src/Dodge/Update.hs 926;" f +updateDebugMessageOffset src/Dodge/Update.hs 103;" f +updateDelayedEvents src/Dodge/Update.hs 936;" f updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f updateDistortion src/Dodge/Distortion.hs 8;" f -updateDistortions src/Dodge/Update.hs 583;" f +updateDistortions src/Dodge/Update.hs 593;" f updateDoor src/Dodge/Door.hs 22;" f -updateDoors src/Dodge/Update.hs 347;" f -updateDust src/Dodge/Update.hs 872;" f -updateDusts src/Dodge/Update.hs 700;" f +updateDoors src/Dodge/Update.hs 357;" f +updateDust src/Dodge/Update.hs 882;" f +updateDusts src/Dodge/Update.hs 710;" f updateEdge src/Dodge/Path.hs 43;" f updateEdgeWallObs src/Dodge/Update/WallDamage.hs 39;" f updateEdgesWall src/Dodge/Update/WallDamage.hs 23;" f updateEdgesWall' src/Dodge/Update/WallDamage.hs 36;" f updateEnergyBall src/Dodge/EnergyBall.hs 31;" f -updateEnergyBalls src/Dodge/Update.hs 685;" f +updateEnergyBalls src/Dodge/Update.hs 695;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 511;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateFlame src/Dodge/Flame.hs 19;" f -updateFlames src/Dodge/Update.hs 682;" f +updateFlames src/Dodge/Update.hs 692;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f updateFunctionKey src/Dodge/Update/Input/InGame.hs 368;" f updateFunctionKeys src/Dodge/Update/Input/InGame.hs 364;" f -updateGas src/Dodge/Update.hs 847;" f -updateGasses src/Dodge/Update.hs 697;" f -updateGusts src/Dodge/Update.hs 809;" f -updateIMl src/Dodge/Update.hs 556;" f -updateIMl' src/Dodge/Update.hs 559;" f +updateGas src/Dodge/Update.hs 857;" f +updateGasses src/Dodge/Update.hs 707;" f +updateGusts src/Dodge/Update.hs 819;" f +updateIMl src/Dodge/Update.hs 566;" f +updateIMl' src/Dodge/Update.hs 569;" f updateInGameCamera src/Dodge/Update/Camera.hs 84;" f updateInitialPressInGame src/Dodge/Update/Input/InGame.hs 434;" f updateInt2Map src/Dodge/Zoning/Base.hs 94;" f @@ -5422,32 +5419,32 @@ updateKeysInTerminal src/Dodge/Update/Input/InGame.hs 387;" f updateKeysTextInputTerminal src/Dodge/Update/Input/InGame.hs 410;" f updateLampoid src/Dodge/Lampoid.hs 13;" f updateLaser src/Dodge/Laser/Update.hs 11;" f -updateLasers src/Dodge/Update.hs 459;" f +updateLasers src/Dodge/Update.hs 469;" f updateLeftParentSF src/Dodge/Item/Grammar.hs 170;" f updateLinearShockwave src/Dodge/LinearShockwave/Update.hs 8;" f updateLongPressInGame src/Dodge/Update/Input/InGame.hs 447;" f updateMachine src/Dodge/Machine/Update.hs 25;" f -updateMagnets src/Dodge/Update.hs 350;" f +updateMagnets src/Dodge/Update.hs 360;" f updateMouseClickInGame src/Dodge/Update/Input/InGame.hs 204;" f -updateMouseContext src/Dodge/Update.hs 363;" f -updateMouseContextGame src/Dodge/Update.hs 368;" f +updateMouseContext src/Dodge/Update.hs 373;" f +updateMouseContextGame src/Dodge/Update.hs 378;" f updateMouseHeldInGame src/Dodge/Update/Input/InGame.hs 97;" f updateMouseInGame src/Dodge/Update/Input/InGame.hs 87;" f updateMouseReleaseInGame src/Dodge/Update/Input/InGame.hs 167;" f -updateObjCatMaybes src/Dodge/Update.hs 574;" f -updateObjMapMaybe src/Dodge/Update.hs 567;" f -updatePastWorlds src/Dodge/Update.hs 448;" f +updateObjCatMaybes src/Dodge/Update.hs 584;" f +updateObjMapMaybe src/Dodge/Update.hs 577;" f +updatePastWorlds src/Dodge/Update.hs 458;" f updatePreload src/Preload/Update.hs 21;" f updateProjectile src/Dodge/Projectile/Update.hs 26;" f updatePulse src/Dodge/Creature/Update.hs 123;" f -updatePulseBall src/Dodge/Update.hs 473;" f -updatePulseLaser src/Dodge/Update.hs 637;" f -updatePulseLasers src/Dodge/Update.hs 468;" f +updatePulseBall src/Dodge/Update.hs 483;" f +updatePulseLaser src/Dodge/Update.hs 647;" f +updatePulseLasers src/Dodge/Update.hs 478;" f updateRBList src/Dodge/Inventory/RBList.hs 22;" f updateRadarBlip src/Dodge/RadarBlip.hs 11;" f -updateRadarBlips src/Dodge/Update.hs 586;" f +updateRadarBlips src/Dodge/Update.hs 596;" f updateRadarSweep src/Dodge/RadarSweep.hs 40;" f -updateRadarSweeps src/Dodge/Update.hs 688;" f +updateRadarSweeps src/Dodge/Update.hs 698;" f updateRandNode src/TreeHelp.hs 109;" f updateRenderSplit appDodge/Main.hs 104;" f updateRightParentSF src/Dodge/Item/Grammar.hs 181;" f @@ -5457,30 +5454,30 @@ updateScrollTestValue src/Dodge/ScrollValue.hs 6;" f updateSection src/Dodge/DisplayInventory.hs 262;" f updateSectionsPositioning src/Dodge/DisplayInventory.hs 241;" f updateShockwave src/Dodge/Shockwave/Update.hs 8;" f -updateShockwaves src/Dodge/Update.hs 679;" f +updateShockwaves src/Dodge/Update.hs 689;" 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 691;" f -updateTerminal src/Dodge/Update.hs 511;" f -updateTeslaArc src/Dodge/Update.hs 607;" f -updateTeslaArcs src/Dodge/Update.hs 604;" f +updateSparks src/Dodge/Update.hs 701;" f +updateTerminal src/Dodge/Update.hs 521;" f +updateTeslaArc src/Dodge/Update.hs 617;" f +updateTeslaArcs src/Dodge/Update.hs 614;" f updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f -updateTractorBeams src/Dodge/Update.hs 676;" f +updateTractorBeams src/Dodge/Update.hs 686;" f updateTurret src/Dodge/Machine/Update.hs 56;" f -updateUniverse src/Dodge/Update.hs 79;" f -updateUniverseFirst src/Dodge/Update.hs 90;" f -updateUniverseLast src/Dodge/Update.hs 141;" f -updateUniverseMid src/Dodge/Update.hs 161;" f +updateUniverse src/Dodge/Update.hs 82;" f +updateUniverseFirst src/Dodge/Update.hs 93;" f +updateUniverseLast src/Dodge/Update.hs 144;" f +updateUniverseMid src/Dodge/Update.hs 164;" f updateUseInputInGame src/Dodge/Update/Input/InGame.hs 46;" f updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 24;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 11;" f updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f updateWheelEvent src/Dodge/Update/Scroll.hs 21;" f -updateWheelEvents src/Dodge/Update.hs 438;" f -updateWorldEventFlag src/Dodge/Update.hs 125;" f -updateWorldEventFlags src/Dodge/Update.hs 113;" f +updateWheelEvents src/Dodge/Update.hs 448;" f +updateWorldEventFlag src/Dodge/Update.hs 128;" f +updateWorldEventFlags src/Dodge/Update.hs 116;" f upperBody src/Dodge/Creature/Picture.hs 121;" f upperBox src/Shape.hs 152;" f upperBoxHalf src/Shape.hs 218;" f @@ -5617,7 +5614,7 @@ wlsNearSeg src/Dodge/Zoning/Wall.hs 42;" f wordsBy src/ListHelp.hs 117;" f worldPosToResOffset src/Dodge/Base/Coordinate.hs 29;" f worldPosToScreen src/Dodge/Base/Coordinate.hs 22;" f -worldSPic src/Dodge/Render/ShapePicture.hs 28;" f +worldSPic src/Dodge/Render/ShapePicture.hs 22;" f worldToGenWorld src/Dodge/LevelGen/LevelStructure.hs 14;" f wpAdd src/Dodge/Room/RezBox.hs 148;" f wrench1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 522;" f @@ -5653,11 +5650,11 @@ zeroZ src/Geometry/Vector.hs 9;" f zipArcs src/Dodge/Tesla.hs 52;" f zipCount src/Dodge/Tree/Shift.hs 136;" f zoneCloud src/Dodge/Zoning/Cloud.hs 33;" f -zoneClouds src/Dodge/Update.hs 500;" f +zoneClouds src/Dodge/Update.hs 510;" f zoneCreature src/Dodge/Zoning/Creature.hs 56;" f -zoneCreatures src/Dodge/Update.hs 537;" f +zoneCreatures src/Dodge/Update.hs 547;" f zoneDust src/Dodge/Zoning/Cloud.hs 57;" f -zoneDusts src/Dodge/Update.hs 505;" f +zoneDusts src/Dodge/Update.hs 515;" f zoneExtract src/Dodge/Zoning/Base.hs 58;" f zoneGas src/Dodge/Zoning/Cloud.hs 36;" f zoneIncPe src/Dodge/Zoning/Pathing.hs 66;" f