Cleanup, improve auto wall rotate

This commit is contained in:
2026-03-24 11:28:11 +00:00
parent be2f7160ba
commit 32f1740577
25 changed files with 226 additions and 252 deletions
+20 -32
View File
@@ -21,7 +21,6 @@ module Dodge.Base.Collide (
bouncePoint, bouncePoint,
circOnSomeWall, circOnSomeWall,
circOnAnyCr, circOnAnyCr,
overlapCircWalls,
overlapCircWallsClosest, overlapCircWallsClosest,
crsNearPoint, crsNearPoint,
allVisibleWalls, allVisibleWalls,
@@ -73,15 +72,15 @@ doBounce x sp ep (p, mwl) = fmap f mwl
, reflVelWallDamp x wl (ep -.- sp) , reflVelWallDamp x wl (ep -.- sp)
) )
--bounceBall :: -- bounceBall ::
-- Float -> -- Float ->
-- Point2 -> -- Point2 ->
-- Point2 -> -- Point2 ->
-- Float -> -- Float ->
-- [Wall] -> -- [Wall] ->
-- Maybe (Point2, Point2) -- Maybe (Point2, Point2)
--{-# INLINE bounceBall #-} -- {-# INLINE bounceBall #-}
--bounceBall x sp ep r = doBounce x sp ep . collideCircWalls sp ep r -- bounceBall x sp ep r = doBounce x sp ep . collideCircWalls sp ep r
bouncePoint :: bouncePoint ::
(Wall -> Bool) -> (Wall -> Bool) ->
@@ -106,7 +105,7 @@ collide3Chasms sp w m =
foldl' foldl'
(flip (collide3Chasm sp)) (flip (collide3Chasm sp))
m m
--(foldMap loopPairs $ w ^. cWorld . chasms) -- (foldMap loopPairs $ w ^. cWorld . chasms)
(w ^. cWorld . cliffs) (w ^. cWorld . cliffs)
collide3Chasm :: Point3 -> (Point2, Point2) -> (Point3, MPO) -> (Point3, MPO) collide3Chasm :: Point3 -> (Point2, Point2) -> (Point3, MPO) -> (Point3, MPO)
@@ -194,9 +193,9 @@ collidePointTestFilter t sp ep =
---- this COULD be written in terms of collidePointWallsFilterStream, TODO test ---- this COULD be written in terms of collidePointWallsFilterStream, TODO test
---- whether this is actually faster ---- whether this is actually faster
--collidePointTestFilter :: (Wall -> Bool) -> Point2 -> Point2 -> StreamOf Wall -> Bool -- collidePointTestFilter :: (Wall -> Bool) -> Point2 -> Point2 -> StreamOf Wall -> Bool
--{-# INLINE collidePointTestFilter #-} -- {-# INLINE collidePointTestFilter #-}
--collidePointTestFilter t sp ep = runIdentity -- collidePointTestFilter t sp ep = runIdentity
-- . S.any_ (isJust . uncurry (intersectSegSeg sp ep) . _wlLine) -- . S.any_ (isJust . uncurry (intersectSegSeg sp ep) . _wlLine)
-- . S.filter t -- . S.filter t
@@ -204,15 +203,15 @@ collidePointWallsFilter :: (Wall -> Bool) -> Point2 -> Point2 -> World -> (Point
{-# INLINE collidePointWallsFilter #-} {-# INLINE collidePointWallsFilter #-}
collidePointWallsFilter t sp ep = collidePoint sp ep . filter t . wlsNearSeg sp ep collidePointWallsFilter t sp ep = collidePoint sp ep . filter t . wlsNearSeg sp ep
--overlapSegWalls :: Point2 -> Point2 -> StreamOf Wall -- overlapSegWalls :: Point2 -> Point2 -> StreamOf Wall
-- -> StreamOf (Point2,Wall) -- -> StreamOf (Point2,Wall)
--{-# INLINE overlapSegWalls #-} -- {-# INLINE overlapSegWalls #-}
--overlapSegWalls sp ep = S.mapMaybe $ \wl -> uncurry (intersectSegSeg sp ep) (_wlLine wl) <&> (,wl) -- overlapSegWalls sp ep = S.mapMaybe $ \wl -> uncurry (intersectSegSeg sp ep) (_wlLine wl) <&> (,wl)
overlapSegWalls :: Point2 -> Point2 -> [Wall] -> [(Point2, Wall)] overlapSegWalls :: Point2 -> Point2 -> [Wall] -> [(Point2, Wall)]
{-# INLINE overlapSegWalls #-} {-# INLINE overlapSegWalls #-}
overlapSegWalls sp ep = mapMaybe overlapSegWalls sp ep = mapMaybe $
$ \wl -> uncurry (intersectSegSeg sp ep) (_wlLine wl) <&> (,wl) \wl -> uncurry (intersectSegSeg sp ep) (_wlLine wl) <&> (,wl)
visibleWalls :: Point2 -> Point2 -> World -> [(Point2, Wall)] visibleWalls :: Point2 -> Point2 -> World -> [(Point2, Wall)]
{-# INLINE visibleWalls #-} {-# INLINE visibleWalls #-}
@@ -228,16 +227,12 @@ allVisibleWalls w = concatMap (flip (visibleWalls vPos) w . (+.+ vPos)) $ nRays
where where
vPos = w ^. wCam . camViewFrom vPos = w ^. wCam . camViewFrom
overlapCircWalls :: overlapCircWalls :: Point2 -> Float -> [Wall] -> [(Point2, Wall)]
Point2 ->
Float ->
[Wall] ->
[(Point2, Wall)]
{-# INLINE overlapCircWalls #-} {-# INLINE overlapCircWalls #-}
overlapCircWalls p r = mapMaybe dointersect overlapCircWalls p r = mapMaybe g
where where
dointersect wl = f (_wlLine wl) <&> (,wl) g wl = f (_wlLine wl) <&> (,wl)
f (a, b) = intersectSegSeg p (p +.+ r *.* normalizeV ((0.5 *.* (a +.+ b)) -.- p)) a b f (a, b) = intersectSegSeg p (p + r *^ vNormal (normalizeV (b - a))) a b
circHitWall :: Point2 -> Point2 -> Float -> World -> Bool circHitWall :: Point2 -> Point2 -> Float -> World -> Bool
circHitWall sp ep r w = circHitWall sp ep r w =
@@ -256,7 +251,8 @@ collideCircWalls :: Point2 -> Point2 -> Float -> [Wall] -> (Point2, Maybe Wall)
collideCircWalls sp ep rad = foldl' findPoint (ep, Nothing) collideCircWalls sp ep rad = foldl' findPoint (ep, Nothing)
where where
findPoint (p, mwl) wl = findPoint (p, mwl) wl =
maybe (p, mwl) (,Just wl) . uncurry (intersectSegSeg sp p) maybe (p, mwl) (,Just wl)
. uncurry (intersectSegSeg sp p)
. shiftbyrad . shiftbyrad
. _wlLine . _wlLine
$ wl $ wl
@@ -272,14 +268,7 @@ collideCircWalls sp ep rad = foldl' findPoint (ep, Nothing)
overlapCircWallsClosest :: Point2 -> Float -> [Wall] -> Maybe (Point2, Wall) overlapCircWallsClosest :: Point2 -> Float -> [Wall] -> Maybe (Point2, Wall)
{-# INLINE overlapCircWallsClosest #-} {-# INLINE overlapCircWallsClosest #-}
overlapCircWallsClosest p r = overlapCircWallsClosest p r = safeMinimumOn (dist p . fst) . overlapCircWalls p r
safeMinimumOn (dist p . fst)
. overlapCircWalls p r
--overlapCircWallsClosest :: Point2 -> Float -> StreamOf Wall -> Maybe (Point2,Wall)
--{-# INLINE overlapCircWallsClosest #-}
--overlapCircWallsClosest p r = minStreamOn (dist p . fst)
-- . overlapCircWalls p r
{- | Test if a circle collides with any wall. {- | Test if a circle collides with any wall.
- Note no check on whether the wall is walkable. - Note no check on whether the wall is walkable.
@@ -313,7 +302,7 @@ hasButtonLOS :: Point2 -> Point2 -> World -> Bool
{-# INLINE hasButtonLOS #-} {-# INLINE hasButtonLOS #-}
hasButtonLOS _ _ = const True hasButtonLOS _ _ = const True
--hasButtonLOS p1 p2 = -- hasButtonLOS p1 p2 =
-- not -- not
-- . collidePointTestFilter (not . _wlTouchThrough) p1 p2 -- . collidePointTestFilter (not . _wlTouchThrough) p1 p2
-- . wlsNearSeg p1 p2 -- . wlsNearSeg p1 p2
@@ -325,7 +314,6 @@ hasLOSIndirect p1 p2 =
. collidePointTestFilter wlIsOpaque p1 p2 . collidePointTestFilter wlIsOpaque p1 p2
. wlsNearSeg p1 p2 . wlsNearSeg p1 p2
canSee :: Int -> Int -> World -> Bool canSee :: Int -> Int -> World -> Bool
{-# INLINE canSee #-} {-# INLINE canSee #-}
canSee i j w = hasLOS p1 p2 w canSee i j w = hasLOS p1 p2 w
+1 -1
View File
@@ -259,7 +259,7 @@ showMuzzlePositions u = fold $ do
^? ix invid . _2 ^? ix invid . _2
return . color red $ setLayer DebugLayer $ reduceLocDT (f cr) loc return . color red $ setLayer DebugLayer $ reduceLocDT (f cr) loc
where where
f cr loc = foldMap (g . muzzlePos loc cr) (itemMuzzles $ loc) f cr loc = foldMap (g . muzzlePos loc cr) (itemMuzzles loc)
where where
g :: Point3Q -> Picture g :: Point3Q -> Picture
g pq = translate3 (pq ^. _1) $ crossPic 5 g pq = translate3 (pq ^. _1) $ crossPic 5
+2 -5
View File
@@ -67,9 +67,7 @@ createHeadLamp _ cr =
. lWorld . lWorld
. lights . lights
.:~ LSParam .:~ LSParam
( _crPos cr (_crPos cr + rotate3z (_crDir cr) (translateToES cr OnHead (V3 5 0 3)))
+ rotate3z (_crDir cr) (translateToES cr OnHead (V3 5 0 3))
)
200 200
0.7 0.7
@@ -100,8 +98,7 @@ onEquipWristShield itm cr w =
. at i . at i
?~ forceField{_wlID = i} ?~ forceField{_wlID = i}
& setWristShieldPos & setWristShieldPos
( itm & itParams .~ ItemParamID{_itParamID = i} (itm & itParams .~ ItemParamID{_itParamID = i})
)
cr cr
esite esite
where where
+2 -3
View File
@@ -167,7 +167,7 @@ locMuzzles loc
& ix 0 . mzInaccuracy .~ 0 & ix 0 . mzInaccuracy .~ 0
& ix 0 . mzFlareType .~ TeslaGunFlare & ix 0 . mzFlareType .~ TeslaGunFlare
-- | otherwise = itemMuzzles $ loc ^. locDT . dtValue . _1 -- | otherwise = itemMuzzles $ loc ^. locDT . dtValue . _1
| otherwise = itemMuzzles $ loc | otherwise = itemMuzzles loc
itemMuzzles :: LocationDT OItem -> [Muzzle] itemMuzzles :: LocationDT OItem -> [Muzzle]
itemMuzzles loc = case itm ^. itType of itemMuzzles loc = case itm ^. itType of
@@ -933,8 +933,7 @@ removeAmmoFromMag x magid
getBulletType :: DTree OItem -> Maybe Bullet getBulletType :: DTree OItem -> Maybe Bullet
getBulletType magtree = getBulletType magtree =
(magtree ^? dtValue . _1 . to magAmmoParams . _Just . ampBullet) (magtree ^? dtValue . _1 . to magAmmoParams . _Just . ampBullet)
<&> buPayload .~ bpayload <&> (buPayload .~ bpayload) . (buEffect .~ beffect)
<&> buEffect .~ beffect
where where
bpayload = fromMaybe (BulPlain 100) $ do bpayload = fromMaybe (BulPlain 100) $ do
attree <- find ispayload (magtree ^. dtLeft) attree <- find ispayload (magtree ^. dtLeft)
+1 -1
View File
@@ -31,7 +31,7 @@ generateWorldFromSeed rdata i = do
postGenerationProcessing :: RenderData -> GenWorld -> IO World postGenerationProcessing :: RenderData -> GenWorld -> IO World
postGenerationProcessing _ gw = do postGenerationProcessing _ gw = do
let w = _gwWorld gw & cWorld . cwTiles .~ (tilesFromRooms . IM.elems $ _genRooms gw) let w = _gwWorld gw & cWorld . cwTiles .~ (tilesFromRooms . IM.elems $ _genRooms gw)
putStrLn $ show $ gw ^. genInts -- print $ gw ^. genInts
return $ foldl' assignPushDoors w (w ^. cWorld . lWorld . doors) return $ foldl' assignPushDoors w (w ^. cWorld . lWorld . doors)
assignPushDoors :: World -> Door -> World assignPushDoors :: World -> Door -> World
+1 -1
View File
@@ -89,7 +89,7 @@ updateTurret rotSpeed mc w =
. mcType . mcType
. mctTurret . mctTurret
. tuDir . tuDir
%~ ((subtract mcdir) . turnTo rotSpeed mcpos aimpos . (+mcdir)) %~ (subtract mcdir . turnTo rotSpeed mcpos aimpos . (+mcdir))
| otherwise = id | otherwise = id
closeFireAngle = seesYou -- && angleVV (ypos -.- mcpos) (unitVectorAtAngle mcdir) < 1 closeFireAngle = seesYou -- && angleVV (ypos -.- mcpos) (unitVectorAtAngle mcdir) < 1
updateFiringStatus updateFiringStatus
+11 -15
View File
@@ -10,6 +10,7 @@ import Dodge.LightSource
import Dodge.Placement.Instance.LightSource import Dodge.Placement.Instance.LightSource
import Dodge.PlacementSpot import Dodge.PlacementSpot
import Geometry import Geometry
import Shape
triggerSwitchSPic :: Color -> Color -> PlacementSpot -> Placement triggerSwitchSPic :: Color -> Color -> PlacementSpot -> Placement
triggerSwitchSPic c1 c2 ps = psPtCont ps (PutTrigger False) $ triggerSwitchSPic c1 c2 ps = psPtCont ps (PutTrigger False) $
@@ -19,7 +20,8 @@ triggerSwitchSPic c1 c2 ps = psPtCont ps (PutTrigger False) $
ps ps
( PutButton ( PutButton
( makeSwitch ( makeSwitch
c1 c2 c1
c2
(SetTrigger True $ trigid tp) (SetTrigger True $ trigid tp)
(SetTrigger False $ trigid tp) (SetTrigger False $ trigid tp)
) )
@@ -50,14 +52,7 @@ triggerSwitch col ps = psPtCont ps (PutTrigger False) $
Just $ Just $
pContID pContID
ps ps
( PutButton (PutButton (makeSwitch col col (SetTrigger True $ trigid tp) (SetTrigger False $ trigid tp)))
( makeSwitch
col
col
(SetTrigger True $ trigid tp)
(SetTrigger False $ trigid tp)
)
)
(const Nothing) (const Nothing)
where where
trigid tp = fromJust $ _plMID tp trigid tp = fromJust $ _plMID tp
@@ -65,14 +60,14 @@ triggerSwitch col ps = psPtCont ps (PutTrigger False) $
putLitButOnPos :: Color -> PlacementSpot -> (Placement -> Maybe Placement) -> Placement putLitButOnPos :: Color -> PlacementSpot -> (Placement -> Maybe Placement) -> Placement
putLitButOnPos col theps subpl = putLitButOnPos col theps subpl =
plSpot .~ theps $ plSpot .~ theps $
mntLSOn aShape (Just col) ls 0 (V3 0 (-40) 40) $ mntLSOn shp ls 0 (V3 0 (-40) 40) $
\plmnt -> \pmnt ->
jps0' jps0'
(PutButton (makeButton col (changeLight . fromJust $ _plMID plmnt)){_btPos = V2 0 (-1), _btRot = pi}) (PutButton (makeButton col (changeLight $ pmnt ^?! plMID . _Just) & btPos .~ V2 0 (-1) & btRot .~ pi))
subpl subpl
<&> plSpot <&> plSpot .~ _plSpot pmnt
.~ _plSpot plmnt
where where
shp = fmap (fmap $ colorSH col) aShape
changeLight = SetLSCol (V3 0 0.5 0) changeLight = SetLSCol (V3 0 0.5 0)
ls = lsColPosRad (V3 0.5 0 0) (V3 0 0 50) 50 ls = lsColPosRad (V3 0.5 0 0) (V3 0 0 50) 50
@@ -107,7 +102,7 @@ putLitButOnPosExtTrig' col thePS cnt =
psPtCont thePS (PutTrigger False) $ psPtCont thePS (PutTrigger False) $
\tp -> Just $ \tp -> Just $
plSpot .~ _plSpot tp $ plSpot .~ _plSpot tp $
mntLSOn aShape (Just col) ls 0 (V3 0 (-40) 40) $ mntLSOn shp ls 0 (V3 0 (-40) 40) $
\plmnt -> \plmnt ->
jps0' jps0'
( PutButton ( PutButton
@@ -120,6 +115,7 @@ putLitButOnPosExtTrig' col thePS cnt =
<&> plSpot <&> plSpot
.~ _plSpot plmnt .~ _plSpot plmnt
where where
shp = fmap (fmap $ colorSH col) aShape
trigid tp = fromJust $ _plMID tp trigid tp = fromJust $ _plMID tp
oneff = SetTrigger True oneff = SetTrigger True
changeLight = SetLSCol (V3 0 0.5 0) changeLight = SetLSCol (V3 0 0.5 0)
+1 -1
View File
@@ -74,6 +74,6 @@ putAutoDoor a b = Placement (PS 0 0) (PutCoord a) Nothing Nothing $ \_ apl ->
a a
b b
( defaultDoor ( defaultDoor
& drTrigger .~ (WdBlCrFilterNearPoint 40 (0.5 *^ (x + y)) CrOpenAutoDoor) & drTrigger .~ WdBlCrFilterNearPoint 40 (0.5 *^ (x + y)) CrOpenAutoDoor
& drUpdate .~ DoorLerpWithTimer 0 3 & drUpdate .~ DoorLerpWithTimer 0 3
) )
+5 -6
View File
@@ -36,15 +36,14 @@ mntLSOn ::
-- | function describing the mount shape -- | function describing the mount shape
(Point2 -> Point3 -> Shape) -> (Point2 -> Point3 -> Shape) ->
-- | describing a possible color override for the shape -- | describing a possible color override for the shape
Maybe Color ->
LightSource -> LightSource ->
Point2 -> Point2 ->
Point3 -> Point3 ->
(Placement -> Maybe Placement) -> (Placement -> Maybe Placement) ->
Placement Placement
mntLSOn shapeF mcol ls wallp lsp@(V3 lx ly _) = mntLSOn shapeF ls wallp lsp@(V3 lx ly _) =
ps0jPushPS (PutLabel "light") . ps0jPushPS (PutLabel "light") .
ps0jPushPS (putShape . setCol $ shapeF wallp lsp) ps0jPushPS (putShape $ shapeF wallp lsp)
--ps0j (PutLabel "light") . --ps0j (PutLabel "light") .
--ps0j (putShape . setCol $ shapeF wallp lsp) --ps0j (putShape . setCol $ shapeF wallp lsp)
. pt0 (PutLS $ ls & lsParam . lsPos .~ lsp') . pt0 (PutLS $ ls & lsParam . lsPos .~ lsp')
@@ -52,7 +51,7 @@ mntLSOn shapeF mcol ls wallp lsp@(V3 lx ly _) =
lsp' = lsp -.-.- V3 x y 1 lsp' = lsp -.-.- V3 x y 1
-- hack! perturb the light position -- hack! perturb the light position
V2 x y = rotateV 1 . (0.1 *.*) . normalizeV $ wallp -.- V2 lx ly V2 x y = rotateV 1 . (0.1 *.*) . normalizeV $ wallp -.- V2 lx ly
setCol = maybe id colorSH mcol -- setCol = maybe id colorSH mcol
iShape :: Point2 -> Point3 -> Shape iShape :: Point2 -> Point3 -> Shape
iShape wp (V3 x y z) = thinHighBar z wp (V2 x y) iShape wp (V3 x y z) = thinHighBar z wp (V2 x y)
@@ -107,7 +106,7 @@ vShape wallpos (V3 x y z) =
wallposDown = wallpos -.- n wallposDown = wallpos -.- n
mntLS :: (Point2 -> Point3 -> Shape) -> Point2 -> Point3 -> Placement mntLS :: (Point2 -> Point3 -> Shape) -> Point2 -> Point3 -> Placement
mntLS shp wallp lampp = mntLSOn shp Nothing defaultLS wallp lampp (const Nothing) mntLS shp wallp lampp = mntLSOn shp defaultLS wallp lampp (const Nothing)
where where
defaultLS = LS 0 $ LSParam 0 300 0.6 defaultLS = LS 0 $ LSParam 0 300 0.6
@@ -152,7 +151,7 @@ mntLightLnkCond ps = do
return $ mntLSCond (fmap (fmap $ colorSH black) shp) ps return $ mntLSCond (fmap (fmap $ colorSH black) shp) ps
mntLightLnkShape :: (Point2 -> Point3 -> Shape) -> PlacementSpot -> Placement mntLightLnkShape :: (Point2 -> Point3 -> Shape) -> PlacementSpot -> Placement
mntLightLnkShape shp ps = mntLSCond (fmap (fmap $ colorSH black) shp) ps mntLightLnkShape shp = mntLSCond (fmap (fmap $ colorSH black) shp)
mntLightLnkCond' :: PlacementSpot -> Placement mntLightLnkCond' :: PlacementSpot -> Placement
mntLightLnkCond' = mntLSCond (fmap (fmap $ colorSH black) vShape) mntLightLnkCond' = mntLSCond (fmap (fmap $ colorSH black) vShape)
+47 -40
View File
@@ -1,12 +1,12 @@
--{-# LANGUAGE LambdaCase #-} -- {-# LANGUAGE LambdaCase #-}
--{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} -- {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-}
{- | deals with placement of objects within the world {- | deals with placement of objects within the world
after they have had their coordinates set by the layout after they have had their coordinates set by the layout
-} -}
module Dodge.Placement.PlaceSpot (placeSpot) where module Dodge.Placement.PlaceSpot (placeSpot) where
--import Control.Monad.State -- import Control.Monad.State
import Control.Monad.Trans.State.Lazy import Control.Monad.Trans.State.Lazy
import Data.Bifunctor import Data.Bifunctor
import Data.Foldable import Data.Foldable
@@ -57,9 +57,7 @@ placePlainPSSpot w rid plmnt shift = case plmnt ^. plType of
j <- x ^. plExternalID j <- x ^. plExternalID
return $ gw & genPmnt . at j ?~ x return $ gw & genPmnt . at j ?~ x
recrPlace newplmnt w' = recrPlace newplmnt w' =
placeSpot placeSpot rid (w' & genRooms . ix rid . rmPmnts .:~ newplmnt)
rid
(w' & genRooms . ix rid . rmPmnts .:~ newplmnt)
-- this should be tidied up -- this should be tidied up
placeSpotUsingRoomPos :: placeSpotUsingRoomPos ::
@@ -94,7 +92,8 @@ placeSpotRoomRand ::
placeSpotRoomRand rid i f plmnt w = placeSpotRoomRand rid i f plmnt w =
let (ps, g) = let (ps, g) =
runState runState
(_rmRandPSs (w ^?! genRooms . ix rid) !! i) -- (_rmRandPSs (w ^?! genRooms . ix rid) !! i)
(w ^?! genRooms . ix rid . rmRandPSs . ix i)
$ w ^. gwWorld . randGen $ w ^. gwWorld . randGen
in placeSpot rid (w & gwWorld . randGen .~ g) (plmnt & plSpot .~ f ps) in placeSpot rid (w & gwWorld . randGen .~ g) (plmnt & plSpot .~ f ps)
@@ -102,46 +101,54 @@ placeSpotRoomRand rid i f plmnt w =
placeSpotID :: Int -> PlacementSpot -> PSType -> GenWorld -> (Int, GenWorld) placeSpotID :: Int -> PlacementSpot -> PSType -> GenWorld -> (Int, GenWorld)
placeSpotID rid ps pt w = case pt of placeSpotID rid ps pt w = case pt of
PutTrigger cnd -> plNewID (gwWorld . cWorld . lWorld . triggers) cnd w PutTrigger cnd -> plNewID (gwWorld . cWorld . lWorld . triggers) cnd w
PutMod mdi -> plNewUpID (gwWorld . cWorld . lWorld . modifications) mdID mdi w PutMod mdi ->
PutProp prp -> plNewUpID (gwWorld . cWorld . lWorld . props) prID (mvProp p rot prp) w plNewUpID (gwWorld . cWorld . lWorld . modifications) mdID mdi w
PutProp prp ->
plNewUpID (gwWorld . cWorld . lWorld . props) prID (mvProp p rot prp) w
PutButton bt -> PutButton bt ->
plNewUpID plNewUpID (gwWorld . cWorld . lWorld . buttons) btID (mvButton p rot bt) w
(gwWorld . cWorld . lWorld . buttons)
btID
(mvButton p rot bt)
w
PutTerminal tm -> plNewUpID (gwWorld . cWorld . lWorld . terminals) tmID tm w PutTerminal tm -> plNewUpID (gwWorld . cWorld . lWorld . terminals) tmID tm w
PutFlIt itm -> PutFlIt itm ->
let i = IM.newKey (w ^. gwWorld . cWorld . lWorld . items) let i = IM.newKey (w ^. gwWorld . cWorld . lWorld . items)
in ( i in ( i
, w , w
& gwWorld . cWorld . lWorld . floorItems . at i ?~ FlIt p rot & gwWorld
& gwWorld . cWorld . lWorld . items . at i . cWorld
?~ ( itm & itID .~ NInt i . lWorld
& itLocation .~ OnFloor . floorItems
) . at i
?~ FlIt p rot
& gwWorld
. cWorld
. lWorld
. items
. at i
?~ (itm & itID .~ NInt i & itLocation .~ OnFloor)
) )
PutCrit cr -> plNewUpID (gwWorld . cWorld . lWorld . creatures) crID (mvCr p rot cr) w PutCrit cr -> plNewUpID (gwWorld . cWorld . lWorld . creatures) crID (mvCr p rot cr) w
PutForeground fs -> PutForeground fs ->
(0, w & gwWorld . cWorld . lWorld . foreShapes .:~ mvFS p rot fs) (0, w & gwWorld . cWorld . lWorld . foreShapes .:~ mvFS p rot fs)
PutMachine pps mc mitm -> plMachine (map doShift pps) mc mitm p rot w PutMachine pps mc mitm -> plMachine (map doShift pps) mc mitm p rot w
PutLS ls -> plNewUpID (gwWorld . cWorld . lWorld . lightSources) lsID (mvLS p rot ls) w PutLS ls -> plNewUpID (gwWorld . cWorld . lWorld . lightSources) lsID (mvLS p rot ls) w
RandPS _ -> error "RandPS should not be reachable here" --evaluateRandPS rid rgn ps w RandPS _ -> error "RandPS should not be reachable here" -- evaluateRandPS rid rgn ps w
PutDoor dr wl -> plDoor (dr & drZeroPos %~ pashift & drOnePos %~ pashift) wl w PutDoor dr wl -> plDoor (dr & drZeroPos %~ pashift & drOnePos %~ pashift) wl w
PutCoord cp -> plNewID (gwWorld . coordinates) (doShift cp) w PutCoord cp -> plNewID (gwWorld . coordinates) (doShift cp) w
PutBlock bl wl ps' -> PutBlock bl wl ps' ->
plBlock plBlock (map doShift ps') (bl & blPos %~ doShift & blDir .~ rot) wl w
(map doShift ps')
(bl & blPos %~ doShift & blDir .~ rot)
wl
w
PutLineBlock wl wdth a b -> plLineBlock wl wdth (doShift a) (doShift b) w PutLineBlock wl wdth a b -> plLineBlock wl wdth (doShift a) (doShift b) w
PutWall qs wl -> (0, over gwWorld (placeWallPoly (map doShift qs) wl) w) PutWall qs wl -> (0, over gwWorld (placeWallPoly (map doShift qs) wl) w)
PutNothing -> (0, w) PutNothing -> (0, w)
PutID i -> (i, w) PutID i -> (i, w)
PutWorldUpdate f -> (0, w & f rid ps) PutWorldUpdate f -> (0, w & f rid ps)
PutChasm ps' qs -> (0, placeChasm w rid ps' (map (map doShift) ps') PutChasm ps' qs ->
(foldMap loopPairs (map (map doShift) qs))) ( 0
, placeChasm
w
rid
ps'
(map (map doShift) ps')
(foldMap (loopPairs . map doShift) qs)
)
PutLabel{} -> (0, w) PutLabel{} -> (0, w)
where where
p = _psPos ps p = _psPos ps
@@ -149,14 +156,15 @@ placeSpotID rid ps pt w = case pt of
doShift = shiftPointBy (p, rot) doShift = shiftPointBy (p, rot)
pashift = compP2A (p, rot) pashift = compP2A (p, rot)
placeChasm :: GenWorld -> Int -> [[Point2]] -> [[Point2]] -> [(Point2,Point2)] -> GenWorld placeChasm :: GenWorld -> Int -> [[Point2]] -> [[Point2]] -> [(Point2, Point2)] -> GenWorld
placeChasm gw rid ps shiftps cfs = placeChasm gw rid ps shiftps cfs =
gw & gwWorld . cWorld . chasms <>~ shiftps gw
& gwWorld . cWorld . chasms <>~ shiftps
& gwWorld . cWorld . cliffs <>~ cfs & gwWorld . cWorld . cliffs <>~ cfs
& genRooms . ix rid . rmPos %~ filter (\rp -> not $ any (pointInPoly (_rpPos rp)) ps) & genRooms . ix rid . rmPos %~ filter (\rp -> not $ any (pointInPoly (_rpPos rp)) ps)
& gwWorld %~ f & gwWorld %~ f
where where
--f w = foldl' g w (loopPairs shiftps) -- f w = foldl' g w (loopPairs shiftps)
f w = foldl' g w cfs f w = foldl' g w cfs
g w (x, y) = obstructPathsCrossing (S.singleton ChasmObstacle) x y w g w (x, y) = obstructPathsCrossing (S.singleton ChasmObstacle) x y w
@@ -171,19 +179,16 @@ addPane wl w l = insertWall (wl & wlLine .~ l & wlID .~ i) w
i = IM.newKey $ w ^. cWorld . lWorld . walls i = IM.newKey $ w ^. cWorld . lWorld . walls
mvProp :: Point2 -> Float -> Prop -> Prop mvProp :: Point2 -> Float -> Prop -> Prop
mvProp p a = (prRot +~ a) . (prPos %~ ((p +.+) . rotateV a)) mvProp p a = (prRot +~ a) . (prPos %~ ((p +) . rotateV a))
mvButton :: Point2 -> Float -> Button -> Button mvButton :: Point2 -> Float -> Button -> Button
mvButton p a = (btRot +~ a) . (btPos %~ ((p +.+) . rotateV a)) mvButton p a = (btRot +~ a) . (btPos %~ ((p +) . rotateV a))
mvCr :: Point2 -> Float -> Creature -> Creature mvCr :: Point2 -> Float -> Creature -> Creature
mvCr p rot = mvCr p rot = (crPos . _xy .~ p) . (crOldPos . _xy .~ p) . (crDir .~ rot)
(crPos . _xy .~ p)
. (crOldPos . _xy .~ p)
. (crDir .~ rot)
mvFS :: Point2 -> Float -> ForegroundShape -> ForegroundShape mvFS :: Point2 -> Float -> ForegroundShape -> ForegroundShape
mvFS p a = (fsDir +~ a) . (fsPos %~ ((p +.+) . rotateV a)) mvFS p a = (fsDir +~ a) . (fsPos %~ ((p +) . rotateV a))
plMachine :: plMachine ::
[Point2] -> [Point2] ->
@@ -195,7 +200,8 @@ plMachine ::
(Int, GenWorld) (Int, GenWorld)
plMachine wallpoly mc mitm p rot gw = plMachine wallpoly mc mitm p rot gw =
( mcid ( mcid
, gw & tolw . machines . at mcid ?~ themc , gw
& tolw . machines . at mcid ?~ themc
& gwWorld %~ placeMachineWalls (_mcMaterial mc) wallpoly mcid wlid & gwWorld %~ placeMachineWalls (_mcMaterial mc) wallpoly mcid wlid
& tolw %~ maybe id placeturretitm mitm & tolw %~ maybe id placeturretitm mitm
) )
@@ -215,8 +221,9 @@ plMachine wallpoly mc mitm p rot gw =
placeMachineWalls :: Material -> [Point2] -> Int -> Int -> World -> World placeMachineWalls :: Material -> [Point2] -> Int -> Int -> World -> World
placeMachineWalls mat poly mcid = insertStructureWalls MachinePart baseWall poly mcid placeMachineWalls mat poly mcid = insertStructureWalls MachinePart baseWall poly mcid
where where
baseWall = defaultMachineWall & wlStructure . wsMachine .~ mcid baseWall = defaultMachineWall
& wlStructure . wsMachine .~ mcid
& wlMaterial .~ mat & wlMaterial .~ mat
mvLS :: Point2 -> Float -> LightSource -> LightSource mvLS :: Point2 -> Float -> LightSource -> LightSource
mvLS x rot = lsParam . lsPos . _xy %~ ((+x) . rotateV rot) mvLS x rot = lsParam . lsPos . _xy %~ ((+ x) . rotateV rot)
+4 -4
View File
@@ -55,8 +55,8 @@ decontamRoom i =
& rmInPmnt .~ [(0, return . f)] & rmInPmnt .~ [(0, return . f)]
& rmBound .~ [rectNSWE 75 15 0 40, switchcut] & rmBound .~ [rectNSWE 75 15 0 40, switchcut]
where where
dr1 btid = defaultDoor & drTrigger .~ (WdBlNegate $ WdBlBtOn btid) dr1 btid = defaultDoor & drTrigger .~ WdBlNegate (WdBlBtOn btid)
dr2 btid = defaultDoor & drTrigger .~ (WdBlBtOn btid) dr2 btid = defaultDoor & drTrigger .~ WdBlBtOn btid
f gw = fromMaybe (error "tried to put a door using an empty placement list") $ do f gw = fromMaybe (error "tried to put a door using an empty placement list") $ do
pmnt <- gw ^? genPmnt . ix i pmnt <- gw ^? genPmnt . ix i
return $ return $
@@ -94,8 +94,8 @@ airlock0 =
, _rmBound = [rectNSWE 75 15 0 40, switchcut] , _rmBound = [rectNSWE 75 15 0 40, switchcut]
} }
where where
dr1 btid = defaultDoor & drTrigger .~ (WdBlNegate $ WdBlBtOn btid) dr1 btid = defaultDoor & drTrigger .~ WdBlNegate (WdBlBtOn btid)
dr2 btid = defaultDoor & drTrigger .~ (WdBlBtOn btid) dr2 btid = defaultDoor & drTrigger .~ WdBlBtOn btid
switchcut = rectNSWE 65 35 (-40) 20 switchcut = rectNSWE 65 35 (-40) 20
lnks = lnks =
[ (V2 20 95, 0) [ (V2 20 95, 0)
+1 -1
View File
@@ -44,5 +44,5 @@ triggerDoorRoom i =
f gw = return $ fromMaybe (error "tried to put a door using an empty placement list") $ do f gw = return $ fromMaybe (error "tried to put a door using an empty placement list") $ do
pmnt <- gw ^? genPmnt . ix i pmnt <- gw ^? genPmnt . ix i
return $ putDoubleDoor defaultDoorWall (V2 0 20) (V2 40 20) return $ putDoubleDoor defaultDoorWall (V2 0 20) (V2 40 20)
(defaultDoor & drTrigger .~ (cond pmnt)) (defaultDoor & drTrigger .~ cond pmnt)
cond pmnt = WdTrig $ fromJust (_plMID pmnt) cond pmnt = WdTrig $ fromJust (_plMID pmnt)
+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 )) ps qs <> zipWith (thinHighBar (h-1)) ps qs
where where
n = w *.* normalizeV (vNormal $ y -.- x) n = w *.* normalizeV (vNormal $ y -.- x)
xb = x +.+ n xb = x +.+ n
+26 -26
View File
@@ -49,7 +49,7 @@ import Shape
-- no lights! -- no lights!
cenLasTur :: (RandomGen g) => State g Room cenLasTur :: (RandomGen g) => State g Room
cenLasTur = do cenLasTur =
roomNgon 8 200 roomNgon 8 200
<&> rmPmnts <&> rmPmnts
.~ [ putLasTurret 0.02 .~ [ putLasTurret 0.02
@@ -168,7 +168,7 @@ lasCenSensEdge n = do
lshape <- takeOne [vShape, lShape, jShape, liShape] lshape <- takeOne [vShape, lShape, jShape, liShape]
let alight a rp = mntLSCond (fmap (fmap $ colorSH black) lshape) (PS (rotateV a $ _rpPos rp) (a + _rpDir rp)) let alight a rp = mntLSCond (fmap (fmap $ colorSH black) lshape) (PS (rotateV a $ _rpPos rp) (a + _rpDir rp))
blight a = (0, return . alight a . f i) blight a = (0, return . alight a . f i)
let cenroom = cenroom' & rmInPmnt <>~ map blight [pi, (0.5 * pi), (1.5 * pi)] let cenroom = cenroom' & rmInPmnt <>~ map blight [pi, 0.5 * pi, 1.5 * pi]
let doorroom = triggerDoorRoom n let doorroom = triggerDoorRoom n
rToOnward "lasCenSensEdge" $ rToOnward "lasCenSensEdge" $
treeFromTrunk [door] $ treeFromTrunk [door] $
@@ -194,7 +194,7 @@ lasRunYinYang = do
const const
. ( \rp -> . ( \rp ->
PolyEdge ((npoly + 1) `div` 4) PolyEdge ((npoly + 1) `div` 4)
`S.member` (fold $ rp ^? rpType . rplsType) `S.member` fold (rp ^? rpType . rplsType)
) )
thelight3 <- thelight3 <-
mntLightLnkCond $ mntLightLnkCond $
@@ -202,7 +202,7 @@ lasRunYinYang = do
const const
. ( \rp -> . ( \rp ->
PolyEdge (3 * (npoly + 1) `div` 4) PolyEdge (3 * (npoly + 1) `div` 4)
`S.member` (fold $ rp ^? rpType . rplsType) `S.member` fold (rp ^? rpType . rplsType)
) )
r <- r <-
shuffleLinks shuffleLinks
@@ -231,16 +231,16 @@ lasRunYinYang = do
) )
rToOnward "lasCenRunClose" $ return $ cleatOnward r rToOnward "lasCenRunClose" $ return $ cleatOnward r
where where
awall x v = heightWallPS (PS x 0) 30 v awall x = heightWallPS (PS x 0) 30
-- angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (fmap (rotateV (pi/4 + a/2)) $ rectWH 5 (25 - a*10/pi )) -- angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (fmap (rotateV (pi/4 + a/2)) $ rectWH 5 (25 - a*10/pi ))
rf = 0.8 rf = 0.8
offxy = V2 0 (-100) offxy = V2 0 (-100)
angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (fmap (rotateV (pi / 4 + a * rf)) $ rectWH 5 (23 - a * 13 / pi)) angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (rotateV (pi / 4 + a * rf) <$> rectWH 5 (23 - a * 13 / pi))
apath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100), x - f (V2 0 100))) (V2 0 100 + rotateV a (V2 0 100)) apath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100), x - f (V2 0 100))) (V2 0 100 + rotateV a (V2 0 100))
where where
a = a' + pi / 16 a = a' + pi / 16
f = rotateV (pi / 4 + a * 0.8) f = rotateV (pi / 4 + a * 0.8)
bngwall a = awall (V2 0 (-100) + rotateV a (V2 0 (-100))) (fmap (rotateV (pi / 4 + a * rf)) $ rectWH 5 (23 - a * 13 / pi)) bngwall a = awall (V2 0 (-100) + rotateV a (V2 0 (-100))) (rotateV (pi / 4 + a * rf) <$> rectWH 5 (23 - a * 13 / pi))
bpath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100), x - f (V2 0 100))) (V2 0 (-100) + rotateV a (V2 0 (-100))) bpath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100), x - f (V2 0 100))) (V2 0 (-100) + rotateV a (V2 0 (-100)))
where where
a = a' + pi / 16 a = a' + pi / 16
@@ -257,7 +257,7 @@ lasRunYinYangCenter = do
const const
. ( \rp -> . ( \rp ->
PolyEdge ((npoly + 1) `div` 4) PolyEdge ((npoly + 1) `div` 4)
`S.member` (fold $ rp ^? rpType . rplsType) `S.member` fold (rp ^? rpType . rplsType)
) )
thelight3 <- thelight3 <-
mntLightLnkCond $ mntLightLnkCond $
@@ -265,7 +265,7 @@ lasRunYinYangCenter = do
const const
. ( \rp -> . ( \rp ->
PolyEdge (3 * (npoly + 1) `div` 4) PolyEdge (3 * (npoly + 1) `div` 4)
`S.member` (fold $ rp ^? rpType . rplsType) `S.member` fold (rp ^? rpType . rplsType)
) )
-- thelight3 <- mntLightLnkCond $ rprBool $ const . isOutLnk -- thelight3 <- mntLightLnkCond $ rprBool $ const . isOutLnk
r <- r <-
@@ -293,14 +293,14 @@ lasRunYinYangCenter = do
) )
rToOnward "lasCenRunClose" $ return $ cleatOnward r rToOnward "lasCenRunClose" $ return $ cleatOnward r
where where
awall x v = heightWallPS (PS x 0) 30 v awall x = heightWallPS (PS x 0) 30
-- angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (fmap (rotateV (pi/4 + a/2)) $ rectWH 5 (25 - a*10/pi )) -- angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (fmap (rotateV (pi/4 + a/2)) $ rectWH 5 (25 - a*10/pi ))
angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (fmap (rotateV (pi / 4 + a * 0.8)) $ rectWH 5 (23 - a * 13 / pi)) angwall a = awall (V2 0 100 + rotateV a (V2 0 100)) (rotateV (pi / 4 + a * 0.8) <$> rectWH 5 (23 - a * 13 / pi))
apath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100), x - f (V2 0 100))) (V2 0 100 + rotateV a (V2 0 100)) apath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100), x - f (V2 0 100))) (V2 0 100 + rotateV a (V2 0 100))
where where
a = a' + pi / 16 a = a' + pi / 16
f = rotateV (pi / 4 + a * 0.8) f = rotateV (pi / 4 + a * 0.8)
bngwall a = awall (V2 0 (-100) + rotateV a (V2 0 (-100))) (fmap (rotateV (pi / 4 + a * 0.8)) $ rectWH 5 (23 - a * 13 / pi)) bngwall a = awall (V2 0 (-100) + rotateV a (V2 0 (-100))) (rotateV (pi / 4 + a * 0.8) <$> rectWH 5 (23 - a * 13 / pi))
bpath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100), x - f (V2 0 100))) (V2 0 (-100) + rotateV a (V2 0 (-100))) bpath a' = addNodesCrossing $ (\x -> (x + f (V2 0 100), x - f (V2 0 100))) (V2 0 (-100) + rotateV a (V2 0 (-100)))
where where
a = a' + pi / 16 a = a' + pi / 16
@@ -334,24 +334,24 @@ lasCenRunClose' = do
rToOnward "lasCenRunClose" $ return $ cleatOnward r rToOnward "lasCenRunClose" $ return $ cleatOnward r
where where
swall = swall =
[ (70, (rectNSWE 10 (-10) (-10) 30)) [ (70, rectNSWE 10 (-10) (-10) 30)
, (125, (rectNSWE 55 (-55) (-10) 10)) , (125, rectNSWE 55 (-55) (-10) 10)
, (180, (rectNSWE 10 (-10) (-30) 10)) , (180, rectNSWE 10 (-10) (-30) 10)
] ]
zwall = zwall =
[ (70, (rectNSWE 10 (-10) (-30) 10)) [ (70, rectNSWE 10 (-10) (-30) 10)
, (125, (rectNSWE 55 (-55) (-10) 10)) , (125, rectNSWE 55 (-55) (-10) 10)
, (180, (rectNSWE 10 (-10) (-10) 30)) , (180, rectNSWE 10 (-10) (-10) 30)
] ]
iwall = iwall =
[ (70, (rectNSWE 10 (-10) (-15) 20)) [ (70, rectNSWE 10 (-10) (-15) 20)
, (180, (rectNSWE 10 (-10) (-30) (-5))) , (180, rectNSWE 10 (-10) (-30) (-5))
] ]
jwall = jwall =
[ (70, (rectNSWE 10 (-10) (-20) 15)) [ (70, rectNSWE 10 (-10) (-20) 15)
, (180, (rectNSWE 10 (-10) 5 30)) , (180, rectNSWE 10 (-10) 5 30)
] ]
uwall = [(180, (rectNSWE 10 (-10) (-20) 20))] uwall = [(180, rectNSWE 10 (-10) (-20) 20)]
obwalls = [swall, zwall, iwall, jwall, uwall] obwalls = [swall, zwall, iwall, jwall, uwall]
linkwall f x = linkwall f x =
heightWallPS heightWallPS
@@ -390,7 +390,7 @@ lasCenRunCloseLongCor = do
where where
llinks = memtest (FromEdge South 1) (OnEdge West) llinks = memtest (FromEdge South 1) (OnEdge West)
rlinks = memtest (FromEdge South 1) (OnEdge East) rlinks = memtest (FromEdge South 1) (OnEdge East)
awall x v = heightWallPS (PS x 0) 30 v awall x = heightWallPS (PS x 0) 30
memtest a b x = memtest a b x =
let y = _rlType x let y = _rlType x
in a `S.member` y && b `S.member` y in a `S.member` y && b `S.member` y
@@ -459,7 +459,7 @@ lasCenRunClose1 = do
etest etest
(memtest (FromEdge East 0) (OnEdge South)) (memtest (FromEdge East 0) (OnEdge South))
(memtest (FromEdge South 0) (OnEdge East)) (memtest (FromEdge South 0) (OnEdge East))
awall x v = heightWallPS (PS x 0) 30 v awall x = heightWallPS (PS x 0) 30
etest f g x = f x || g x etest f g x = f x || g x
memtest a b x = memtest a b x =
let y = _rlType x let y = _rlType x
@@ -500,7 +500,7 @@ lasCenRunClose2 = do
etest etest
(memtest (FromEdge East 0) (OnEdge North)) (memtest (FromEdge East 0) (OnEdge North))
(memtest (FromEdge North 0) (OnEdge East)) (memtest (FromEdge North 0) (OnEdge East))
awall x v = heightWallPS (PS x 0) 30 v awall x = heightWallPS (PS x 0) 30
etest f g x = f x || g x etest f g x = f x || g x
memtest a b x = memtest a b x =
let y = _rlType x let y = _rlType x
+1 -1
View File
@@ -118,7 +118,7 @@ addButtonSlowDoor x h =
30 30
(V2 0 h) (V2 0 h)
(V2 x h) (V2 x h)
(defaultDoor & drTrigger .~ (WdBlBtOn $ fromJust $ _plMID btplmnt) (defaultDoor & drTrigger .~ WdBlBtOn (fromJust $ _plMID btplmnt)
& drUpdate . drLerpSpeed .~ 0.5) & drUpdate . drLerpSpeed .~ 0.5)
$ \dr1 dr2 -> $ \dr1 dr2 ->
Just Just
+3 -3
View File
@@ -48,10 +48,10 @@ addLightsNGon rm = do
x = y * tan (0.5 * a) x = y * tan (0.5 * a)
f i gw = do f i gw = do
lshape <- takeOne [vShape, lShape, jShape, liShape] lshape <- takeOne [vShape, lShape, jShape, liShape]
let ps = fromMaybe (PS (V2 y 0) 0) $ rpToPS <$> find iscolorlight (grm ^. rmPos) let ps = maybe (PS (V2 y 0) 0) rpToPS $ find iscolorlight (grm ^. rmPos)
alight a' = mntLSCond (fmap (fmap $ colorSH black) lshape) (rotateps a' ps) alight a' = mntLSCond (fmap (fmap $ colorSH black) lshape) (rotateps a' ps)
takeOne takeOne
[ spanLightY (V2 0 0) (V2 y x) (V2 (x) y) (V2 (x) (-y)) [ spanLightY (V2 0 0) (V2 y x) (V2 x y) (V2 x (-y))
, spanLightY (V2 20 20) (V2 y 20) (V2 (-y) 20) (V2 20 (-y)) , spanLightY (V2 20 20) (V2 y 20) (V2 (-y) 20) (V2 20 (-y))
, spanLightI (V2 22 y) (V2 22 (-y)) , spanLightI (V2 22 y) (V2 22 (-y))
, spanLightI (V2 x y) (V2 (-x) (-y)) , spanLightI (V2 x y) (V2 (-x) (-y))
@@ -61,7 +61,7 @@ addLightsNGon rm = do
grm = getRoomFromID i gw grm = getRoomFromID i gw
rotateps a' (PS v d) = PS (rotateV a' v) (a' + d) rotateps a' (PS v d) = PS (rotateV a' v) (a' + d)
rotateps _ _ = error "in addLightsNGon" rotateps _ _ = error "in addLightsNGon"
rpToPS rp = (PS (_rpPos rp) (_rpDir rp)) rpToPS rp = PS (_rpPos rp) (_rpDir rp)
iscolorlight rp = iscolorlight rp =
(ColoredLightRP `S.member` (rp ^. rpFlags)) (ColoredLightRP `S.member` (rp ^. rpFlags))
&& islinkroompos rp && islinkroompos rp
+2 -2
View File
@@ -61,7 +61,7 @@ roomPillarsSquare = do
[ mntLS [ mntLS
vShape vShape
(rotateVAround (V2 150 150) a (V2 30 30)) (rotateVAround (V2 150 150) a (V2 30 30))
(_xy %~ (rotateVAround (V2 150 150) a) $ V3 60 60 95) (_xy %~ rotateVAround (V2 150 150) a $ V3 60 60 95)
| a <- [0, pi / 2, pi, 3 * pi / 2] | a <- [0, pi / 2, pi, 3 * pi / 2]
] ]
, return , return
@@ -70,7 +70,7 @@ roomPillarsSquare = do
[ mntLS [ mntLS
vShape vShape
(rotateVAround (V2 150 150) a (V2 150 0)) (rotateVAround (V2 150 150) a (V2 150 0))
(_xy %~ (rotateVAround (V2 150 150) a) $ V3 150 20 95) (_xy %~ rotateVAround (V2 150 150) a $ V3 150 20 95)
| a <- [0, pi / 2, pi, 3 * pi / 2] | a <- [0, pi / 2, pi, 3 * pi / 2]
] ]
, addGirderLights . set rmPmnts [] , addGirderLights . set rmPmnts []
+13 -13
View File
@@ -8,7 +8,6 @@ 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
import Data.Maybe import Data.Maybe
import Data.Maybe (mapMaybe)
import qualified Data.Set as S import qualified Data.Set as S
import Dodge.Cleat import Dodge.Cleat
import Dodge.Data.AmmoType import Dodge.Data.AmmoType
@@ -304,20 +303,21 @@ chasmSpitTerminal = do
l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East North l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East North
l4 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East South l4 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East South
ls <- takeOne [[l1,l2],[l3,l4] ls <- takeOne [[l1,l2],[l3,l4]
--j ,[spanLightI (V2 120 0) (V2 120 300)] ,[spanLightI (V2 120 0) (V2 120 300)]
--j , [spanLightI (V2 0 128) (V2 300 128)] , [spanLightI (V2 0 128) (V2 300 128)]
--j , [spanLightI (V2 300 0) (V2 0 300), sps0 $ putShape $ thinHighBar 95 0 300] , [spanLightI (V2 300 0) (V2 0 300), sps0 $ putShape $ thinHighBar 95 0 300]
] ]
gh <- takeOne [55,75,97] gh <- takeOne [55,75,97]
gird <- takeOne [girderZ gh 30 10,girder gh 30 10,girderV gh 30 10] gird <- takeOne [girderZ gh 30 10,girder gh 30 10,girderV gh 30 10]
dec <- takeOne $ -- replicate 3 [] <> dec <- takeOne $ replicate 3 [] <>
[--[] [[sps0 $ putShape $ gird (V2 30 0) (V2 30 300)]
-- ,[sps0 $ putShape $ gird (V2 30 0) (V2 30 300) ,[sps0 $ putShape $ gird (V2 270 0) (V2 270 300)]
-- ,sps0 $ putShape $ gird (V2 270 0) (V2 270 300)] ,[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 20) (V2 300 20)]
[sps0 $ putShape $ gird (V2 0 200) (V2 300 200)] ,[sps0 $ putShape $ gird (V2 0 200) (V2 300 200)]
,[sps0 $ putShape $ gird (V2 0 280) (V2 300 280)]
,[sps0 $ putShape $ gird (V2 0 20) (V2 300 20),sps0 $ putShape $ gird (V2 0 280) (V2 300 280)]
] ]
-- let y' = y & rmPmnts <>~ [l3, l4, l5]
let y' = y & rmPmnts <>~ ls <> dec let y' = y & rmPmnts <>~ ls <> dec
return $ return $
tToBTree "chasmTerm" $ tToBTree "chasmTerm" $
@@ -328,8 +328,8 @@ chasmSpitTerminal = do
, return $ cleatOnward $ triggerDoorRoom i1 , return $ cleatOnward $ triggerDoorRoom i1
] ]
where where
f rp a b = FromEdge a 2 `S.member` (fold $ rp ^? rpType . rplsType) f rp a b = FromEdge a 2 `S.member` fold (rp ^? rpType . rplsType)
&& OnEdge b `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 =
+1 -1
View File
@@ -336,7 +336,7 @@ muzzleWallCheck w cr = fromMaybe cr $ do
else let v = minimumBy (compare `on` norm) vs else let v = minimumBy (compare `on` norm) vs
in cr & crPos . _xy +~ normalize v in cr & crPos . _xy +~ normalize v
where where
f loc = map (muzzlePos loc cr) (itemMuzzles $ loc) f loc = map (muzzlePos loc cr) (itemMuzzles loc)
g cp wls p = case collidePoint cp p wls of g cp wls p = case collidePoint cp p wls of
(ep,Just _) -> Just (ep - p) (ep,Just _) -> Just (ep - p)
_ -> Nothing _ -> Nothing
+1 -9
View File
@@ -221,20 +221,12 @@ rotateToOverlappingWall w =
(overlapCircWallsClosest p r (filter _wlRotateTo $ wlsNearCirc p r w)) (overlapCircWallsClosest p r (filter _wlRotateTo $ wlsNearCirc p r w))
w w
where where
r = (crRad (cr ^. crType) + 10) r = crRad (cr ^. crType) + 10
cr = you w cr = you w
p = you w ^. crPos . _xy p = you w ^. crPos . _xy
doWallRotate :: Wall -> World -> World doWallRotate :: Wall -> World -> World
doWallRotate = rotateTo8 . argV . uncurry (-) . _wlLine doWallRotate = rotateTo8 . argV . uncurry (-) . _wlLine
--doWallRotate wl w = rotateTo8
-- | b - b' > 0.01 = w & wCam . camRot +~ 0.01
-- | b - b' < negate 0.01 = w & wCam . camRot -~ 0.01
-- | otherwise = w
-- where
-- a = argV (uncurry (-.-) $ _wlLine wl) - w ^. wCam . camRot
-- b = a * (4 / pi) -- for 8 way cardinal orientation wrt wall
-- b' = fromIntegral (round b :: Int)
clipZoom :: clipZoom ::
-- | Furthest viewable distance -- | Furthest viewable distance
+2 -2
View File
@@ -25,7 +25,6 @@ noclipCheck cfig w c
| debugOn Noclip cfig && _crID c == 0 = c -- for noclip | debugOn Noclip cfig && _crID c == 0 = c -- for noclip
| otherwise = colCrWall w c | otherwise = colCrWall w c
-- no noclip check, so no need for a configuration file
colCrWall :: World -> Creature -> Creature colCrWall :: World -> Creature -> Creature
colCrWall w c colCrWall w c
| p1 == p2 = pushOrCrush ls c | p1 == p2 = pushOrCrush ls c
@@ -47,7 +46,8 @@ colCrWall w c
p2 = c ^. crPos . _xy p2 = c ^. crPos . _xy
ls = _wlLine <$> wls ls = _wlLine <$> wls
ls' = filter (uncurry $ isLHS p1) ls ls' = filter (uncurry $ isLHS p1) ls
wls = filter notff $ wlsNearRect (p2 +.+ V2 r r) (p2 -.- V2 r r) w --wls = filter notff $ wlsNearRect (p2 + V2 r r) (p2 - V2 r r) w
wls = filter notff $ wlsNearCirc p2 r w
notff x = x ^. wlMaterial /= ForceField notff x = x ^. wlMaterial /= ForceField
-- the amount to push creatures out from walls, extra to their radius -- the amount to push creatures out from walls, extra to their radius
+1 -1
View File
@@ -30,7 +30,7 @@ postWorldLoad rdata cw = do
glNamedBufferStorage newfloorbo (fromIntegral $ 8 * nfloorvxs * floatSize) floorptr 0 glNamedBufferStorage newfloorbo (fromIntegral $ 8 * nfloorvxs * floatSize) floorptr 0
nchasmvxs <- foldM (pokeChasm chptr) 0 (cw ^. uvWorld . cWorld . chasms) nchasmvxs <- foldM (pokeChasm chptr) 0 (cw ^. uvWorld . cWorld . chasms)
glBindBufferBase GL_SHADER_STORAGE_BUFFER 7 newchbo glBindBufferBase GL_SHADER_STORAGE_BUFFER 7 newchbo
glNamedBufferStorage newchbo (fromIntegral $ 2 * (max 1 nchasmvxs) * floatSize) chptr 0 glNamedBufferStorage newchbo (fromIntegral $ 2 * max 1 nchasmvxs * floatSize) chptr 0
-- note the max 1, prevents trying to create empty buffer storage -- note the max 1, prevents trying to create empty buffer storage
checkGLError "during postWorldLoad" checkGLError "during postWorldLoad"
return $ return $
+2 -2
View File
@@ -160,9 +160,9 @@ convexHull _ = error "Tried to create the convex hull of two or fewer points"
--convexPartition _ = error "unexpected shape for convexPartition" --convexPartition _ = error "unexpected shape for convexPartition"
triangulateEarClip :: [Point2] -> [[Point2]] triangulateEarClip :: [Point2] -> [[Point2]]
triangulateEarClip (x:y:z:[]) = [(x:y:z:[])] triangulateEarClip [x,y,z] = [[x,y,z]]
triangulateEarClip (x:y:z:xs) triangulateEarClip (x:y:z:xs)
| isLHS x y z && not (any (`pointInPoly` (x:y:z:[])) xs) = (x:y:z:[]) : triangulateEarClip (x:z:xs) | isLHS x y z && not (any (`pointInPoly` [x,y,z]) xs) = [x,y,z] : triangulateEarClip (x:z:xs)
| otherwise = triangulateEarClip (y:z:xs ++ [x]) | otherwise = triangulateEarClip (y:z:xs ++ [x])
triangulateEarClip _ = error "triangulateEarClip: non-simple polygon input?" triangulateEarClip _ = error "triangulateEarClip: non-simple polygon input?"
+1 -1
View File
@@ -28,7 +28,7 @@ takeOneRem :: (RandomGen g) => [a] -> State g (Maybe (a, [a]))
takeOneRem [] = return Nothing takeOneRem [] = return Nothing
takeOneRem xs = takeOneRem xs =
state (randomR (0, length xs - 1)) >>= \i -> do state (randomR (0, length xs - 1)) >>= \i -> do
let (ys, (z : zs)) = splitAt i xs let (ys, z : zs) = splitAt i xs
return $ Just (z, ys <> zs) return $ Just (z, ys <> zs)
takeOneFiltered :: (RandomGen g) => (a -> Bool) -> [a] -> State g (Maybe a) takeOneFiltered :: (RandomGen g) => (a -> Bool) -> [a] -> State g (Maybe a)
+75 -79
View File
@@ -2508,11 +2508,11 @@ _wsMachine src/Dodge/Data/Wall/Structure.hs 13;" f
_xNum src/Dodge/Data/Item/Combine.hs 140;" f _xNum src/Dodge/Data/Item/Combine.hs 140;" f
_xNum src/Dodge/Data/Item/Combine.hs 150;" f _xNum src/Dodge/Data/Item/Combine.hs 150;" f
_xNum src/Dodge/Data/Item/Combine.hs 170;" f _xNum src/Dodge/Data/Item/Combine.hs 170;" f
aBar src/Dodge/Placement/Instance/LightSource.hs 67;" f aBar src/Dodge/Placement/Instance/LightSource.hs 69;" f
aFlame src/Dodge/Gas.hs 20;" f aFlame src/Dodge/Gas.hs 20;" f
aGasCloud src/Dodge/Gas.hs 15;" f aGasCloud src/Dodge/Gas.hs 15;" f
aRadarPulse src/Dodge/RadarSweep.hs 20;" f aRadarPulse src/Dodge/RadarSweep.hs 20;" f
aShape src/Dodge/Placement/Instance/LightSource.hs 92;" f aShape src/Dodge/Placement/Instance/LightSource.hs 94;" f
aSound src/Dodge/SoundLogic.hs 74;" f aSound src/Dodge/SoundLogic.hs 74;" f
aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f
accessTerminal src/Dodge/WorldEffect.hs 65;" f accessTerminal src/Dodge/WorldEffect.hs 65;" f
@@ -2520,7 +2520,7 @@ activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 63;" f
activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f
addArmour src/Dodge/Creature.hs 82;" f addArmour src/Dodge/Creature.hs 82;" f
addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f addBranchAt src/Dodge/Tree/GenerateStructure.hs 18;" f
addButtonSlowDoor src/Dodge/Room/LongDoor.hs 96;" f addButtonSlowDoor src/Dodge/Room/LongDoor.hs 95;" f
addCrGibs src/Dodge/Prop/Gib.hs 17;" f addCrGibs src/Dodge/Prop/Gib.hs 17;" f
addDepth src/Picture/Base.hs 125;" f addDepth src/Picture/Base.hs 125;" f
addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 43;" f addDoorAtNthLinkToggleInterrupt src/Dodge/Room/Warning.hs 43;" f
@@ -2544,14 +2544,14 @@ addIndefiniteArticle src/StringHelp.hs 17;" f
addLightsNGon src/Dodge/Room/Modify.hs 41;" f addLightsNGon src/Dodge/Room/Modify.hs 41;" f
addNodesCrossing src/Dodge/Room/Path.hs 28;" f addNodesCrossing src/Dodge/Room/Path.hs 28;" f
addNodesCrossingCirc src/Dodge/Room/Path.hs 41;" f addNodesCrossingCirc src/Dodge/Room/Path.hs 41;" f
addPane src/Dodge/Placement/PlaceSpot.hs 169;" f addPane src/Dodge/Placement/PlaceSpot.hs 176;" f
addPointPolygon src/Geometry/Polygon.hs 142;" f addPointPolygon src/Geometry/Polygon.hs 142;" f
addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f
addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f
addRandomGirderEW src/Dodge/Room/Girder.hs 9;" f addRandomGirderEW src/Dodge/Room/Girder.hs 9;" f
addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f addRandomGirderFrom src/Dodge/Room/Girder.hs 16;" f
addSideEffect src/Dodge/Concurrent.hs 29;" f addSideEffect src/Dodge/Concurrent.hs 29;" f
addSouthPillars src/Dodge/Room/LongDoor.hs 88;" f addSouthPillars src/Dodge/Room/LongDoor.hs 87;" f
addTermSignal src/Dodge/Event/Input.hs 31;" f addTermSignal src/Dodge/Event/Input.hs 31;" f
addToTrunk src/TreeHelp.hs 157;" f addToTrunk src/TreeHelp.hs 157;" f
addWarningTerminal src/Dodge/Room/Warning.hs 94;" f addWarningTerminal src/Dodge/Room/Warning.hs 94;" f
@@ -2564,11 +2564,11 @@ aimStanceInfo src/Dodge/Item/Info.hs 242;" f
aimTurn src/Dodge/Creature/YourControl.hs 181;" f aimTurn src/Dodge/Creature/YourControl.hs 181;" f
airlock src/Dodge/Room/Airlock.hs 28;" f airlock src/Dodge/Room/Airlock.hs 28;" f
airlock0 src/Dodge/Room/Airlock.hs 79;" f airlock0 src/Dodge/Room/Airlock.hs 79;" f
airlock90 src/Dodge/Room/Airlock.hs 200;" f airlock90 src/Dodge/Room/Airlock.hs 202;" f
airlockCrystal src/Dodge/Room/Airlock.hs 250;" f airlockCrystal src/Dodge/Room/Airlock.hs 252;" f
airlockDoubleDoor src/Dodge/Room/Airlock.hs 103;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 105;" f
airlockSimple src/Dodge/Room/Airlock.hs 128;" f airlockSimple src/Dodge/Room/Airlock.hs 130;" f
airlockZ src/Dodge/Room/Airlock.hs 165;" f airlockZ src/Dodge/Room/Airlock.hs 167;" f
allVisibleWalls src/Dodge/Base/Collide.hs 225;" f allVisibleWalls src/Dodge/Base/Collide.hs 225;" f
alongSegBy src/Geometry.hs 40;" f alongSegBy src/Geometry.hs 40;" f
alteRifle src/Dodge/Item/Held/Cane.hs 22;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f
@@ -2704,7 +2704,7 @@ blinkShockwave src/Dodge/Creature/Action/Blink.hs 78;" f
blinker src/Dodge/Item/Held/Utility.hs 30;" f blinker src/Dodge/Item/Held/Utility.hs 30;" f
blipAt src/Dodge/RadarSweep.hs 78;" f blipAt src/Dodge/RadarSweep.hs 78;" f
blockLine src/Dodge/Placement/Instance/Wall.hs 44;" f blockLine src/Dodge/Placement/Instance/Wall.hs 44;" f
blockPillar src/Dodge/Room/Pillar.hs 22;" f blockPillar src/Dodge/Room/Pillar.hs 23;" f
blockedCorridor src/Dodge/Room/RoadBlock.hs 71;" f blockedCorridor src/Dodge/Room/RoadBlock.hs 71;" f
blockedCorridorCloseBlocks src/Dodge/Room/RoadBlock.hs 78;" f blockedCorridorCloseBlocks src/Dodge/Room/RoadBlock.hs 78;" f
blockingLoad src/Dodge/Concurrent.hs 35;" f blockingLoad src/Dodge/Concurrent.hs 35;" f
@@ -3441,8 +3441,8 @@ ebEffect src/Dodge/EnergyBall.hs 45;" f
ebFlicker src/Dodge/EnergyBall.hs 70;" f ebFlicker src/Dodge/EnergyBall.hs 70;" f
ebtToDamage src/Dodge/EnergyBall.hs 93;" f ebtToDamage src/Dodge/EnergyBall.hs 93;" f
edgeToPic src/Dodge/Debug/Picture.hs 426;" f edgeToPic src/Dodge/Debug/Picture.hs 426;" f
effectOnEquip src/Dodge/Euse.hs 89;" f effectOnEquip src/Dodge/Euse.hs 84;" f
effectOnRemove src/Dodge/Euse.hs 79;" f effectOnRemove src/Dodge/Euse.hs 74;" f
eitType src/Dodge/Data/EquipType.hs 15;" f eitType src/Dodge/Data/EquipType.hs 15;" f
ejectS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 837;" f ejectS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 837;" f
elecCrackleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 821;" f elecCrackleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 821;" f
@@ -3492,7 +3492,7 @@ expireAndDamage src/Dodge/Bullet.hs 188;" f
explodeShell src/Dodge/Projectile/Update.hs 274;" f explodeShell src/Dodge/Projectile/Update.hs 274;" f
explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 693;" f
explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f
extTrigLitPos src/Dodge/Placement/Instance/Button.hs 80;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 82;" f
extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f
extraPics src/Dodge/Render/ShapePicture.hs 141;" f extraPics src/Dodge/Render/ShapePicture.hs 141;" f
extraWeaponLinks src/Dodge/Item/Grammar.hs 93;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 93;" f
@@ -3692,16 +3692,16 @@ halfHeight src/Dodge/Base/Window.hs 49;" f
halfWidth src/Dodge/Base/Window.hs 49;" f halfWidth src/Dodge/Base/Window.hs 49;" f
haltSound src/Dodge/SoundLogic.hs 38;" f haltSound src/Dodge/SoundLogic.hs 38;" f
hammerCheck src/Dodge/HeldUse.hs 66;" f hammerCheck src/Dodge/HeldUse.hs 66;" f
handHandleOrient src/Dodge/Item/HeldOffset.hs 57;" f handHandleOrient src/Dodge/Item/HeldOffset.hs 58;" f
handOrient src/Dodge/Item/HeldOffset.hs 39;" f handOrient src/Dodge/Item/HeldOffset.hs 40;" f
handleEvent src/Dodge/Event.hs 27;" f handleEvent src/Dodge/Event.hs 27;" f
handleHotkeys src/Dodge/Creature/YourControl.hs 46;" f handleHotkeys src/Dodge/Creature/YourControl.hs 46;" f
handleKeyboardEvent src/Dodge/Event/Input.hs 23;" f handleKeyboardEvent src/Dodge/Event/Input.hs 23;" f
handleMouseButtonEvent src/Dodge/Event/Input.hs 61;" f handleMouseButtonEvent src/Dodge/Event/Input.hs 61;" f
handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f handleMouseMotionEvent src/Dodge/Event/Input.hs 47;" f
handleMouseWheelEvent src/Dodge/Event/Input.hs 56;" f handleMouseWheelEvent src/Dodge/Event/Input.hs 56;" f
handleOrient src/Dodge/Item/HeldOffset.hs 32;" f handleOrient src/Dodge/Item/HeldOffset.hs 33;" f
handlePos src/Dodge/Item/HeldOffset.hs 78;" f handlePos src/Dodge/Item/HeldOffset.hs 79;" f
handleResizeEvent src/Dodge/Event.hs 53;" f handleResizeEvent src/Dodge/Event.hs 53;" f
handleTextInput src/Dodge/Event/Input.hs 19;" f handleTextInput src/Dodge/Event/Input.hs 19;" f
handleWindowMoveEvent src/Dodge/Event.hs 44;" f handleWindowMoveEvent src/Dodge/Event.hs 44;" f
@@ -3725,7 +3725,7 @@ heldAimStance src/Dodge/Item/AimStance.hs 24;" f
heldAimZoom src/Dodge/Update/Camera.hs 157;" f heldAimZoom src/Dodge/Update/Camera.hs 157;" f
heldEffect src/Dodge/HeldUse.hs 63;" f heldEffect src/Dodge/HeldUse.hs 63;" f
heldEffectMuzzles src/Dodge/HeldUse.hs 134;" f heldEffectMuzzles src/Dodge/HeldUse.hs 134;" f
heldHandlePos src/Dodge/Item/HeldOffset.hs 84;" f heldHandlePos src/Dodge/Item/HeldOffset.hs 85;" f
heldInfo src/Dodge/Item/Info.hs 92;" f heldInfo src/Dodge/Item/Info.hs 92;" f
heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 20;" f heldItemAmmoSlots src/Dodge/Item/AmmoSlots.hs 20;" f
heldItemBulkiness src/Dodge/Creature/YourControl.hs 194;" f heldItemBulkiness src/Dodge/Creature/YourControl.hs 194;" f
@@ -3753,7 +3753,7 @@ horPipe src/Dodge/Placement/Instance/Pipe.hs 9;" f
hotkeyToChar src/Dodge/Inventory/SelectionList.hs 185;" f hotkeyToChar src/Dodge/Inventory/SelectionList.hs 185;" f
hotkeyToScancode src/Dodge/Creature/YourControl.hs 82;" f hotkeyToScancode src/Dodge/Creature/YourControl.hs 82;" f
hotkeyToString src/Dodge/Inventory/SelectionList.hs 182;" f hotkeyToString src/Dodge/Inventory/SelectionList.hs 182;" f
iShape src/Dodge/Placement/Instance/LightSource.hs 55;" f iShape src/Dodge/Placement/Instance/LightSource.hs 57;" f
icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f icosahedronPoints src/Polyhedra/Geodesic.hs 12;" f
icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f icosohedronFaces src/Polyhedra/Geodesic.hs 19;" f
inLink src/Dodge/RoomLink.hs 128;" f inLink src/Dodge/RoomLink.hs 128;" f
@@ -3927,11 +3927,10 @@ itmBaseInfo src/Dodge/Item/Info.hs 30;" f
itmEquipSiteInfo src/Dodge/Item/Info.hs 249;" f itmEquipSiteInfo src/Dodge/Item/Info.hs 249;" f
itmSpaceInfo src/Dodge/Item/Info.hs 25;" f itmSpaceInfo src/Dodge/Item/Info.hs 25;" f
itmUsageInfo src/Dodge/Item/Info.hs 229;" f itmUsageInfo src/Dodge/Item/Info.hs 229;" f
jShape src/Dodge/Placement/Instance/LightSource.hs 70;" f jShape src/Dodge/Placement/Instance/LightSource.hs 72;" f
joinItemsInList src/Dodge/Item/Grammar.hs 211;" f joinItemsInList src/Dodge/Item/Grammar.hs 211;" f
joystick src/Dodge/Item/Scope.hs 158;" f joystick src/Dodge/Item/Scope.hs 158;" f
jps0' src/Dodge/LevelGen/PlacementHelper.hs 61;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 61;" f
jps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 64;" f
jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f jsps src/Dodge/LevelGen/PlacementHelper.hs 36;" f
jsps0 src/Dodge/LevelGen/PlacementHelper.hs 39;" f jsps0 src/Dodge/LevelGen/PlacementHelper.hs 39;" f
jsps0J src/Dodge/LevelGen/PlacementHelper.hs 48;" f jsps0J src/Dodge/LevelGen/PlacementHelper.hs 48;" f
@@ -3951,7 +3950,7 @@ lChasm src/Dodge/Room/Tutorial.hs 144;" 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
lShape src/Dodge/Placement/Instance/LightSource.hs 58;" f lShape src/Dodge/Placement/Instance/LightSource.hs 60;" f
lamp src/Dodge/Creature/Lamp.hs 18;" f lamp src/Dodge/Creature/Lamp.hs 18;" f
lampCrSPic src/Dodge/Render/ShapePicture.hs 125;" f lampCrSPic src/Dodge/Render/ShapePicture.hs 125;" f
lasCenRunClose' src/Dodge/Room/LasTurret.hs 309;" f lasCenRunClose' src/Dodge/Room/LasTurret.hs 309;" f
@@ -3988,7 +3987,7 @@ leftRightCombine src/Dodge/Item/Grammar.hs 201;" f
leftWristPQ src/Dodge/Creature/HandPos.hs 82;" f leftWristPQ src/Dodge/Creature/HandPos.hs 82;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 447;" f legsSPic src/Dodge/Item/Draw/SPic.hs 447;" f
lerpP2A src/Dodge/ShiftPoint.hs 14;" f lerpP2A src/Dodge/ShiftPoint.hs 14;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 83;" f liShape src/Dodge/Placement/Instance/LightSource.hs 85;" f
light src/Color.hs 131;" f light src/Color.hs 131;" f
lightSensByDoor src/Dodge/Room/LasTurret.hs 77;" f lightSensByDoor src/Dodge/Room/LasTurret.hs 77;" f
lightSensInsideDoor src/Dodge/Room/LasTurret.hs 64;" f lightSensInsideDoor src/Dodge/Room/LasTurret.hs 64;" f
@@ -4030,7 +4029,7 @@ locDTLeftmost src/Dodge/DoubleTree.hs 148;" f
locDTRightmost src/Dodge/DoubleTree.hs 151;" f locDTRightmost src/Dodge/DoubleTree.hs 151;" f
locGoHelp src/Dodge/DoubleTree.hs 166;" f locGoHelp src/Dodge/DoubleTree.hs 166;" f
locMuzzles src/Dodge/HeldUse.hs 148;" f locMuzzles src/Dodge/HeldUse.hs 148;" f
locOrient src/Dodge/Item/HeldOffset.hs 52;" f locOrient src/Dodge/Item/HeldOffset.hs 53;" f
locToTop src/Dodge/DoubleTree.hs 145;" f locToTop src/Dodge/DoubleTree.hs 145;" f
locUp' src/Dodge/DoubleTree.hs 132;" f locUp' src/Dodge/DoubleTree.hs 132;" f
lockInv src/Dodge/Inventory/Lock.hs 9;" f lockInv src/Dodge/Inventory/Lock.hs 9;" f
@@ -4213,12 +4212,12 @@ mkDustCloudLike src/Shader/Poke/Cloud.hs 27;" f
mkGraphFromEdges src/GraphHelp.hs 4;" f mkGraphFromEdges src/GraphHelp.hs 4;" f
mkNode src/Dodge/Graph.hs 29;" f mkNode src/Dodge/Graph.hs 29;" f
mkRectangle src/Dodge/LevelGen/DoorPane.hs 7;" f mkRectangle src/Dodge/LevelGen/DoorPane.hs 7;" f
mntLS src/Dodge/Placement/Instance/LightSource.hs 107;" f mntLS src/Dodge/Placement/Instance/LightSource.hs 109;" f
mntLSCond src/Dodge/Placement/Instance/LightSource.hs 130;" f mntLSCond src/Dodge/Placement/Instance/LightSource.hs 132;" f
mntLSOn src/Dodge/Placement/Instance/LightSource.hs 35;" f mntLSOn src/Dodge/Placement/Instance/LightSource.hs 35;" f
mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 147;" f mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 149;" f
mntLightLnkCond' src/Dodge/Placement/Instance/LightSource.hs 155;" f mntLightLnkCond' src/Dodge/Placement/Instance/LightSource.hs 157;" f
mntLightLnkShape src/Dodge/Placement/Instance/LightSource.hs 152;" f mntLightLnkShape src/Dodge/Placement/Instance/LightSource.hs 154;" f
modTo src/Geometry/Zone.hs 18;" f modTo src/Geometry/Zone.hs 18;" f
mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 70;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 70;" f
mouseCursorType src/Dodge/Render/Picture.hs 90;" f mouseCursorType src/Dodge/Render/Picture.hs 90;" f
@@ -4249,16 +4248,16 @@ muzFlareAt src/Dodge/HeldUse.hs 692;" f
muzzlePos src/Dodge/HeldUse.hs 779;" f muzzlePos src/Dodge/HeldUse.hs 779;" f
muzzleRandPos src/Dodge/HeldUse.hs 788;" f muzzleRandPos src/Dodge/HeldUse.hs 788;" f
muzzleWallCheck src/Dodge/Update.hs 323;" f muzzleWallCheck src/Dodge/Update.hs 323;" f
mvButton src/Dodge/Placement/PlaceSpot.hs 177;" f mvButton src/Dodge/Placement/PlaceSpot.hs 184;" f
mvCr src/Dodge/Placement/PlaceSpot.hs 180;" f mvCr src/Dodge/Placement/PlaceSpot.hs 187;" f
mvFS src/Dodge/Placement/PlaceSpot.hs 186;" f mvFS src/Dodge/Placement/PlaceSpot.hs 190;" f
mvGust src/Dodge/Update.hs 846;" f mvGust src/Dodge/Update.hs 846;" f
mvLS src/Dodge/Placement/PlaceSpot.hs 222;" f mvLS src/Dodge/Placement/PlaceSpot.hs 228;" f
mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f
mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f
mvPointToward src/Dodge/Base.hs 136;" f mvPointToward src/Dodge/Base.hs 136;" f
mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f
mvProp src/Dodge/Placement/PlaceSpot.hs 174;" f mvProp src/Dodge/Placement/PlaceSpot.hs 181;" f
myIntersectLineLine src/Geometry/Intersect.hs 196;" f myIntersectLineLine src/Geometry/Intersect.hs 196;" f
myIntersectSegSeg src/Geometry/Intersect.hs 174;" f myIntersectSegSeg src/Geometry/Intersect.hs 174;" f
nRays src/Geometry.hs 182;" f nRays src/Geometry.hs 182;" f
@@ -4306,9 +4305,8 @@ numTraversable src/TreeHelp.hs 184;" f
obstacleColor src/Dodge/Debug/Picture.hs 264;" f obstacleColor src/Dodge/Debug/Picture.hs 264;" f
obstructPathsCrossing src/Dodge/Path.hs 120;" f obstructPathsCrossing src/Dodge/Path.hs 120;" f
oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 635;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 635;" f
onEquipWristShield src/Dodge/Euse.hs 94;" f onEquipWristShield src/Dodge/Euse.hs 89;" f
onRemoveWristShield src/Dodge/Euse.hs 84;" f onRemoveWristShield src/Dodge/Euse.hs 79;" f
onXY src/Geometry/Vector3D.hs 130;" f
oneH src/Dodge/Creature/Test.hs 97;" f oneH src/Dodge/Creature/Test.hs 97;" f
openConsole src/Dodge/Update.hs 138;" f openConsole src/Dodge/Update.hs 138;" f
optionMenu src/Dodge/Menu.hs 110;" f optionMenu src/Dodge/Menu.hs 110;" f
@@ -4394,21 +4392,21 @@ pjRemoteSetDirection src/Dodge/Projectile/Update.hs 196;" f
plBlock src/Dodge/Placement/PlaceSpot/Block.hs 24;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 24;" f
plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f
plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 57;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 57;" f
plMachine src/Dodge/Placement/PlaceSpot.hs 189;" f plMachine src/Dodge/Placement/PlaceSpot.hs 193;" f
plNew src/Dodge/Base/NewID.hs 19;" f plNew src/Dodge/Base/NewID.hs 19;" f
plNewID src/Dodge/Base/NewID.hs 7;" f plNewID src/Dodge/Base/NewID.hs 7;" f
plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f
plNewUsing src/Dodge/Base/NewID.hs 27;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f
plPriority src/Dodge/Layout.hs 112;" f plPriority src/Dodge/Layout.hs 112;" f
plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f
placeChasm src/Dodge/Placement/PlaceSpot.hs 153;" f placeChasm src/Dodge/Placement/PlaceSpot.hs 159;" f
placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 216;" f placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 221;" f
placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 41;" f placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 41;" f
placeSpot src/Dodge/Placement/PlaceSpot.hs 33;" f placeSpot src/Dodge/Placement/PlaceSpot.hs 33;" f
placeSpotID src/Dodge/Placement/PlaceSpot.hs 102;" f placeSpotID src/Dodge/Placement/PlaceSpot.hs 101;" f
placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 87;" f placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 85;" f
placeSpotUsingRoomPos src/Dodge/Placement/PlaceSpot.hs 65;" f placeSpotUsingRoomPos src/Dodge/Placement/PlaceSpot.hs 63;" f
placeWallPoly src/Dodge/Placement/PlaceSpot.hs 164;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 171;" f
plainRegex src/Dodge/DisplayInventory.hs 193;" f plainRegex src/Dodge/DisplayInventory.hs 193;" f
playIfFree src/Sound.hs 139;" f playIfFree src/Sound.hs 139;" f
playPositionalSoundQueue src/Sound.hs 147;" f playPositionalSoundQueue src/Sound.hs 147;" f
@@ -4515,20 +4513,19 @@ printRotPoint src/Dodge/Debug/Picture.hs 38;" f
prismBox src/Shape.hs 74;" f prismBox src/Shape.hs 74;" f
prismPoly src/Shape.hs 60;" f prismPoly src/Shape.hs 60;" f
projV src/Geometry/Vector.hs 177;" f projV src/Geometry/Vector.hs 177;" f
projV3 src/Geometry/Vector3D.hs 127;" f
propSPic src/Dodge/Prop/Draw.hs 22;" f propSPic src/Dodge/Prop/Draw.hs 22;" f
propagateOrientation src/Dodge/Item/Orientation.hs 92;" f propagateOrientation src/Dodge/Item/Orientation.hs 92;" f
ps0 src/Dodge/LevelGen/PlacementHelper.hs 52;" f ps0 src/Dodge/LevelGen/PlacementHelper.hs 52;" f
ps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 80;" f ps0PushPS src/Dodge/LevelGen/PlacementHelper.hs 76;" f
ps0PushPSw src/Dodge/LevelGen/PlacementHelper.hs 84;" f ps0PushPSw src/Dodge/LevelGen/PlacementHelper.hs 80;" f
ps0j src/Dodge/LevelGen/PlacementHelper.hs 68;" f ps0j src/Dodge/LevelGen/PlacementHelper.hs 64;" f
ps0jPushPS src/Dodge/LevelGen/PlacementHelper.hs 75;" f ps0jPushPS src/Dodge/LevelGen/PlacementHelper.hs 71;" f
psPt src/Dodge/LevelGen/PlacementHelper.hs 24;" f psPt src/Dodge/LevelGen/PlacementHelper.hs 24;" f
psPtCont src/Dodge/LevelGen/PlacementHelper.hs 18;" f psPtCont src/Dodge/LevelGen/PlacementHelper.hs 18;" f
psPtJpl src/Dodge/LevelGen/PlacementHelper.hs 12;" f psPtJpl src/Dodge/LevelGen/PlacementHelper.hs 12;" f
psPtPl src/Dodge/LevelGen/PlacementHelper.hs 9;" f psPtPl src/Dodge/LevelGen/PlacementHelper.hs 9;" f
psRandRanges src/Dodge/PlacementSpot.hs 267;" f psRandRanges src/Dodge/PlacementSpot.hs 267;" f
psj src/Dodge/LevelGen/PlacementHelper.hs 71;" f psj src/Dodge/LevelGen/PlacementHelper.hs 67;" f
psposAddLabel src/Dodge/PlacementSpot.hs 71;" f psposAddLabel src/Dodge/PlacementSpot.hs 71;" f
pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f pt0 src/Dodge/LevelGen/PlacementHelper.hs 55;" f
ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f ptCont src/Dodge/LevelGen/PlacementHelper.hs 21;" f
@@ -4547,15 +4544,15 @@ putBlockN src/Dodge/Placement/Instance/Wall.hs 120;" f
putBlockRect src/Dodge/Placement/Instance/Wall.hs 111;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 111;" f
putBlockV src/Dodge/Placement/Instance/Wall.hs 114;" f putBlockV src/Dodge/Placement/Instance/Wall.hs 114;" f
putConvexChasm src/Dodge/Data/GenWorld.hs 70;" f putConvexChasm src/Dodge/Data/GenWorld.hs 70;" f
putDoor src/Dodge/Room/Airlock.hs 115;" f putDoor src/Dodge/Room/Airlock.hs 117;" f
putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f
putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 21;" f putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 21;" f
putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 60;" f putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 60;" f
putLamp src/Dodge/Placement/Instance/LightSource.hs 207;" f putLamp src/Dodge/Placement/Instance/LightSource.hs 209;" f
putLasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f putLasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
putLitButOnPos src/Dodge/Placement/Instance/Button.hs 65;" f putLitButOnPos src/Dodge/Placement/Instance/Button.hs 66;" f
putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 98;" f putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 100;" f
putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 101;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 103;" f
putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 57;" f putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 57;" f
putShape src/Dodge/Room/Foreground.hs 134;" f putShape src/Dodge/Room/Foreground.hs 134;" f
putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f
@@ -4723,10 +4720,10 @@ roomGlassOctogon src/Dodge/Room/Boss.hs 22;" f
roomMiniIntro src/Dodge/Room/Room.hs 132;" f roomMiniIntro src/Dodge/Room/Room.hs 132;" f
roomNgon src/Dodge/Room/Ngon.hs 16;" f roomNgon src/Dodge/Room/Ngon.hs 16;" f
roomPadCut src/Dodge/Room/Room.hs 72;" f roomPadCut src/Dodge/Room/Room.hs 72;" f
roomPillars src/Dodge/Room/Pillar.hs 106;" f roomPillars src/Dodge/Room/Pillar.hs 107;" f
roomPillarsContaining src/Dodge/Room/Containing.hs 39;" f roomPillarsContaining src/Dodge/Room/Containing.hs 39;" f
roomPillarsPassage src/Dodge/Room/Pillar.hs 93;" f roomPillarsPassage src/Dodge/Room/Pillar.hs 94;" f
roomPillarsSquare src/Dodge/Room/Pillar.hs 49;" f roomPillarsSquare src/Dodge/Room/Pillar.hs 50;" f
roomRect src/Dodge/Room/Procedural.hs 42;" f roomRect src/Dodge/Room/Procedural.hs 42;" f
roomRectAutoLights src/Dodge/Room/Procedural.hs 119;" f roomRectAutoLights src/Dodge/Room/Procedural.hs 119;" f
roomShuriken src/Dodge/Room/Boss.hs 116;" f roomShuriken src/Dodge/Room/Boss.hs 116;" f
@@ -4740,7 +4737,6 @@ rotD src/Padding.hs 44;" f
rotMatr src/MatrixHelper.hs 79;" f rotMatr src/MatrixHelper.hs 79;" f
rotU src/Padding.hs 39;" f rotU src/Padding.hs 39;" f
rotate src/Picture/Base.hs 145;" f rotate src/Picture/Base.hs 145;" f
rotate3 src/Geometry/Vector3D.hs 48;" f
rotate3x src/Geometry/Vector3D.hs 60;" f rotate3x src/Geometry/Vector3D.hs 60;" f
rotate3y src/Geometry/Vector3D.hs 66;" f rotate3y src/Geometry/Vector3D.hs 66;" f
rotate3z src/Geometry/Vector3D.hs 54;" f rotate3z src/Geometry/Vector3D.hs 54;" f
@@ -4882,7 +4878,7 @@ setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
setViewport src/Dodge/Render.hs 448;" f setViewport src/Dodge/Render.hs 448;" f
setVol src/Dodge/Config.hs 47;" f setVol src/Dodge/Config.hs 47;" f
setWindowColor src/Dodge/Render/Walls.hs 32;" f setWindowColor src/Dodge/Render/Walls.hs 32;" f
setWristShieldPos src/Dodge/Euse.hs 113;" f setWristShieldPos src/Dodge/Euse.hs 108;" f
setupConLoop src/Loop.hs 103;" f setupConLoop src/Loop.hs 103;" f
setupConLoop' src/Loop.hs 193;" f setupConLoop' src/Loop.hs 193;" f
setupFramebuffer2GivenStencil src/Framebuffer/Setup.hs 46;" f setupFramebuffer2GivenStencil src/Framebuffer/Setup.hs 46;" f
@@ -4945,7 +4941,7 @@ shootingRange src/Dodge/Room/Room.hs 356;" f
shortPoint2 src/Dodge/ShortShow.hs 4;" f shortPoint2 src/Dodge/ShortShow.hs 4;" f
shortShow src/ShortShow.hs 7;" f shortShow src/ShortShow.hs 7;" f
shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 527;" f shotgunS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 527;" f
shoulderHeight src/Dodge/Item/HeldOffset.hs 63;" f shoulderHeight src/Dodge/Item/HeldOffset.hs 64;" f
shoulderSH src/Dodge/Creature/Picture.hs 122;" f shoulderSH src/Dodge/Creature/Picture.hs 122;" f
showAttachItem src/Dodge/Item/Display.hs 92;" f showAttachItem src/Dodge/Item/Display.hs 92;" f
showEquipItem src/Dodge/Item/Display.hs 108;" f showEquipItem src/Dodge/Item/Display.hs 108;" f
@@ -4991,8 +4987,8 @@ slapClean7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 747;" f
slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 667;" f slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 667;" f
slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 629;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 629;" f
slideWindow src/ListHelp.hs 81;" f slideWindow src/ListHelp.hs 81;" f
slowDoorRoom src/Dodge/Room/LongDoor.hs 141;" f slowDoorRoom src/Dodge/Room/LongDoor.hs 139;" f
slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 158;" f slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 156;" f
smallBattery src/Dodge/Item/Ammo.hs 57;" f smallBattery src/Dodge/Item/Ammo.hs 57;" f
smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f
smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f
@@ -5001,7 +4997,7 @@ smallGlass1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 825;" f
smallGlass2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 535;" f smallGlass2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 535;" f
smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 805;" f smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 805;" f
smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 607;" f smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 607;" f
smallPillar src/Dodge/Room/Pillar.hs 37;" f smallPillar src/Dodge/Room/Pillar.hs 38;" f
smallRoom src/Dodge/Room/RunPast.hs 31;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f
smallSnailInt2 src/Dodge/Path.hs 81;" f smallSnailInt2 src/Dodge/Path.hs 81;" f
smg src/Dodge/Item/Held/Stick.hs 30;" f smg src/Dodge/Item/Held/Stick.hs 30;" f
@@ -5027,13 +5023,13 @@ soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 175;" f
soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f
soundWithStatus src/Dodge/SoundLogic.hs 104;" f soundWithStatus src/Dodge/SoundLogic.hs 104;" f
soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f soundWithStatusVolume src/Dodge/SoundLogic.hs 54;" f
southPillarsRoom src/Dodge/Room/LongDoor.hs 85;" f southPillarsRoom src/Dodge/Room/LongDoor.hs 84;" f
spaceAction src/Dodge/Update/Input/InGame.hs 534;" f spaceAction src/Dodge/Update/Input/InGame.hs 534;" f
spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 180;" f spanColLightBlackI src/Dodge/Placement/Instance/LightSource.hs 182;" f
spanColLightI src/Dodge/Placement/Instance/LightSource.hs 173;" f spanColLightI src/Dodge/Placement/Instance/LightSource.hs 175;" f
spanLS src/Dodge/Placement/Instance/LightSource.hs 165;" f spanLS src/Dodge/Placement/Instance/LightSource.hs 167;" f
spanLightI src/Dodge/Placement/Instance/LightSource.hs 187;" f spanLightI src/Dodge/Placement/Instance/LightSource.hs 189;" f
spanLightY src/Dodge/Placement/Instance/LightSource.hs 191;" f spanLightY src/Dodge/Placement/Instance/LightSource.hs 193;" f
sparkDam src/Dodge/Spark.hs 37;" f sparkDam src/Dodge/Spark.hs 37;" f
sparkRandDir src/Dodge/Spark.hs 117;" f sparkRandDir src/Dodge/Spark.hs 117;" f
sparkToDamage src/Dodge/Spark.hs 40;" f sparkToDamage src/Dodge/Spark.hs 40;" f
@@ -5110,7 +5106,7 @@ strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f
strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f
strengthFactor src/Dodge/Creature/Impulse/Movement.hs 51;" f strengthFactor src/Dodge/Creature/Impulse/Movement.hs 51;" f
strictify src/MaybeHelp.hs 35;" f strictify src/MaybeHelp.hs 35;" f
strideRot src/Dodge/Item/HeldOffset.hs 66;" f strideRot src/Dodge/Item/HeldOffset.hs 67;" f
stringToList src/Picture/Base.hs 308;" f stringToList src/Picture/Base.hs 308;" f
stringToListGrad src/Picture/Text.hs 12;" f stringToListGrad src/Picture/Text.hs 12;" f
stripZ src/Geometry/Vector3D.hs 97;" f stripZ src/Geometry/Vector3D.hs 97;" f
@@ -5266,7 +5262,7 @@ tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f
tranRot src/Picture/Base.hs 116;" f tranRot src/Picture/Base.hs 116;" f
transMat src/MatrixHelper.hs 87;" f transMat src/MatrixHelper.hs 87;" f
transToHandle src/Dodge/Item/HeldOffset.hs 27;" f transToHandle src/Dodge/Item/HeldOffset.hs 28;" f
translate src/Picture/Base.hs 108;" f translate src/Picture/Base.hs 108;" f
translate3 src/Picture/Base.hs 112;" f translate3 src/Picture/Base.hs 112;" f
translateFloatingCamera src/Dodge/Update/Camera.hs 49;" f translateFloatingCamera src/Dodge/Update/Camera.hs 49;" f
@@ -5301,9 +5297,9 @@ treeToPotentialFunction src/Dodge/Item/Grammar.hs 147;" f
triLootRoom src/Dodge/Room/Treasure.hs 23;" f triLootRoom src/Dodge/Room/Treasure.hs 23;" f
triangulateEarClip src/Geometry/Polygon.hs 162;" f triangulateEarClip src/Geometry/Polygon.hs 162;" f
triggerDoorRoom src/Dodge/Room/Door.hs 32;" f triggerDoorRoom src/Dodge/Room/Door.hs 32;" f
triggerSwitch src/Dodge/Placement/Instance/Button.hs 47;" f triggerSwitch src/Dodge/Placement/Instance/Button.hs 48;" f
triggerSwitchSPic src/Dodge/Placement/Instance/Button.hs 14;" f triggerSwitchSPic src/Dodge/Placement/Instance/Button.hs 15;" f
triggerSwitchSPicLight src/Dodge/Placement/Instance/Button.hs 31;" f triggerSwitchSPicLight src/Dodge/Placement/Instance/Button.hs 32;" f
truncFaces src/Polyhedra/Geodesic.hs 54;" f truncFaces src/Polyhedra/Geodesic.hs 54;" f
truncate src/Polyhedra/Geodesic.hs 39;" f truncate src/Polyhedra/Geodesic.hs 39;" f
trunkDepth src/TreeHelp.hs 162;" f trunkDepth src/TreeHelp.hs 162;" f
@@ -5334,11 +5330,11 @@ tutRezBox src/Dodge/Room/Tutorial.hs 523;" f
tutRoomTree src/Dodge/Floor.hs 20;" f tutRoomTree src/Dodge/Floor.hs 20;" f
tutorialMessage1 src/Dodge/Room/Tutorial.hs 548;" f tutorialMessage1 src/Dodge/Room/Tutorial.hs 548;" 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 78;" f
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f
twists src/Dodge/Creature/Test.hs 103;" f twists src/Dodge/Creature/Test.hs 103;" f
twoFlat src/Dodge/Creature/Test.hs 100;" f twoFlat src/Dodge/Creature/Test.hs 100;" f
twoFlatHRot src/Dodge/Item/HeldOffset.hs 75;" f twoFlatHRot src/Dodge/Item/HeldOffset.hs 76;" f
twoHandTwistAmount src/Dodge/Creature/YourControl.hs 166;" f twoHandTwistAmount src/Dodge/Creature/YourControl.hs 166;" f
twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f twoRoomPoss src/Dodge/PlacementSpot.hs 148;" f
twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 519;" f twoStep1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 519;" f
@@ -5530,7 +5526,7 @@ vCen3 src/Geometry/Vector3D.hs 115;" f
vInverse src/Geometry/Vector.hs 154;" f vInverse src/Geometry/Vector.hs 154;" f
vNormal src/Geometry/Vector.hs 149;" f vNormal src/Geometry/Vector.hs 149;" f
vNormaly src/Geometry/Vector3D.hs 72;" f vNormaly src/Geometry/Vector3D.hs 72;" f
vShape src/Dodge/Placement/Instance/LightSource.hs 97;" f vShape src/Dodge/Placement/Instance/LightSource.hs 99;" f
vToL src/MatrixHelper.hs 56;" f vToL src/MatrixHelper.hs 56;" f
vToQuat src/Quaternion.hs 42;" f vToQuat src/Quaternion.hs 42;" f
validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f