Add roots and parents to adjacency function from Double Trees

This commit is contained in:
2024-09-21 20:30:29 +01:00
parent 86d8e3a98a
commit 2154abfb1d
10 changed files with 118 additions and 124 deletions
+1 -1
View File
@@ -1 +1 @@
All good (617 modules, at 19:41:21)
All good (617 modules, at 20:22:17)
+13 -13
View File
@@ -6,14 +6,14 @@ module Dodge.Creature.State (
import Dodge.Item.Display -- this should not really be imported... TODO move canAttachTargetingBelow
import Control.Applicative
import Data.Foldable
import Data.Maybe
--import Data.Maybe
import Dodge.Base
import Dodge.Corpse.Make
import Dodge.Creature.Action
import Dodge.Creature.Damage
import Dodge.Creature.Impulse.Movement
import Dodge.Creature.State.WalkCycle
import Dodge.Creature.Test
--import Dodge.Creature.Test
import Dodge.Damage
import Dodge.Data.World
import Dodge.EnergyBall
@@ -62,20 +62,20 @@ stateUpdate f =
, updateInv -- upInv must be called before invSideEff 22.05.23
, invSideEff
, equipmentEffects
, heldItemEffects
, heldAimEffects
-- , heldItemEffects
-- , heldAimEffects
]
heldItemEffects :: Creature -> World -> World
heldItemEffects _ = id
--heldItemEffects :: Creature -> World -> World
--heldItemEffects _ = id
heldAimEffects :: Creature -> World -> World
heldAimEffects cr = fromMaybe id $ do
guard (crIsAiming cr)
ipos <- cr ^? crManipulation . manObject . inInventory . ispItem
itm <- cr ^? crInv . ix ipos
f <- itm ^? itEffect . ieWhileAiming
return $ doInvEffect f itm cr
--heldAimEffects :: Creature -> World -> World
--heldAimEffects cr = fromMaybe id $ do
-- guard (crIsAiming cr)
-- ipos <- cr ^? crManipulation . manObject . inInventory . ispItem
-- itm <- cr ^? crInv . ix ipos
-- f <- itm ^? itEffect . ieWhileAiming
-- return $ doInvEffect f itm cr
checkDeath :: Creature -> World -> World
checkDeath cr w
-1
View File
@@ -13,7 +13,6 @@ data ItEffect = ItEffect
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
, _ieOnInsert :: ItInvEffect
, _ieOnDrop :: ItInvEffect --Item -> Creature -> World -> World
, _ieWhileAiming :: ItInvEffect
}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
-1
View File
@@ -8,5 +8,4 @@ defaultItEffect =
{ _ieInv = NoInvEffect
, _ieOnInsert = NoInvEffect
, _ieOnDrop = NoInvEffect
, _ieWhileAiming = NoInvEffect
}
+22
View File
@@ -3,6 +3,13 @@ module Dodge.DoubleTree where
import Dodge.Data.DoubleTree
import qualified Data.IntMap.Strict as IM
singleDT :: a -> DoubleTree a
singleDT x = DT x [] []
singleLDT :: a -> LabelDoubleTree b a
singleLDT x = LDT x [] []
ldtToDT :: LabelDoubleTree b a -> DoubleTree a
ldtToDT (LDT x l r) = DT x (map (ldtToDT . snd) l) (map (ldtToDT . snd) r)
@@ -31,6 +38,21 @@ dtToUpDownAdj f (DT x l r) = IM.insert (f x) (map g l , map g r)
where
g = f . _dtValue
-- returns an adjacency map with oldest ancestor and direct parent if they exist
-- and any left and right children
dtToLRAdj :: (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe (Int,Int),[Int],[Int])
dtToLRAdj f (DT x l r) = IM.insert i (Nothing,map g l , map g r)
. IM.unions $ map (dtToAdjRootParent i i f) $ l <> r
where
i = f x
g = f . _dtValue
dtToAdjRootParent :: Int -> Int -> (a -> Int) -> DoubleTree a -> IM.IntMap (Maybe (Int,Int),[Int],[Int])
dtToAdjRootParent root par f (DT x l r) = IM.insert (f x) (Just (root,par),map g l , map g r)
. IM.unions $ map (dtToAdjRootParent root (f x) f) $ l <> r
where
g = f . _dtValue
ldtToIM :: (a -> Int) -> LabelDoubleTree b a -> IM.IntMap (LabelDoubleTree b a)
ldtToIM f t@(LDT x l r) = IM.insert (f x) t $ IM.unions $ map (ldtToIM f . snd) $ l <> r
+17 -26
View File
@@ -7,7 +7,7 @@ module Dodge.HeldUse
import Dodge.Base.Collide
import Dodge.Inventory.Lock
import Dodge.WorldEvent.Cloud
--import Dodge.WorldEvent.Cloud
import Dodge.LightSource
import qualified SDL
--import Dodge.Base.You
@@ -15,7 +15,7 @@ import Dodge.Data.MuzzleEffect
import ListHelp
import Dodge.Data.ComposedItem
import Dodge.Data.DoubleTree
import Color
--import Color
import Data.Maybe
--import Data.Traversable
import Dodge.Base.Coordinate
@@ -158,20 +158,20 @@ basicMuzFlare pos dir = makeTlsTimeRadColPos 2 100 (V3 1 1 0.5) (pos `v2z` 20)
. muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir
. muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir
-- need to add these to muzzle flare
makeMuzzleSmoke :: Muzzle -> Item -> Creature -> World -> World
makeMuzzleSmoke mz itm cr w = case mz ^. mzFlareType of
DefaultFlareType -> w
PistolFlare -> foldl' (flip $ smokeCloudAt (greyN 0.5) 5 400 5 . (+.+.+ pos) . (* 8)) w ps
MiniGunFlare -> smokeCloudAt (greyN 0.5) 5 400 5 pos w
HeavySmokeFlare -> foldl' (flip $ smokeCloudAt black 20 400 5 . (+.+.+ pos) . (* 8)) w ps'
LasGunFlare -> w
TeslaGunFlare -> w
where
ps = replicateM 2 randOnUnitSphere & evalState $ _randGen w
ps' = replicateM 4 randOnUnitSphere & evalState $ _randGen w
pos = addZ 10 $ _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm)
-- , withSmoke 1 black 20 200 5
---- need to add these to muzzle flare?
--makeMuzzleSmoke :: Muzzle -> Item -> Creature -> World -> World
--makeMuzzleSmoke mz itm cr w = case mz ^. mzFlareType of
-- DefaultFlareType -> w
-- PistolFlare -> foldl' (flip $ smokeCloudAt (greyN 0.5) 5 400 5 . (+.+.+ pos) . (* 8)) w ps
-- MiniGunFlare -> smokeCloudAt (greyN 0.5) 5 400 5 pos w
-- HeavySmokeFlare -> foldl' (flip $ smokeCloudAt black 20 400 5 . (+.+.+ pos) . (* 8)) w ps'
-- LasGunFlare -> w
-- TeslaGunFlare -> w
-- where
-- ps = replicateM 2 randOnUnitSphere & evalState $ _randGen w
-- ps' = replicateM 4 randOnUnitSphere & evalState $ _randGen w
-- pos = addZ 10 $ _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm)
---- , withSmoke 1 black 20 200 5
isAmmoIntLink :: Int -> ComposeLinkType -> Bool
isAmmoIntLink i (AmmoInLink j _) = i == j
@@ -186,7 +186,7 @@ useLoadedAmmo itm cr (cme,w) (mzid,(mz,x,mid)) = (,) (cme & cmeSound .~ True) $
MuzzleLaser -> shootLaser' itm cr mz w
MuzzleTesla -> shootTeslaArc itm cr mz w
MuzzleTractor -> shootTractorBeam itm cr w
MuzzleLauncher -> createProjectile' mid mz itm cr w
MuzzleLauncher -> createProjectile mid mz itm cr w
MuzzleNozzle {} -> useGasParams mid mz itm cr $ walkNozzle mzid mz itm cr w
MuzzleShatter -> shootShatter itm cr w
MuzzleForceField -> useForceFieldGun itm cr w
@@ -375,15 +375,6 @@ useHeld hu = case hu of
-- maxa = _nzMaxWalkAngle nz
-- wa = min maxa $ max (negate maxa) (_nzCurrentWalkAngle nz + walkamount)
getAmmoMagazine :: Item -> Creature -> Maybe ItemUse
getAmmoMagazine itm cr = do
invid <- itm ^? itLocation . ipInvID
amtype <- itm ^? itUse . heldAmmoTypes . ix 0
mag <- cr ^? crInv . ix (invid + 1) . itUse
magtype <- mag ^? amagType
guard $ amtype == magtype
return mag
useGasParams :: Maybe Int -> Muzzle -> Item -> Creature -> World -> World
useGasParams mmagid mz itm cr w =
createGas
+6 -17
View File
@@ -1,7 +1,8 @@
module Dodge.Item.Grammar
-- (invTree
-- , indentInv
-- )
(invTrees
, invIndentIM
, invAdj
)
where
import Control.Applicative
import Data.Maybe
@@ -22,12 +23,6 @@ type CIL = (ComposedItem,[(ComposeLinkType,ComposedItem)], [(ComposeLinkType,Com
cisToItem :: ComposedItemStructure -> Item
cisToItem (x,_,_,_) = x
singleDT :: a -> DoubleTree a
singleDT x = DT x [] []
singleLDT :: a -> LabelDoubleTree b a
singleLDT x = LDT x [] []
baseComposedItem :: ItemBaseType -> Item -> CIL
baseComposedItem ibt itm = case ibt of
HELD hit -> heldComposedItem itm hit
@@ -56,9 +51,6 @@ baseCIS :: Item -> ComposedItemStructure
baseCIS itm = let (a,b,c) = baseComposedItem (itm ^. itType . iyBase) itm
in (itm, a, b, c)
type LDTTest a b = LabelDoubleTree b a -> LabelDoubleTree b a -> Maybe b
type LDTCombine a b = LabelDoubleTree b a -> LabelDoubleTree b a -> b -> LabelDoubleTree b a
type LDTComb a b = LabelDoubleTree b a -> LabelDoubleTree b a -> Maybe (LabelDoubleTree b a)
-- the following imposes a strict ordering on the possible attachments
@@ -100,8 +92,8 @@ invLDT :: IM.IntMap Item -> [LabelDoubleTree ComposeLinkType ComposedItemStructu
invLDT = joinItemsInList (leftRightCombine leftIsParentCombine rightIsParentCombine) . IM.elems .
fmap (singleLDT . baseCIS)
invAdj :: IM.IntMap Item -> IM.IntMap ([Int],[Int])
invAdj = IM.unions . fmap (dtToUpDownAdj getid . ldtToDT) . invLDT
invAdj :: IM.IntMap Item -> IM.IntMap (Maybe (Int,Int),[Int],[Int])
invAdj = IM.unions . fmap (dtToLRAdj getid . ldtToDT) . invLDT
where
getid (itm, _,_,_) = fromMaybe (error "invAdj attempt to find item not in inventory") $
itm ^? itLocation . ipInvID
@@ -109,10 +101,7 @@ invAdj = IM.unions . fmap (dtToUpDownAdj getid . ldtToDT) . invLDT
invIndentIM :: IM.IntMap Item -> IM.IntMap (Item,Int, LabelDoubleTreeNodeType ComposeLinkType )
invIndentIM = IM.fromAscList . zip [0..] . reverse . map (over _1 cisToItem) . concatMap ldtToIndentList . invLDT
--invTrees :: IM.IntMap Item -> [(LabelDoubleTree ComposeLinkType Item)]
invTrees :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ComposeLinkType Item)
--invTrees = map (ldtToIM getindex) . map (fmap cisToItem) . invLDT
--invTrees = map (ldtToIM getindex) . map (fmap cisToItem) . invLDT
invTrees = IM.unions . map (ldtToIM getindex) . map (fmap cisToItem) . invLDT
where
getindex :: Item -> Int
+5 -4
View File
@@ -1,4 +1,6 @@
module Dodge.Projectile.Create where
module Dodge.Projectile.Create
( createProjectile
) where
import Dodge.SoundLogic
import Control.Monad
@@ -9,9 +11,8 @@ import qualified IntMapHelp as IM
import LensHelp
import qualified SDL
createProjectile' :: Maybe Int -> Muzzle -> Item -> Creature -> World -> World
createProjectile' mmagid muz itm cr = fromMaybe failsound $ do
createProjectile :: Maybe Int -> Muzzle -> Item -> Creature -> World -> World
createProjectile mmagid muz itm cr = fromMaybe failsound $ do
magid <- mmagid
ammoitem <- cr ^? crInv . ix magid
matype <- ammoitem ^? itUse . amagType
+3 -2
View File
@@ -183,8 +183,9 @@ examineInventoryExtra mtweaki cfig = fromMaybe mempty $ do
translate subInvX (-71) $
listCursorChooseBorderScale 0 1 [North, South, West] tweaki 0 white 10 1
inventoryExtra :: SelectionSections () -> Configuration -> World -> IM.IntMap ([Int],[Int]) -> Picture
inventoryExtra sss cfig w is = translate (negate 5) 0 $ IM.foldMapWithKey (inventoryExtraH sss cfig w) $ fmap (\(a,b) -> a<>b) is
inventoryExtra :: SelectionSections () -> Configuration -> World
-> IM.IntMap (Maybe (Int,Int),[Int],[Int]) -> Picture
inventoryExtra sss cfig w is = translate (negate 5) 0 $ IM.foldMapWithKey (inventoryExtraH sss cfig w) $ fmap (\(_,a,b) -> a<>b) is
inventoryExtraH :: SelectionSections () -> Configuration -> World -> Int -> [Int] -> Picture
inventoryExtraH sss cfig w i is = fromMaybe mempty $ do
+51 -59
View File
@@ -328,7 +328,7 @@ CDoNothing src/Dodge/Data/Item/HeldUse.hs 34;" C
CHARTREUSE src/Color/Data.hs 25;" C
CHEMFUELPOUCH src/Dodge/Data/Item/Combine.hs 114;" C
CHeal src/Dodge/Data/Item/HeldUse.hs 35;" C
CIL src/Dodge/Item/Grammar.hs 20;" t
CIL src/Dodge/Item/Grammar.hs 21;" t
CIRCLE src/Dodge/Data/GenParams.hs 20;" C
CME src/Dodge/Data/MuzzleEffect.hs 11;" C
CONCUSBUL src/Dodge/Combine/Data.hs 206;" C
@@ -447,7 +447,7 @@ Compose src/Dodge/Tree/Compose.hs 4;" m
ComposeLinkType src/Dodge/Data/ComposedItem.hs 13;" t
ComposedItem src/Dodge/Data/ComposedItem.hs 21;" t
ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m
ComposedItemStructure src/Dodge/Item/Grammar.hs 17;" t
ComposedItemStructure src/Dodge/Item/Grammar.hs 18;" t
Composite src/Picture/Composite.hs 1;" m
ComsSS src/Dodge/Data/Scenario.hs 98;" C
ConcBall src/Dodge/Data/Bullet.hs 32;" C
@@ -1341,12 +1341,10 @@ LBoost src/Dodge/Data/Item/HeldUse.hs 65;" C
LBranches src/TreeExtra.hs 24;" C
LDT src/Dodge/Data/DoubleTree.hs 39;" C
LDTBottomNode src/Dodge/Data/DoubleTree.hs 27;" C
LDTComb src/Dodge/Item/Grammar.hs 62;" t
LDTCombine src/Dodge/Item/Grammar.hs 60;" t
LDTComb src/Dodge/Item/Grammar.hs 54;" t
LDTMidAboveNode src/Dodge/Data/DoubleTree.hs 25;" C
LDTMidBelowNode src/Dodge/Data/DoubleTree.hs 26;" C
LDTRootNode src/Dodge/Data/DoubleTree.hs 23;" C
LDTTest src/Dodge/Item/Grammar.hs 59;" t
LDTTopNode src/Dodge/Data/DoubleTree.hs 24;" C
LDoNothing src/Dodge/Data/Item/HeldUse.hs 58;" C
LED src/Dodge/Combine/Data.hs 51;" C
@@ -1755,7 +1753,6 @@ NotLink src/Dodge/Data/Room.hs 66;" C
NotPushed src/Dodge/Data/Door.hs 30;" C
Nothing' src/MaybeHelp.hs 13;" C
NothingID src/Dodge/Data/CrWlID.hs 12;" C
Nozzle src/Dodge/Data/Item/Params.hs 75;" t
NumShadowCasters src/Dodge/Data/Config.hs 14;" t
NumShadowCasters0 src/Dodge/Data/Config.hs 15;" C
NumShadowCasters1 src/Dodge/Data/Config.hs 16;" C
@@ -4401,7 +4398,7 @@ allHotkeys src/Dodge/Creature/YourControl.hs 52;" f
allVisibleWalls src/Dodge/Base/Collide.hs 131;" f
alongSegBy src/Geometry.hs 43;" f
ammoCheckI src/Dodge/Item/Weapon/TriggerType.hs 145;" f
ammoComposedItem src/Dodge/Item/Grammar.hs 50;" f
ammoComposedItem src/Dodge/Item/Grammar.hs 45;" f
ammoTweakStrings src/Dodge/Render/HUD.hs 284;" f
amr src/Dodge/Item/Held/Rod.hs 46;" f
amr src/Dodge/Item/Weapon/BulletGun/Rod.hs 56;" f
@@ -4521,7 +4518,7 @@ bangRod src/Dodge/Item/Weapon/BulletGun/Rod.hs 18;" f
bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 478;" f
bangStick src/Dodge/Item/Held/Stick.hs 17;" f
bangStick src/Dodge/Item/Weapon/BulletGun/Stick.hs 17;" f
bangStickSoundChoice src/Dodge/HeldUse.hs 445;" f
bangStickSoundChoice src/Dodge/HeldUse.hs 440;" f
bangStickSoundChoice src/Dodge/HeldUse/BulletWeapon.hs 226;" f
barPP src/Dodge/Room/Foreground.hs 236;" f
barrel src/Dodge/Creature/Inanimate.hs 17;" f
@@ -4529,9 +4526,9 @@ baseAMRShape src/Dodge/Item/Draw/SPic.hs 444;" f
baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f
baseBlockPane src/Dodge/Placements/Wall.hs 63;" f
baseBlockPane src/Dodge/Room/Placement.hs 93;" f
baseCIS src/Dodge/Item/Grammar.hs 55;" f
baseCIS src/Dodge/Item/Grammar.hs 50;" f
baseCaneShape src/Dodge/Item/Draw/SPic.hs 250;" f
baseComposedItem src/Dodge/Item/Grammar.hs 31;" f
baseComposedItem src/Dodge/Item/Grammar.hs 26;" f
baseDebris src/Dodge/Block/Debris.hs 122;" f
baseFloorTileSize src/Tile.hs 38;" f
baseRifleShape src/Dodge/Item/Draw/SPic.hs 253;" f
@@ -4656,7 +4653,7 @@ calcTexCoord src/Tile.hs 17;" f
canAttachTargeting src/Dodge/Item/Display.hs 19;" f
canSee src/Dodge/Base/Collide.hs 228;" f
canSeeIndirect src/Dodge/Base/Collide.hs 235;" f
caneStickSoundChoice src/Dodge/HeldUse.hs 440;" f
caneStickSoundChoice src/Dodge/HeldUse.hs 435;" f
cardList src/Dodge/Base/CardinalPoint.hs 6;" f
cardVec src/Dodge/Base/CardinalPoint.hs 9;" f
cardinalVectors src/Dodge/FloorItem.hs 39;" f
@@ -4718,7 +4715,7 @@ circleDecoration src/Dodge/Placement/TopDecoration.hs 56;" f
circleLaser src/Dodge/Item/Weapon/BatteryGuns.hs 88;" f
circleSolid src/Picture/Base.hs 164;" f
circleSolidCol src/Picture/Base.hs 168;" f
cisToItem src/Dodge/Item/Grammar.hs 22;" f
cisToItem src/Dodge/Item/Grammar.hs 23;" f
clClSpringVel src/Dodge/Update.hs 630;" f
clZoneSize src/Dodge/Zone/Size.hs 3;" f
clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f
@@ -4889,8 +4886,7 @@ createHeldLight src/Dodge/ItEffect.hs 70;" f
createLightMap src/Render.hs 26;" f
createNewArc src/Dodge/Tesla/Arc.hs 76;" f
createPathGrid src/Dodge/Room/Path.hs 21;" f
createProjectile src/Dodge/Projectile/Create.hs 12;" f
createProjectile' src/Dodge/Projectile/Create.hs 35;" f
createProjectile src/Dodge/Projectile/Create.hs 14;" f
createPutItem src/Dodge/Inventory/Add.hs 53;" f
createShieldWall src/Dodge/Euse.hs 134;" f
createTorchLightOffset src/Dodge/LightSource/Torch.hs 9;" f
@@ -5200,7 +5196,7 @@ doDrawing src/Dodge/Render.hs 35;" f
doDrawing' src/Dodge/Render.hs 46;" f
doFloatFloat src/Dodge/FloatFunction.hs 5;" f
doFloorEffect src/Dodge/ItEffect.hs 21;" f
doGenFloat src/Dodge/HeldUse.hs 408;" f
doGenFloat src/Dodge/HeldUse.hs 403;" f
doInPlacements src/Dodge/Layout.hs 92;" f
doIndividualPlacements src/Dodge/Layout.hs 117;" f
doInputScreenInput src/Dodge/Update/Input/ScreenLayer.hs 25;" f
@@ -5270,7 +5266,7 @@ doubleLampCover src/Dodge/LightSources/Lamp.hs 89;" f
doubleLampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 28;" f
doublePair src/Geometry.hs 149;" f
doublePairSet src/Geometry.hs 153;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 12;" f
doubleTreeToIndentList src/Dodge/DoubleTree.hs 19;" f
doubleV2 src/Geometry.hs 156;" f
downSize src/Dodge/DownscaleSize.hs 3;" f
drawAllShadows src/Dodge/Shadows.hs 5;" f
@@ -5389,9 +5385,9 @@ dropExcept src/Dodge/Creature/Action.hs 178;" f
dropItem src/Dodge/Creature/Action.hs 183;" f
dropItemKey src/Dodge/Config/KeyConfig.hs 24;" f
drumMag src/Dodge/Item/Ammo.hs 36;" f
dtIL src/Dodge/DoubleTree.hs 15;" f
dtToAdjacency src/Dodge/DoubleTree.hs 22;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 28;" f
dtIL src/Dodge/DoubleTree.hs 22;" f
dtToAdjacency src/Dodge/DoubleTree.hs 29;" f
dtToUpDownAdj src/Dodge/DoubleTree.hs 35;" f
dualRayAt src/Dodge/Item/Weapon/BatteryGuns.hs 144;" f
dummyMenuOption src/Dodge/Menu/Option.hs 81;" f
duplicateItem src/Dodge/Item/Weapon/TriggerType.hs 742;" f
@@ -5486,11 +5482,11 @@ findWallFreeDropPoint src/Dodge/FloorItem.hs 47;" f
findWallsInPolygon src/Dodge/LevelGen/StaticWalls/Deprecated.hs 78;" f
findWithIx src/ListHelp.hs 123;" f
fireLoudS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 504;" f
fireRemoteShell src/Dodge/HeldUse.hs 412;" f
fireRemoteShell src/Dodge/HeldUse.hs 407;" f
fireS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 332;" f
fireShell src/Dodge/Projectile/Create.hs 58;" f
fireShell src/Dodge/Projectile/Create.hs 37;" f
fireSound src/Dodge/SoundLogic/Synonyms.hs 4;" f
fireTrackingShell src/Dodge/Projectile/Create.hs 104;" f
fireTrackingShell src/Dodge/Projectile/Create.hs 83;" f
firstBreather src/Dodge/Room/Breather.hs 9;" f
firstWorldLoad appDodge/Main.hs 77;" f
fixedCoordPictures src/Dodge/Render/Picture.hs 17;" f
@@ -5589,7 +5585,7 @@ gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f
gameRoomsFromRooms src/Dodge/Layout.hs 158;" f
gameplayMenu src/Dodge/Menu.hs 131;" f
gameplayMenuOptions src/Dodge/Menu.hs 134;" f
gasCreate src/Dodge/HeldUse.hs 404;" f
gasCreate src/Dodge/HeldUse.hs 399;" f
generateGenParams src/Dodge/LevelGen/LevelStructure.hs 22;" f
generateGraphs src/Dodge/LevelGen.hs 39;" f
generateLayout src/Dodge/Layout/Generate.hs 10;" f
@@ -5600,7 +5596,6 @@ geometryQuickCheckTests test/Spec.hs 55;" f
geometryTests test/Spec.hs 17;" f
geometryUnitTests test/Spec.hs 22;" f
geqConstr src/SameConstr.hs 21;" f
getAmmoMagazine src/Dodge/HeldUse.hs 374;" f
getArguments src/Dodge/Update/Scroll.hs 150;" f
getArguments' src/Dodge/Update/Scroll.hs 138;" f
getAvailableListLines src/Dodge/SelectionList.hs 11;" f
@@ -5705,7 +5700,7 @@ hatCombinations src/Dodge/Combine/Combinations.hs 33;" f
head src/DoubleStack.hs 14;" f
headLamp src/Dodge/Item/Equipment.hs 118;" f
headLampShape src/Dodge/Item/Draw/SPic.hs 494;" f
headMap src/Dodge/DoubleTree.hs 61;" f
headMap src/Dodge/DoubleTree.hs 68;" f
heal src/Dodge/Item/Consumable.hs 17;" f
heal25 src/Dodge/Item/Consumable.hs 14;" f
healS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 354;" f
@@ -5716,7 +5711,7 @@ heavyBulDams src/Dodge/Item/Weapon/Bullet.hs 38;" f
heightWallPS src/Dodge/Placement/Instance/Wall.hs 13;" f
heldAimEffects src/Dodge/Creature/State.hs 72;" f
heldBounds src/Dodge/Item/Module.hs 27;" f
heldComposedItem src/Dodge/Item/Grammar.hs 42;" f
heldComposedItem src/Dodge/Item/Grammar.hs 37;" f
heldEffect src/Dodge/HeldUse.hs 44;" f
heldInfo src/Dodge/Item/Info.hs 61;" f
heldItemEffects src/Dodge/Creature/State.hs 69;" f
@@ -5831,19 +5826,19 @@ intersectSegsSeg src/Geometry/Intersect.hs 232;" f
intervalList src/Geometry.hs 315;" f
interweave src/Justify.hs 17;" f
intsToPos src/Dodge/Room/Modify/Girder.hs 160;" f
invAdj src/Dodge/Item/Grammar.hs 103;" f
invAdj src/Dodge/Item/Grammar.hs 95;" f
invDimColor src/Dodge/DisplayInventory.hs 140;" f
invDimColor src/Dodge/Inventory/Color.hs 4;" f
invDisplayParams src/Dodge/ListDisplayParams.hs 29;" f
invHead src/Dodge/Render/HUD.hs 292;" f
invIndentIM src/Dodge/Item/Grammar.hs 109;" f
invLDT src/Dodge/Item/Grammar.hs 99;" f
invIndentIM src/Dodge/Item/Grammar.hs 101;" f
invLDT src/Dodge/Item/Grammar.hs 91;" f
invSelectionItem src/Dodge/Inventory/SelectionList.hs 35;" f
invSelectionItem' src/Dodge/Inventory/SelectionList.hs 17;" f
invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f
invSideEff src/Dodge/Creature/State.hs 236;" f
invSize src/Dodge/Inventory/CheckSlots.hs 40;" f
invTrees src/Dodge/Item/Grammar.hs 113;" f
invTrees src/Dodge/Item/Grammar.hs 104;" f
inventoryExtra src/Dodge/Render/HUD.hs 186;" f
inventoryExtraH src/Dodge/Render/HUD.hs 189;" f
inventoryX src/Dodge/Creature.hs 115;" f
@@ -5925,7 +5920,7 @@ jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f
jShape src/Dodge/Placements/LightSource.hs 43;" f
jaggedShape src/Dodge/Block/Debris.hs 191;" f
jetPack src/Dodge/Item/Equipment.hs 92;" f
joinItemsInList src/Dodge/Item/Grammar.hs 90;" f
joinItemsInList src/Dodge/Item/Grammar.hs 82;" f
jps0' src/Dodge/LevelGen/Data.hs 60;" f
jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f
jps0PushPS src/Dodge/LevelGen/Data.hs 63;" f
@@ -5973,7 +5968,7 @@ lasTunnel src/Dodge/Room/LasTurret.hs 124;" f
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 165;" f
lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
lasTurret src/Dodge/Placements/Turret.hs 29;" f
lastMap src/Dodge/DoubleTree.hs 65;" f
lastMap src/Dodge/DoubleTree.hs 72;" f
latchkey src/Dodge/Item/Held/Utility.hs 23;" f
latchkey src/Dodge/Item/PassKey.hs 14;" f
launcher src/Dodge/Item/Held/Launcher.hs 12;" f
@@ -5984,16 +5979,16 @@ launcherX src/Dodge/Item/Held/Launcher.hs 48;" f
layerNum src/Picture/Data.hs 31;" f
layoutLevelFromSeed src/Dodge/LevelGen.hs 47;" f
ldpVerticalSelection src/Dodge/Update/Input/ScreenLayer.hs 90;" f
ldtIL src/Dodge/DoubleTree.hs 40;" f
ldtToDT src/Dodge/DoubleTree.hs 6;" f
ldtToIM src/Dodge/DoubleTree.hs 34;" f
ldtToIndentList src/Dodge/DoubleTree.hs 37;" f
ldtIL src/Dodge/DoubleTree.hs 47;" f
ldtToDT src/Dodge/DoubleTree.hs 13;" f
ldtToIM src/Dodge/DoubleTree.hs 41;" f
ldtToIndentList src/Dodge/DoubleTree.hs 44;" f
left src/DoubleStack.hs 16;" f
leftInfo src/Dodge/Item/Info.hs 109;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 65;" f
leftIsParentCombine src/Dodge/Item/Grammar.hs 57;" f
leftItemSPic src/Dodge/Item/Draw/SPic.hs 72;" f
leftPad src/Padding.hs 14;" f
leftRightCombine src/Dodge/Item/Grammar.hs 79;" f
leftRightCombine src/Dodge/Item/Grammar.hs 71;" f
legsSPic src/Dodge/Item/Draw/SPic.hs 528;" f
liShape src/Dodge/Placement/Instance/LightSource.hs 99;" f
liShape src/Dodge/Placements/LightSource.hs 55;" f
@@ -6095,7 +6090,7 @@ makeArc src/Picture/Base.hs 157;" f
makeBlip src/Dodge/RadarSweep.hs 50;" f
makeBlockDebris src/Dodge/Block/Debris.hs 28;" f
makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f
makeBullet src/Dodge/HeldUse.hs 267;" f
makeBullet src/Dodge/HeldUse.hs 271;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" f
makeByteStringShaderUsingVAO src/Shader/Compile.hs 137;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 18;" f
@@ -6126,7 +6121,6 @@ makeIntInterval src/Dodge/Zoning/Base.hs 33;" f
makeLaserAt src/Dodge/Item/Weapon/Laser.hs 42;" f
makeLaserScope src/Dodge/Item/Weapon/Decoration.hs 12;" f
makeMuzzleFlare src/Dodge/HeldUse.hs 139;" f
makeMuzzleSmoke src/Dodge/HeldUse.hs 162;" f
makeOptionsSelectionList src/Dodge/Menu/Option.hs 46;" f
makeParagraph src/Justify.hs 6;" f
makePathBetween src/Dodge/Path.hs 35;" f
@@ -6139,7 +6133,7 @@ makeShaderProgram src/Shader/Compile.hs 287;" f
makeShaderUsingVAO src/Shader/Compile.hs 155;" f
makeShaderUsingVBO src/Shader/Compile.hs 78;" f
makeShaderVBO src/Shader/Compile.hs 38;" f
makeShell src/Dodge/Projectile/Create.hs 77;" f
makeShell src/Dodge/Projectile/Create.hs 56;" f
makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 12;" f
makeSourcedShader src/Shader/Compile.hs 203;" f
makeStartCloudAt src/Dodge/WorldEvent/Cloud.hs 60;" f
@@ -6189,10 +6183,10 @@ mcProximitySensorUpdate src/Dodge/Machine/Update.hs 104;" f
mcSPic src/Dodge/Render/ShapePicture.hs 169;" f
mcSensorTriggerUpdate src/Dodge/Machine/Update.hs 69;" f
mcSensorUpdate src/Dodge/Machine/Update.hs 99;" f
mcShootLaser src/Dodge/HeldUse.hs 460;" f
mcShootLaser src/Dodge/HeldUse.hs 455;" f
mcTriggerVal src/Dodge/Machine/Update.hs 75;" f
mcTypeUpdate src/Dodge/Machine/Update.hs 24;" f
mcUseHeld src/Dodge/HeldUse.hs 292;" f
mcUseHeld src/Dodge/HeldUse.hs 296;" f
mcUseItem src/Dodge/Machine/Update.hs 61;" f
medkit src/Dodge/Item/Consumable.hs 8;" f
megaBattery src/Dodge/Item/Ammo.hs 71;" f
@@ -6645,8 +6639,8 @@ prependTwo src/Geometry.hs 165;" f
pressedMBEffects src/Dodge/Update/UsingInput.hs 27;" f
pressedMBEffectsNoInventory src/Dodge/Update/UsingInput.hs 40;" f
pressedMBEffectsTopInventory src/Dodge/Creature/YourControl.hs 206;" f
prettyDT src/Dodge/DoubleTree.hs 70;" f
prettyLDT src/Dodge/DoubleTree.hs 74;" f
prettyDT src/Dodge/DoubleTree.hs 77;" f
prettyLDT src/Dodge/DoubleTree.hs 81;" f
primeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 422;" f
printColumnTitles src/Dodge/Tree/Shift.hs 142;" f
printColumns src/Dodge/Tree/Shift.hs 132;" f
@@ -6832,7 +6826,7 @@ remoteBombUnarmedPic src/Dodge/Item/Weapon/Grenade.hs 268;" f
remoteLauncher src/Dodge/Item/Held/Launcher.hs 66;" f
remoteShellCollisionCheck src/Dodge/Projectile/Update.hs 42;" f
remoteShellShape src/Dodge/Projectile/Draw.hs 39;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 250;" f
removeAmmoFromMag src/Dodge/HeldUse.hs 254;" f
removeEither src/Dodge/Layout/Tree/Either.hs 41;" f
removeHotkey src/Dodge/Hotkey.hs 41;" f
removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f
@@ -6890,7 +6884,7 @@ rhombus src/Polyhedra.hs 71;" f
rifle src/Dodge/Item/Held/Cane.hs 52;" f
rifle src/Dodge/Item/Weapon/BulletGun/Cane.hs 77;" f
right src/DoubleStack.hs 16;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 72;" f
rightIsParentCombine src/Dodge/Item/Grammar.hs 64;" f
rightPad src/Padding.hs 22;" f
rightPadNoSquash src/Padding.hs 26;" f
rlPosDir src/Dodge/RoomLink.hs 94;" f
@@ -7146,7 +7140,7 @@ shootBangCone src/Dodge/HeldUse/BulletWeapon.hs 98;" f
shootBangRod src/Dodge/HeldUse/BulletWeapon.hs 185;" f
shootBangstick src/Dodge/HeldUse/BulletWeapon.hs 9;" f
shootBezier src/Dodge/Item/Weapon/Bezier.hs 51;" f
shootBullet src/Dodge/HeldUse.hs 255;" f
shootBullet src/Dodge/HeldUse.hs 259;" f
shootBurstRifle src/Dodge/HeldUse/BulletWeapon.hs 164;" f
shootBurstRifleRepeat src/Dodge/HeldUse/BulletWeapon.hs 176;" f
shootDualLaser src/Dodge/Item/Weapon/BatteryGuns.hs 103;" f
@@ -7157,7 +7151,7 @@ shootFlameSpitterRepeat src/Dodge/HeldUse/SprayWeapon.hs 19;" f
shootFlameThrower src/Dodge/HeldUse/SprayWeapon.hs 26;" f
shootL src/Dodge/Item/Weapon/TriggerType.hs 428;" f
shootLaser src/Dodge/Item/Weapon/BatteryGuns.hs 77;" f
shootLaser' src/Dodge/HeldUse.hs 233;" f
shootLaser' src/Dodge/HeldUse.hs 237;" f
shootMachineGun src/Dodge/HeldUse/BulletWeapon.hs 218;" f
shootMachinePistol src/Dodge/HeldUse/BulletWeapon.hs 62;" f
shootMiniGun src/Dodge/HeldUse/BulletWeapon.hs 113;" f
@@ -7168,9 +7162,9 @@ shootRevolverXRepeat src/Dodge/HeldUse/BulletWeapon.hs 49;" f
shootRifle src/Dodge/HeldUse/BulletWeapon.hs 140;" f
shootShatter src/Dodge/Item/Weapon/Shatter.hs 12;" f
shootSmgMod src/Dodge/HeldUse/BulletWeapon.hs 86;" f
shootTeslaArc src/Dodge/HeldUse.hs 469;" f
shootTeslaArc src/Dodge/HeldUse.hs 464;" f
shootTillEmpty src/Dodge/Creature/Volition.hs 18;" f
shootTractorBeam src/Dodge/HeldUse.hs 211;" f
shootTractorBeam src/Dodge/HeldUse.hs 215;" f
shootVolleyGun src/Dodge/HeldUse/BulletWeapon.hs 128;" f
shootersRoom src/Dodge/Room/Room.hs 317;" f
shootersRoom' src/Dodge/Room/Room.hs 282;" f
@@ -7222,8 +7216,8 @@ singleBarrel src/Dodge/Item/Held/SingleBarrel.hs 6;" f
singleBlock src/Dodge/Placement/Instance/Wall.hs 30;" f
singleBlock src/Dodge/Placements/Wall.hs 11;" f
singleBlock src/Dodge/Room/Placement.hs 23;" f
singleDT src/Dodge/Item/Grammar.hs 25;" f
singleLDT src/Dodge/Item/Grammar.hs 28;" f
singleDT src/Dodge/DoubleTree.hs 6;" f
singleLDT src/Dodge/DoubleTree.hs 9;" f
singleton src/DoubleStack.hs 11;" f
singletonTrie src/SimpleTrie.hs 14;" f
sizeFBOs src/Framebuffer/Update.hs 22;" f
@@ -7526,7 +7520,7 @@ torso src/Dodge/Creature/Picture.hs 132;" f
tractCr src/Dodge/TractorBeam/Update.hs 27;" f
tractFlIt src/Dodge/TractorBeam/Update.hs 22;" f
tractorBeamAt src/Dodge/Item/Weapon/BatteryGuns.hs 160;" f
tractorBeamAt' src/Dodge/HeldUse.hs 222;" f
tractorBeamAt' src/Dodge/HeldUse.hs 226;" f
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 80;" f
tractorGunPic src/Dodge/Item/Draw/SPic.hs 485;" f
tractorGunTweak src/Dodge/Item/Held/BatteryGuns.hs 98;" f
@@ -7798,9 +7792,9 @@ useAmmoParams src/Dodge/Item/Weapon/AmmoParams.hs 17;" f
useC src/Dodge/Cuse.hs 6;" f
useE src/Dodge/Euse.hs 24;" f
useEquipment src/Dodge/Creature/State.hs 222;" f
useForceFieldGun src/Dodge/HeldUse.hs 482;" f
useGasParams src/Dodge/HeldUse.hs 383;" f
useHeld src/Dodge/HeldUse.hs 297;" f
useForceFieldGun src/Dodge/HeldUse.hs 477;" f
useGasParams src/Dodge/HeldUse.hs 378;" f
useHeld src/Dodge/HeldUse.hs 301;" f
useHotKey src/Dodge/Creature/YourControl.hs 49;" f
useItem src/Dodge/Creature/Action/UseItem.hs 14;" f
useItemHotkey src/Dodge/Creature/Impulse/UseItem.hs 124;" f
@@ -7813,8 +7807,6 @@ useLoadedAmmo src/Dodge/HeldUse.hs 180;" f
useMagShield src/Dodge/Euse.hs 69;" f
useNormalCamera src/Dodge/Camera.hs 6;" f
usePayload src/Dodge/Payload.hs 7;" f
usePjCreation src/Dodge/HeldUse.hs 316;" f
usePjCreationX src/Dodge/HeldUse.hs 325;" f
useRewindGun src/Dodge/Luse.hs 41;" f
useRoomPosCond src/Dodge/PlacementSpot.hs 178;" f
useRoomPosRoomCond src/Dodge/PlacementSpot.hs 181;" f