diff --git a/src/Dodge/Data/Config.hs b/src/Dodge/Data/Config.hs index 2d1253f3e..f21a4f5dd 100644 --- a/src/Dodge/Data/Config.hs +++ b/src/Dodge/Data/Config.hs @@ -65,7 +65,7 @@ windowYFloat = fromIntegral . _windowY data DebugBool = Show_ms_frame - | Enable_debug + | Display_debug | Show_sound | Noclip | Cr_status @@ -91,7 +91,6 @@ data DebugBool | Show_zone_circ | Inspect_wall | Show_path_between - | Select_creature deriving (Eq, Ord, Bounded, Enum, Show) data ResFactor = DoubleRes | FullRes | HalfRes | QuarterRes | EighthRes | SixteenthRes diff --git a/src/Dodge/Data/Universe.hs b/src/Dodge/Data/Universe.hs index 027f25df0..8acf4db57 100644 --- a/src/Dodge/Data/Universe.hs +++ b/src/Dodge/Data/Universe.hs @@ -49,8 +49,8 @@ data Universe = Universe } data DebugItem = DebugItem - { _debugMessage :: [String] - , _debugInfo :: DebugInfo + { _debugMessage :: String + , _debugFunction :: String -> Universe -> Universe } data DebugInfo diff --git a/src/Dodge/Debug.hs b/src/Dodge/Debug.hs index a3c535607..6dbaf6e9f 100644 --- a/src/Dodge/Debug.hs +++ b/src/Dodge/Debug.hs @@ -2,46 +2,37 @@ module Dodge.Debug (debugEvents,drawDebug) where -import AesonHelp import Control.Lens import Control.Monad -import Data.Aeson.Types import qualified Data.IntMap.Strict as IM -import Data.List (sortOn) import qualified Data.Map.Strict as M import Data.Maybe -import Data.Ord import qualified Data.Set as S -import Dodge.Base.Coordinate import Dodge.Base.Window import Dodge.Data.Universe import Dodge.Debug.Picture -import Dodge.WorldEvent.ThingsHit -import Geometry.Vector import Linear import Padding import Picture.Base -import qualified SDL import ShortShow debugEvents :: Universe -> Universe -debugEvents u = case dbools ^. at Enable_debug of +debugEvents u = case dbools ^. at Display_debug of Nothing -> u Just () -> S.foldr debugEvent (u & uvDebug .~ mempty) dbools where dbools = u ^. uvConfig . debug_booleans debugEvent :: DebugBool -> Universe -> Universe -debugEvent db u = u & uvDebug . at db ?~ debugItem db u +debugEvent db u = u & uvDebug . at db .~ debugItem db u -debugItem :: DebugBool -> Universe -> [DebugItem] +debugItem :: DebugBool -> Universe -> Maybe [DebugItem] debugItem = \case Collision_test -> mempty Circ_collision_test -> mempty - Select_creature -> return . selectCreatureDebugItem Show_walls_near_point_cursor -> mempty Show_walls_near_segment -> mempty - Enable_debug -> mempty + Display_debug -> mempty Noclip -> mempty Remove_LOS -> mempty Cull_more_lights -> mempty @@ -59,24 +50,22 @@ debugItem = \case Inspect_wall -> mempty Cr_awareness -> mempty Show_sound -> mempty - Cr_status -> drawCrInfo + Cr_status -> Just . drawCrInfo Mouse_position -> mempty Walls_info -> mempty Pathing -> mempty Show_path_between -> mempty drawCrInfo :: Universe -> [DebugItem] -drawCrInfo u = mapMaybe f . IM.elems $ w ^. cWorld . lWorld . creatures +drawCrInfo u = foldMap f . IM.elems $ w ^. cWorld . lWorld . creatures where w = u ^. uvWorld g h str = fmap $ ((rightPad 7 '.' str ++ "...") ++) . h - f cr = do + f cr = fromMaybe [] $ do guard $ pointIsOnScreen (u ^. uvConfig) (w ^. wCam) (cr ^. crPos . _xy) && cr ^. crID /= 0 - Just $ - DebugItem - ( catMaybes + Just $ (\x -> DebugItem x (const id)) <$> catMaybes [ g show "crID" $ cr ^? crID , g show "crHP" $ cr ^? crHP . _HP , g show "crStrategy" $ cr ^? crActionPlan . apStrategy @@ -85,114 +74,23 @@ drawCrInfo u = mapMaybe f . IM.elems $ w ^. cWorld . lWorld . creatures , g show "crAction" $ cr ^? crActionPlan . apAction , g show "crImpulse" $ cr ^? crActionPlan . apImpulse ] - ) - (DebugV2 $ cr ^. crPos . _xy) ---drawCrInfo :: Config -> World -> Picture ---drawCrInfo cfig w = --- setLayer FixedCoordLayer $ --- renderInfoListsAt (2 * hw - 400) 0 cfig cam $ --- mapMaybe crDisplayInfo $ IM.elems $ w ^. cWorld . lWorld . creatures +--closestCreatureID :: Universe -> Maybe Int +--closestCreatureID u = +-- fmap (_crID . snd) . listToMaybe +-- . sortOn (Down . dist mwp . fst) +-- . crsHitRadial mwp 100 +-- $ _uvWorld u -- where --- cam = w ^. wCam --- crDisplayInfo :: Creature -> Maybe (Point2, [String]) --- crDisplayInfo cr --- | _crID cr == 0 = Nothing --- | crOnScreen = --- Just --- ( cr ^. crPos . _xy --- , catMaybes --- -- [fmap show $ ap ^? crGoal --- [ fpreShow "crHP" $ cr ^? crHP . _HP --- , fpreShow "crStrategy" $ ap ^? apStrategy --- , fmap (("crPos....." ++) . shortShow) $ cr ^? crPos . _xy --- , fpreShow "cpVigilance" $ cr ^? crPerception . cpVigilance --- , fpreShow "crAction" $ ap ^? apAction --- , fpreShow "crImpulse" $ ap ^? apImpulse --- ] --- ) --- | otherwise = Nothing --- where --- ap = _crActionPlan cr --- crOnScreen = pointIsOnScreen cfig cam $ cr ^. crPos . _xy --- --- fpreShow :: (Show a, Functor f) => String -> f a -> f String --- fpreShow str = fmap (((rightPad 7 '.' str ++ "...") ++) . show) --- hw = halfWidth cfig - -selectCreatureDebugItem :: Universe -> DebugItem -selectCreatureDebugItem u = - DebugItem - { _debugMessage = debugSelectCreatureMessage u - , _debugInfo = scrollDebugInfoInt (length $ debugSelectCreatureList 0 u) u $ clickGetCreature u - } - -scrollDebugInfoInt :: Int -> Universe -> DebugInfo -> DebugInfo -scrollDebugInfoInt i u - | SDL.ScancodeRShift `M.member` (u ^. uvWorld . input . pressedKeys) = - debugInt %~ ((`mod` i) . (+ (u ^. uvWorld . input . scrollAmount))) - | otherwise = id - -debugSelectCreatureMessage :: Universe -> [String] -debugSelectCreatureMessage u = fromMaybe - [show (u ^? uvDebug . ix Select_creature . ix 0 . debugInfo . debugInt)] - $ do - cid <- u ^? uvDebug . ix Select_creature . ix 0 . debugInfo . debugMInt . _Just - i <- u ^? uvDebug . ix Select_creature . ix 0 . debugInfo . debugInt - cap <- debugSelectCreatureList cid u !! i - return $ show cid : cap - -debugSelectCreatureList :: Int -> Universe -> [Maybe [String]] -debugSelectCreatureList cid u = - [ debugList - "ActionPlan" - (u ^? uvWorld . cWorld . lWorld . creatures . ix cid . crActionPlan) - , debugList - "Perception" - (u ^? uvWorld . cWorld . lWorld . creatures . ix cid . crPerception) - , debugList - "Intention" - (u ^? uvWorld . cWorld . lWorld . creatures . ix cid . crIntention) - , debugList - "Memory" - (u ^? uvWorld . cWorld . lWorld . creatures . ix cid . crMemory) - , debugList - "Strategy" - (u ^? uvWorld . cWorld . lWorld . creatures . ix cid . crActionPlan . apStrategy) - , debugList - "Vocalization" - (u ^? uvWorld . cWorld . lWorld . creatures . ix cid . crVocalization) - ] - -debugList :: (Functor f, ToJSON a) => String -> f a -> f [String] -debugList str = fmap (([str] ++) . prettyShort) - -clickGetCreature :: Universe -> DebugInfo -clickGetCreature u - | SDL.ButtonLeft `M.member` (u ^. uvWorld . input . mouseButtons) - && SDL.ScancodeRShift `M.member` (u ^. uvWorld . input . pressedKeys) = - DebugIntMInt 0 (closestCreatureID u) - | otherwise = - fromMaybe (DebugIntMInt 0 Nothing) $ - u ^? uvDebug . ix Select_creature . ix 0 . debugInfo - -closestCreatureID :: Universe -> Maybe Int -closestCreatureID u = - fmap (_crID . snd) . listToMaybe - . sortOn (Down . dist mwp . fst) - . crsHitRadial mwp 100 - $ _uvWorld u - where - mwp = mouseWorldPos (u ^. uvWorld . input) (u ^. uvWorld . wCam) +-- mwp = mouseWorldPos (u ^. uvWorld . input) (u ^. uvWorld . wCam) drawDebug :: Universe -> DebugBool -> Picture drawDebug u = \case Collision_test -> drawCollisionTest $ _uvWorld u Circ_collision_test -> drawCircCollisionTest $ _uvWorld u - Select_creature -> mempty Show_walls_near_point_cursor -> drawWallsNearCursor $ _uvWorld u Show_walls_near_segment -> drawWallsNearSegment $ _uvWorld u - Enable_debug -> mempty + Display_debug -> mempty Noclip -> mempty Remove_LOS -> mempty Cull_more_lights -> mempty diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index 107c45f92..2ebcc29d4 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -2,6 +2,7 @@ module Dodge.Render.Picture (fixedCoordPictures) where +import qualified SDL import Control.Lens import qualified Data.Map.Strict as M import Data.Maybe @@ -30,6 +31,7 @@ fixedCoordPictures u = (u ^. uvWorld . cWorld . lWorld . lTestString) ) <> displayFrameTicks u + <> drawAnySelectionBox u <> drawMouseCursor u <> toTopLeft cfig @@ -44,7 +46,7 @@ fixedCoordPictures u = hw = halfWidth cfig hh = halfHeight cfig ttl = toTopLeft cfig - f (k, l) = (show k, foldMap _debugMessage l) + f (k, l) = (show k, map _debugMessage l) displayFrameTicks :: Universe -> Picture displayFrameTicks u @@ -125,6 +127,13 @@ mouseCursorType u = case u ^. uvWorld . input . mouseContext of argV (w ^. cWorld . lWorld . lAimPos -.- cpos) - w ^. wCam . camRot +drawAnySelectionBox :: Universe -> Picture +drawAnySelectionBox u = case u ^. uvWorld . input . mouseContext of + OverInvDragSelect{} -> fold $ do + p <- u ^. uvWorld . input . clickPos . at SDL.ButtonLeft + return . color white . polygonWire $ rectVV (u ^. uvWorld . input . mousePos) p + _ -> mempty + drawCursorByTerminalStatus :: TerminalStatus -> Picture drawCursorByTerminalStatus = \case TerminalPressTo "QUIT" -> drawQuitTerminal 5 diff --git a/tags b/tags index e2db055e2..a63a1974e 100644 --- a/tags +++ b/tags @@ -45,7 +45,7 @@ AimStance src/Dodge/Data/AimStance.hs 11;" t Aiming src/Dodge/Data/Creature/Stance.hs 39;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C -AllRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C +AllRoomClipBoundaries src/Dodge/Data/Config.hs 106;" C AlteRifleSwitch src/Dodge/Data/Item/Params.hs 20;" C Ambush src/Dodge/Data/ActionPlan.hs 178;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 33;" C @@ -345,6 +345,7 @@ Detector src/Dodge/Data/Item/Combine.hs 182;" t Dirt src/Dodge/Data/Material.hs 11;" C DisasterType src/Dodge/Data/Scenario.hs 24;" t DisplayTerminal src/Dodge/Data/HUD.hs 29;" C +Display_debug src/Dodge/Data/Config.hs 68;" C Distortion src/Dodge/Data/Distortion.hs 12;" t DivineRetribution src/Dodge/Data/Scenario.hs 35;" C DoActionIf src/Dodge/Data/ActionPlan.hs 116;" C @@ -369,7 +370,7 @@ DoorObstacle src/Dodge/Data/PathGraph.hs 50;" C DoorOpen src/Dodge/Data/Door.hs 23;" C DoorPart src/Dodge/Data/Wall/Structure.hs 14;" C DoorStatus src/Dodge/Data/Door.hs 23;" t -DoubleRes src/Dodge/Data/Config.hs 97;" C +DoubleRes src/Dodge/Data/Config.hs 96;" C DoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 16;" t DrWdId src/Dodge/Data/WorldEffect.hs 68;" C DrWdMakeDoorDebris src/Dodge/Data/WorldEffect.hs 69;" C @@ -392,7 +393,7 @@ Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 7;" C East8 src/Dodge/Data/CardinalPoint.hs 22;" C EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t -EighthRes src/Dodge/Data/Config.hs 97;" C +EighthRes src/Dodge/Data/Config.hs 96;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor.hs 16;" C ElectricSpark src/Dodge/Data/Spark.hs 22;" C @@ -401,7 +402,6 @@ ElectricalAmmo src/Dodge/Data/AmmoType.hs 9;" C ElectricalBall src/Dodge/Data/EnergyBall/Type.hs 15;" C Electronics src/Dodge/Data/Material.hs 11;" C EllShad src/Picture/Data.hs 39;" C -Enable_debug src/Dodge/Data/Config.hs 68;" C EncircleFlock src/Dodge/Data/Creature/State.hs 17;" C EnergyBall src/Dodge/Data/EnergyBall.hs 17;" t EnergyBallType src/Dodge/Data/EnergyBall/Type.hs 12;" t @@ -480,7 +480,7 @@ FootstepSound src/Dodge/Data/SoundOrigin.hs 31;" C ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" t ForegroundShape src/Dodge/Data/ForegroundShape.hs 14;" t FromEdge src/Dodge/Data/Room.hs 49;" C -FullRes src/Dodge/Data/Config.hs 97;" C +FullRes src/Dodge/Data/Config.hs 96;" C FullShadowFidelity src/Shape/Data.hs 24;" C FullSize src/Dodge/Data/Item/Params.hs 28;" C FullyVisible src/Dodge/Data/CamouflageStatus.hs 6;" C @@ -508,7 +508,7 @@ GenFloat src/Dodge/Data/GenFloat.hs 11;" t GenParams src/Dodge/Data/GenParams.hs 15;" t GenWorld src/Dodge/Data/GenWorld.hs 24;" t GenericFaction src/Dodge/Data/Creature/State.hs 15;" C -GeoObjShads src/Dodge/Data/Config.hs 101;" C +GeoObjShads src/Dodge/Data/Config.hs 100;" C GetTo src/Dodge/Data/ActionPlan.hs 189;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 43;" C @@ -538,7 +538,7 @@ HOMINGMODULE src/Dodge/Data/Item/Combine.hs 101;" C HOSE src/Dodge/Data/Item/Combine.hs 55;" C HP src/Dodge/Data/Creature.hs 71;" C HUD src/Dodge/Data/HUD.hs 31;" t -HalfRes src/Dodge/Data/Config.hs 97;" C +HalfRes src/Dodge/Data/Config.hs 96;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HardQuit src/Dodge/Data/Universe.hs 69;" C HeavySmokeFlare src/Dodge/Data/Muzzle.hs 33;" C @@ -604,7 +604,7 @@ Int2 src/Geometry/Data.hs 21;" t IntID src/Dodge/Data/Universe.hs 109;" t IntImp src/Dodge/Data/CreatureEffect.hs 20;" t Intention src/Dodge/Data/Creature.hs 76;" t -IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C +IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 106;" C IntroScanSF src/Dodge/Data/ComposedItem.hs 21;" C IntroScanType src/Dodge/Data/Item/Combine.hs 45;" t InvInt src/Dodge/Data/Item/Location.hs 17;" t @@ -860,16 +860,16 @@ NoItTargeting src/Dodge/Data/Item.hs 44;" C NoItemScroll src/Dodge/Data/Item.hs 39;" C NoItemZone src/Dodge/Data/Machine/Sensor.hs 34;" C NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C -NoLighting src/Dodge/Data/Config.hs 104;" C +NoLighting src/Dodge/Data/Config.hs 103;" C NoMouseContext src/Dodge/Data/Input.hs 15;" C NoMvType src/Dodge/Data/Creature/Misc.hs 29;" C -NoObjShads src/Dodge/Data/Config.hs 102;" C +NoObjShads src/Dodge/Data/Config.hs 101;" C NoParams src/Dodge/Data/Item/Params.hs 15;" C NoRightButtonState src/Dodge/Data/RightButtonOptions.hs 16;" C -NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C +NoRoomClipBoundaries src/Dodge/Data/Config.hs 106;" C NoSF src/Dodge/Data/ComposedItem.hs 29;" C NoShadowFidelity src/Shape/Data.hs 25;" C -NoShadows src/Dodge/Data/Config.hs 103;" C +NoShadows src/Dodge/Data/Config.hs 102;" C NoSubInventory src/Dodge/Data/HUD.hs 17;" C NoTrigger src/Dodge/Data/TriggerType.hs 11;" C NoWorldEffect src/Dodge/Data/WorldEffect.hs 23;" C @@ -1095,7 +1095,7 @@ PutTrigger src/Dodge/Data/GenWorld.hs 48;" C PutWall src/Dodge/Data/GenWorld.hs 55;" C PutWorldUpdate src/Dodge/Data/GenWorld.hs 60;" C QFloat src/Geometry/Data.hs 50;" t -QuarterRes src/Dodge/Data/Config.hs 97;" C +QuarterRes src/Dodge/Data/Config.hs 96;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 10;" C RAM src/Dodge/Data/Item/Combine.hs 74;" C RED src/Color/Data.hs 15;" C @@ -1136,7 +1136,7 @@ ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 31;" C RequireDeadCreatures src/Dodge/Data/Machine/Sensor.hs 39;" C RequireEquipment src/Dodge/Data/Machine/Sensor.hs 38;" C RequireHealth src/Dodge/Data/Machine/Sensor.hs 37;" C -ResFactor src/Dodge/Data/Config.hs 97;" t +ResFactor src/Dodge/Data/Config.hs 96;" t ResearchFacility src/Dodge/Data/Scenario.hs 62;" C ResourceFailure src/Dodge/Data/Scenario.hs 29;" C RespawnDelay src/Dodge/Data/World.hs 61;" C @@ -1154,7 +1154,7 @@ RocketHoming src/Dodge/Data/Projectile.hs 41;" t RocketSmoke src/Dodge/Data/Projectile.hs 54;" t RocketSmoke src/Dodge/Data/Cloud.hs 24;" C Room src/Dodge/Data/GenWorld.hs 123;" t -RoomClipping src/Dodge/Data/Config.hs 107;" t +RoomClipping src/Dodge/Data/Config.hs 106;" t RoomInt src/Dodge/Tree/Shift.hs 26;" t RoomLink src/Dodge/Data/Room.hs 24;" t RoomLinkType src/Dodge/Data/Room.hs 43;" t @@ -1200,7 +1200,6 @@ SelCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" C SelItem src/Dodge/Data/SelectionList.hs 42;" C SelNothing src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" C SelSection src/Dodge/Data/SelectionList.hs 29;" t -Select_creature src/Dodge/Data/Config.hs 94;" C SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 24;" C Selection src/Dodge/Data/HUD.hs 41;" t SelectionItem src/Dodge/Data/SelectionList.hs 41;" t @@ -1216,7 +1215,7 @@ ShadNum src/Picture/Data.hs 35;" t Shader src/Shader/Data.hs 51;" t ShaderTexture src/Shader/Data.hs 94;" t ShadowFidelity src/Shape/Data.hs 24;" t -ShadowRendering src/Dodge/Data/Config.hs 100;" t +ShadowRendering src/Dodge/Data/Config.hs 99;" t Shape src/Shape/Data.hs 53;" t ShapeProp src/Dodge/Data/Prop.hs 32;" C ShapeType src/Shape/Data.hs 16;" t @@ -1246,7 +1245,7 @@ ShrinkGunStatus src/Dodge/Data/Item/Params.hs 28;" t Shrunk src/Dodge/Data/Item/Params.hs 28;" C SideCluster src/Dodge/Data/RoomCluster.hs 13;" C SideEffect src/Dodge/Data/Universe.hs 63;" t -SixteenthRes src/Dodge/Data/Config.hs 97;" C +SixteenthRes src/Dodge/Data/Config.hs 96;" C Size src/Shape/Data.hs 28;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C @@ -1748,7 +1747,7 @@ _dbSpin src/Dodge/Data/Prop.hs 53;" f _dbType src/Dodge/Data/Prop.hs 50;" f _dbVel src/Dodge/Data/Prop.hs 51;" f _debris src/Dodge/Data/LWorld.hs 103;" f -_debugInfo src/Dodge/Data/Universe.hs 53;" f +_debugFunction src/Dodge/Data/Universe.hs 53;" f _debugInt src/Dodge/Data/Universe.hs 61;" f _debugMInt src/Dodge/Data/Universe.hs 60;" f _debugMessage src/Dodge/Data/Universe.hs 52;" f @@ -2590,7 +2589,7 @@ adjustIMZone src/Dodge/Base.hs 81;" f advanceScrollAmount src/Dodge/Update.hs 404;" f advanceSmoothScroll src/Dodge/SmoothScroll.hs 33;" f advanceStepCounter src/Dodge/Creature/Impulse/Movement.hs 46;" f -aimDelaySweep src/Dodge/Render/Picture.hs 276;" f +aimDelaySweep src/Dodge/Render/Picture.hs 285;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimTurn src/Dodge/Creature/YourControl.hs 181;" f airlock src/Dodge/Room/Airlock.hs 23;" f @@ -2631,7 +2630,7 @@ applyPastDamages src/Dodge/Creature/State.hs 49;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 23;" f applyPosition src/Sound.hs 111;" f applyRecoil src/Dodge/HeldUse.hs 459;" f -applyResFactor src/Dodge/Data/Config.hs 110;" f +applyResFactor src/Dodge/Data/Config.hs 109;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 83;" f applySidePush src/Dodge/HeldUse.hs 559;" f applySoundCME src/Dodge/HeldUse.hs 449;" f @@ -2700,7 +2699,7 @@ bangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 668;" f bangStick src/Dodge/Item/Held/Stick.hs 15;" f barPP src/Dodge/Room/Foreground.hs 236;" f barrel src/Dodge/Creature/Inanimate.hs 17;" f -barrelShape src/Dodge/Render/ShapePicture.hs 78;" f +barrelShape src/Dodge/Render/ShapePicture.hs 79;" f baseAMRShape src/Dodge/Item/Draw/SPic.hs 406;" f baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseCI src/Dodge/Item/Grammar.hs 158;" f @@ -2784,7 +2783,7 @@ branchRectWith src/Dodge/Room/Branch.hs 15;" f branchWith src/Dodge/Room/Room.hs 69;" f bright src/Color.hs 120;" f brightX src/Color.hs 116;" f -btSPic src/Dodge/Render/ShapePicture.hs 127;" f +btSPic src/Dodge/Render/ShapePicture.hs 128;" f btText src/Dodge/Inventory/SelectionList.hs 237;" f bufferEBO src/Shader/Bind.hs 28;" f bufferPokedVBO src/Shader/Bind.hs 19;" f @@ -2886,7 +2885,6 @@ cleatLabel src/Dodge/Cleat.hs 30;" f cleatOnward src/Dodge/Cleat.hs 24;" f cleatSide src/Dodge/Cleat.hs 27;" f click1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 582;" f -clickGetCreature src/Dodge/Debug.hs 174;" f clicker src/Dodge/Item/Scope.hs 82;" f clipV src/Geometry/Vector.hs 48;" f clipZoom src/Dodge/Update/Camera.hs 230;" f @@ -2895,7 +2893,6 @@ closeButtonToSelectionItem src/Dodge/Inventory/SelectionList.hs 223;" f closeItemToSelectionItem src/Dodge/Inventory/SelectionList.hs 208;" f closeItemToTextPictures src/Dodge/Inventory/SelectionList.hs 243;" f closeObjectInfo src/Dodge/Render/HUD.hs 226;" f -closestCreatureID src/Dodge/Debug.hs 183;" f closestPointOnLine src/Geometry/Intersect.hs 272;" f closestPointOnLineParam src/Geometry/Intersect.hs 288;" f closestPointOnSeg src/Geometry/Intersect.hs 303;" f @@ -2953,7 +2950,6 @@ conEffects src/Dodge/Concurrent.hs 12;" f conLDTToConDT src/Dodge/DoubleTree.hs 22;" f concurrentIS src/Dodge/Update/Input/InGame.hs 287;" f connectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 722;" f -constDPic src/Dodge/Debug.hs 69;" f constructEdges src/Polyhedra.hs 34;" f constructEdgesList src/Polyhedra.hs 43;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f @@ -3054,7 +3050,7 @@ crsNearRect src/Dodge/Zoning/Creature.hs 39;" f crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 55;" f cubeShape src/Dodge/Block/Debris.hs 103;" f -cullPoint src/Dodge/Render/ShapePicture.hs 94;" f +cullPoint src/Dodge/Render/ShapePicture.hs 95;" f cullPretty src/AesonHelp.hs 14;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f cutWall src/Dodge/LevelGen/StaticWalls.hs 124;" f @@ -3109,15 +3105,12 @@ deadUpperBody src/Dodge/Creature/Picture.hs 113;" f debrisS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f debrisSPic src/Dodge/Prop/Draw.hs 20;" f debrisSize src/Dodge/Block/Debris.hs 77;" f -debugEvent src/Dodge/Debug.hs 34;" f -debugEvents src/Dodge/Debug.hs 27;" f -debugItem src/Dodge/Debug.hs 37;" f -debugList src/Dodge/Debug.hs 171;" f +debugEvent src/Dodge/Debug.hs 26;" f +debugEvents src/Dodge/Debug.hs 19;" f +debugItem src/Dodge/Debug.hs 29;" f debugMenu src/Dodge/Menu.hs 125;" f debugMenuOptions src/Dodge/Menu.hs 131;" f -debugOn src/Dodge/Data/Config.hs 151;" f -debugSelectCreatureList src/Dodge/Debug.hs 149;" f -debugSelectCreatureMessage src/Dodge/Debug.hs 140;" f +debugOn src/Dodge/Data/Config.hs 150;" f decodeSensorType src/Dodge/Terminal.hs 72;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f decomposeTree src/Dodge/Tree/Compose.hs 58;" f @@ -3146,7 +3139,7 @@ defaultCWGen src/Dodge/Default/World.hs 57;" f defaultCWorld src/Dodge/Default/World.hs 82;" f defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f defaultClusterStatus src/Dodge/Default/Room.hs 37;" f -defaultConfig src/Dodge/Data/Config.hs 127;" f +defaultConfig src/Dodge/Data/Config.hs 126;" f defaultCraftItem src/Dodge/Default/Item.hs 25;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f defaultCreatureMemory src/Dodge/Default/Creature.hs 65;" f @@ -3217,7 +3210,7 @@ dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 650;" f displayConfig src/Dodge/Menu.hs 231;" f displayControls src/Dodge/Menu.hs 242;" f -displayFrameTicks src/Dodge/Render/Picture.hs 49;" f +displayFrameTicks src/Dodge/Render/Picture.hs 51;" f displayFreeSlots src/Dodge/DisplayInventory.hs 192;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f displayPulse src/Dodge/Inventory/SelectionList.hs 179;" f @@ -3323,44 +3316,45 @@ doublePairSet src/Geometry.hs 166;" f doubleTreeToIndentList src/Dodge/DoubleTree.hs 129;" f doubleV2 src/Geometry.hs 169;" f drawARHUD src/Dodge/Creature/State.hs 193;" f -drawAimSweep src/Dodge/Render/Picture.hs 283;" f +drawAimSweep src/Dodge/Render/Picture.hs 292;" f drawAllShadows src/Dodge/Shadows.hs 5;" f -drawArrowDown src/Dodge/Render/Picture.hs 210;" f +drawAnySelectionBox src/Dodge/Render/Picture.hs 130;" f +drawArrowDown src/Dodge/Render/Picture.hs 219;" f drawBaseMachine src/Dodge/Machine/Draw.hs 68;" f drawBeam src/Dodge/Beam/Draw.hs 6;" f drawBlip src/Dodge/RadarBlip.hs 16;" f drawBlock src/Dodge/Block/Draw.hs 7;" f drawBoundingBox src/Dodge/Debug/Picture.hs 348;" f -drawBullet src/Dodge/Render/ShapePicture.hs 137;" f +drawBullet src/Dodge/Render/ShapePicture.hs 134;" f drawButton src/Dodge/Button/Draw.hs 10;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f -drawChasm src/Dodge/Render/ShapePicture.hs 50;" f +drawChasm src/Dodge/Render/ShapePicture.hs 51;" f drawCircCollisionTest src/Dodge/Debug/Picture.hs 118;" f -drawCliff src/Dodge/Render/ShapePicture.hs 53;" f +drawCliff src/Dodge/Render/ShapePicture.hs 54;" f drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f -drawCombFilter src/Dodge/Render/Picture.hs 258;" f +drawCombFilter src/Dodge/Render/Picture.hs 267;" f drawCombineInventory src/Dodge/Render/HUD.hs 182;" f -drawConcurrentMessage src/Dodge/Render/Picture.hs 72;" f +drawConcurrentMessage src/Dodge/Render/Picture.hs 74;" f drawCoord src/Dodge/Debug/Picture.hs 376;" f -drawCrInfo src/Dodge/Debug.hs 72;" f -drawCreature src/Dodge/Render/ShapePicture.hs 69;" f +drawCrInfo src/Dodge/Debug.hs 59;" f +drawCreature src/Dodge/Render/ShapePicture.hs 70;" f drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 198;" f drawCross src/Dodge/Render/Label.hs 24;" f drawCrossCol src/Dodge/Render/Label.hs 21;" f drawCursorAt src/Dodge/Render/List.hs 72;" f -drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 128;" f +drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 137;" f drawDDATest src/Dodge/Debug/Picture.hs 303;" f drawDamSensor src/Dodge/Machine/Draw.hs 27;" f -drawDebug src/Dodge/Debug.hs 192;" f +drawDebug src/Dodge/Debug.hs 87;" f drawDoorPaths src/Dodge/Debug/Picture.hs 253;" f drawDoubleLampCover src/Dodge/Prop/Draw.hs 95;" f -drawDrag src/Dodge/Render/Picture.hs 189;" f -drawDragDrop src/Dodge/Render/Picture.hs 218;" f -drawDragPickup src/Dodge/Render/Picture.hs 227;" f -drawDragSelect src/Dodge/Render/Picture.hs 186;" f +drawDrag src/Dodge/Render/Picture.hs 198;" f +drawDragDrop src/Dodge/Render/Picture.hs 227;" f +drawDragPickup src/Dodge/Render/Picture.hs 236;" f +drawDragSelect src/Dodge/Render/Picture.hs 195;" f drawDragSelected src/Dodge/Render/HUD.hs 136;" f drawDragSelecting src/Dodge/Render/HUD.hs 153;" f -drawEmptySet src/Dodge/Render/Picture.hs 142;" f +drawEmptySet src/Dodge/Render/Picture.hs 151;" f drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEquipment src/Dodge/Creature/Picture.hs 127;" f drawExamineInventory src/Dodge/Render/HUD.hs 198;" f @@ -3369,7 +3363,7 @@ drawFarWallDetect src/Dodge/Debug/Picture.hs 270;" f drawFlame src/Dodge/Flame/Draw.hs 8;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 37;" f drawForceField src/Dodge/Wall/Draw.hs 11;" f -drawGapPlus src/Dodge/Render/Picture.hs 269;" f +drawGapPlus src/Dodge/Render/Picture.hs 278;" f drawGib src/Dodge/Prop/Draw.hs 39;" f drawHUD src/Dodge/Render/HUD.hs 51;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 19;" f @@ -3378,7 +3372,7 @@ drawInspectWalls src/Dodge/Debug/Picture.hs 233;" f drawInventory src/Dodge/Render/HUD.hs 58;" f drawItemChildrenConnect src/Dodge/Render/HUD.hs 329;" f drawItemConnections src/Dodge/Render/HUD.hs 319;" f -drawJumpDown src/Dodge/Render/Picture.hs 181;" f +drawJumpDown src/Dodge/Render/Picture.hs 190;" f drawLabCrossCol src/Dodge/Render/Label.hs 8;" f drawLabelledList src/Dodge/Render/List.hs 212;" f drawLampCover src/Dodge/Prop/Draw.hs 55;" f @@ -3392,11 +3386,11 @@ drawListYoff src/Dodge/Render/List.hs 93;" f drawMachine src/Dodge/Machine/Draw.hs 16;" f drawMapperAR src/Dodge/Targeting/Draw.hs 12;" f drawMapperInventory src/Dodge/Render/HUD.hs 173;" f -drawMenuClick src/Dodge/Render/Picture.hs 157;" f -drawMenuCursor src/Dodge/Render/Picture.hs 169;" f -drawMenuOrHUD src/Dodge/Render/Picture.hs 67;" f +drawMenuClick src/Dodge/Render/Picture.hs 166;" f +drawMenuCursor src/Dodge/Render/Picture.hs 178;" f +drawMenuOrHUD src/Dodge/Render/Picture.hs 69;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 14;" f -drawMouseCursor src/Dodge/Render/Picture.hs 83;" f +drawMouseCursor src/Dodge/Render/Picture.hs 85;" f drawMouseOver src/Dodge/Render/HUD.hs 109;" f drawMousePosition src/Dodge/Debug/Picture.hs 366;" f drawMovingShape src/Dodge/Prop/Draw.hs 81;" f @@ -3405,21 +3399,21 @@ drawOptions src/Dodge/Render/MenuScreen.hs 22;" f drawPathBetween src/Dodge/Debug/Picture.hs 201;" f drawPathEdge src/Dodge/Debug/Picture.hs 258;" f drawPathing src/Dodge/Debug/Picture.hs 398;" f -drawPlus src/Dodge/Render/Picture.hs 154;" f +drawPlus src/Dodge/Render/Picture.hs 163;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f drawProp src/Dodge/Prop/Draw.hs 26;" f drawProxSensor src/Dodge/Machine/Draw.hs 37;" f -drawPulseBall src/Dodge/Render/ShapePicture.hs 61;" f -drawQuitTerminal src/Dodge/Render/Picture.hs 136;" f +drawPulseBall src/Dodge/Render/ShapePicture.hs 62;" f +drawQuitTerminal src/Dodge/Render/Picture.hs 145;" f drawRBOptions src/Dodge/Render/HUD.hs 251;" f drawRadarSweep src/Dodge/RadarSweep/Draw.hs 14;" f drawRemoteShell src/Dodge/Projectile/Draw.hs 38;" f -drawReturn src/Dodge/Render/Picture.hs 145;" f +drawReturn src/Dodge/Render/Picture.hs 154;" f drawRootCursor src/Dodge/Render/HUD.hs 76;" f drawSSCursor src/Dodge/SelectionSections/Draw.hs 35;" f drawSSMultiCursor src/Dodge/SelectionSections/Draw.hs 46;" f -drawSelect src/Dodge/Render/Picture.hs 246;" f +drawSelect src/Dodge/Render/Picture.hs 255;" f drawSelectionList src/Dodge/Render/List.hs 36;" f drawSelectionListBackground src/Dodge/Render/List.hs 52;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 16;" f @@ -3441,7 +3435,7 @@ drawTitle src/Dodge/Render/MenuScreen.hs 35;" f drawTitleBackground src/Dodge/Render/List.hs 45;" f drawTractorBeam src/Dodge/TractorBeam/Draw.hs 7;" f drawTurret src/Dodge/Machine/Draw.hs 76;" f -drawVerticalDoubleArrow src/Dodge/Render/Picture.hs 201;" f +drawVerticalDoubleArrow src/Dodge/Render/Picture.hs 210;" f drawVerticalLampCover src/Dodge/Prop/Draw.hs 71;" f drawWall src/Dodge/Wall/Draw.hs 7;" f drawWallFace src/Dodge/Debug/Picture.hs 73;" f @@ -3538,7 +3532,7 @@ explosionS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 556;" f explosiveBarrel src/Dodge/Creature/Inanimate.hs 25;" f extTrigLitPos src/Dodge/Placement/Instance/Button.hs 84;" f extendConeToScreenEdge src/Dodge/Debug/Picture.hs 82;" f -extraPics src/Dodge/Render/ShapePicture.hs 99;" f +extraPics src/Dodge/Render/ShapePicture.hs 100;" f extraWeaponLinks src/Dodge/Item/Grammar.hs 90;" f extraWeaponLinksBelow src/Dodge/Item/Grammar.hs 99;" f extractRoomPos src/Dodge/RoomPos.hs 6;" f @@ -3566,7 +3560,7 @@ fireS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 464;" f firstBreather src/Dodge/Room/Breather.hs 9;" f firstTrie src/SimpleTrie.hs 51;" f firstWorldLoad appDodge/Main.hs 77;" f -fixedCoordPictures src/Dodge/Render/Picture.hs 19;" f +fixedCoordPictures src/Dodge/Render/Picture.hs 20;" f fixedSizePicClampArrow src/Dodge/Picture/SizeInvariant.hs 57;" f flFlicker src/Dodge/Flame.hs 38;" f flameMuzzles src/Dodge/HeldUse.hs 325;" f @@ -3597,7 +3591,7 @@ flockPointTargetR src/Dodge/Creature/Boid.hs 268;" f flockToPointUsing src/Dodge/Creature/Boid.hs 216;" f flockToPointUsing' src/Dodge/Creature/Boid.hs 229;" f floorItemPickupInfo src/Dodge/Render/HUD.hs 231;" f -floorItemSPic src/Dodge/Render/ShapePicture.hs 120;" f +floorItemSPic src/Dodge/Render/ShapePicture.hs 121;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f @@ -3615,7 +3609,7 @@ forceField src/Dodge/Wall/ForceField.hs 7;" f forceFoldable src/StrictHelp.hs 7;" f forceSpine src/StrictHelp.hs 4;" f fourEmbossDecoration src/Dodge/Placement/TopDecoration.hs 29;" f -fpsText src/Dodge/Render/Picture.hs 57;" f +fpsText src/Dodge/Render/Picture.hs 59;" f fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 145;" f frag src/Shader/Data.hs 102;" f freeShaderPointers' src/Shader.hs 37;" f @@ -4001,7 +3995,7 @@ lShape src/Dodge/Placement/Instance/LightSource.hs 90;" f lamp src/Dodge/Creature/Lamp.hs 21;" f lampCover src/Dodge/Placement/Instance/LightSource/Cover.hs 8;" f lampCoverWhen src/Dodge/Placement/Instance/LightSource/Cover.hs 19;" f -lampCrSPic src/Dodge/Render/ShapePicture.hs 83;" f +lampCrSPic src/Dodge/Render/ShapePicture.hs 84;" f lasCenSensEdge src/Dodge/Room/LasTurret.hs 141;" f lasGunPic src/Dodge/Item/Draw/SPic.hs 412;" f lasPulseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 526;" f @@ -4211,7 +4205,7 @@ mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 104;" f mcProxSensorUpdate src/Dodge/Machine/Update.hs 139;" f mcProxTest src/Dodge/Machine/Update.hs 203;" f mcProximitySensorUpdate src/Dodge/Machine/Update.hs 171;" f -mcSPic src/Dodge/Render/ShapePicture.hs 132;" f +mcSPic src/Dodge/Render/ShapePicture.hs 131;" f mcShootAuto src/Dodge/HeldUse.hs 1169;" f mcShootLaser src/Dodge/HeldUse.hs 1162;" f mcTriggerVal src/Dodge/Machine/Update.hs 110;" f @@ -4279,7 +4273,7 @@ mntLightLnkCond src/Dodge/Placement/Instance/LightSource.hs 177;" f mntLightLnkCond' src/Dodge/Placement/Instance/LightSource.hs 182;" f modTo src/Geometry/Zone.hs 10;" f mouseClickOptionsList src/Dodge/Update/Input/ScreenLayer.hs 60;" f -mouseCursorType src/Dodge/Render/Picture.hs 90;" f +mouseCursorType src/Dodge/Render/Picture.hs 92;" f mouseWorldPos src/Dodge/Base/Coordinate.hs 25;" f moveBullet src/Dodge/Bullet.hs 196;" f moveCombineSel src/Dodge/Update/Scroll.hs 121;" f @@ -4883,7 +4877,6 @@ screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 28;" f scrollAugInvSel src/Dodge/Inventory.hs 191;" f scrollAugNextInSection src/Dodge/Inventory.hs 204;" f -scrollDebugInfoInt src/Dodge/Debug.hs 134;" f scrollRBOption src/Dodge/Update/Scroll.hs 202;" f scrollSelectionSections src/Dodge/SelectionSections.hs 28;" f scrollTimeBack src/Dodge/Update.hs 206;" f @@ -4911,7 +4904,6 @@ selSecDrawCursorAt src/Dodge/Render/List.hs 105;" f selSecSelCol src/Dodge/Render/HUD.hs 501;" f selSecSelSize src/Dodge/SelectionSections.hs 143;" f selSecYint src/Dodge/SelectionSections.hs 152;" f -selectCreatureDebugItem src/Dodge/Debug.hs 127;" f selectedItemScroll src/Dodge/Update/Scroll.hs 51;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 53;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 59;" f @@ -4999,7 +4991,7 @@ shellShape src/Dodge/Projectile/Draw.hs 35;" f shieldWall src/Dodge/Item/BackgroundEffect.hs 78;" f shiftByV2 src/Dodge/PlacementSpot.hs 250;" f shiftChildren src/Dodge/Tree/Compose.hs 44;" f -shiftDraw src/Dodge/Render/ShapePicture.hs 88;" f +shiftDraw src/Dodge/Render/ShapePicture.hs 89;" f shiftInBy src/Dodge/PlacementSpot.hs 247;" f shiftInvItems src/Dodge/Update/Input/InGame.hs 305;" f shiftInvItemsDown src/Dodge/Update/Input/InGame.hs 350;" f @@ -5681,7 +5673,7 @@ wlsNearRect src/Dodge/Zoning/Wall.hs 46;" f wlsNearSeg src/Dodge/Zoning/Wall.hs 42;" f wordsBy src/ListHelp.hs 116;" f worldPosToScreen src/Dodge/Base/Coordinate.hs 18;" f -worldSPic src/Dodge/Render/ShapePicture.hs 22;" f +worldSPic src/Dodge/Render/ShapePicture.hs 23;" f worldToGenWorld src/Dodge/LevelGen/LevelStructure.hs 14;" f wpAdd src/Dodge/Room/RezBox.hs 148;" f wrench1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 546;" f