diff --git a/ghcidOutput b/ghcidOutput index aa45b8d44..4ac76672f 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1 @@ -All good (617 modules, at 19:41:21) +All good (617 modules, at 20:22:17) diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index 309e34db0..0f60d3523 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -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 diff --git a/src/Dodge/Data/Item/Effect.hs b/src/Dodge/Data/Item/Effect.hs index 3da083ac0..29aa2b601 100644 --- a/src/Dodge/Data/Item/Effect.hs +++ b/src/Dodge/Data/Item/Effect.hs @@ -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) diff --git a/src/Dodge/Default/Item/Effect.hs b/src/Dodge/Default/Item/Effect.hs index 6e9fe3e3a..6d25a84d1 100644 --- a/src/Dodge/Default/Item/Effect.hs +++ b/src/Dodge/Default/Item/Effect.hs @@ -8,5 +8,4 @@ defaultItEffect = { _ieInv = NoInvEffect , _ieOnInsert = NoInvEffect , _ieOnDrop = NoInvEffect - , _ieWhileAiming = NoInvEffect } diff --git a/src/Dodge/DoubleTree.hs b/src/Dodge/DoubleTree.hs index 787aaad71..6de5fed3f 100644 --- a/src/Dodge/DoubleTree.hs +++ b/src/Dodge/DoubleTree.hs @@ -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 diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 4b12660e5..8960bd0ae 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -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 diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 05b5c5fbc..50df00868 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -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 diff --git a/src/Dodge/Projectile/Create.hs b/src/Dodge/Projectile/Create.hs index 195f3a9c5..8dd917a1a 100644 --- a/src/Dodge/Projectile/Create.hs +++ b/src/Dodge/Projectile/Create.hs @@ -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 diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index 4e0beeb72..a0305fe42 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -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 diff --git a/tags b/tags index 343a65022..00890b43e 100644 --- a/tags +++ b/tags @@ -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