diff --git a/data/dodge.config.json b/data/dodge.config.json index 571829bff..a9745e92e 100644 --- a/data/dodge.config.json +++ b/data/dodge.config.json @@ -1,8 +1,10 @@ { "_debug_booleans": [ "Show_ms_frame", - "Mouse_position", - "Collision_test" + "Enable_debug", + "Cr_status", + "Show_walls_near_point_you", + "Show_zone_circ" ], "_debug_view_clip_bounds": "NoRoomClipBoundaries", "_gameplay_rotate_to_wall": true, @@ -18,7 +20,7 @@ "_volume_master": 1, "_volume_music": 0, "_volume_sound": 1, - "_windowPosX": 0, + "_windowPosX": 800, "_windowPosY": 29, "_windowX": 800, "_windowY": 835 diff --git a/src/Dodge/Data/Config.hs b/src/Dodge/Data/Config.hs index 0e3c7c626..3dc6f3cbf 100644 --- a/src/Dodge/Data/Config.hs +++ b/src/Dodge/Data/Config.hs @@ -88,8 +88,8 @@ data DebugBool | Show_walls_near_point_you | Show_walls_near_segment | Show_zone_near_point_cursor + | Show_zone_circ | Inspect_wall - | Show_nodes_near_select | Show_path_between | Select_creature deriving (Eq, Ord, Bounded, Enum, Show) diff --git a/src/Dodge/Data/Universe.hs b/src/Dodge/Data/Universe.hs index c2d49a784..8c4a06182 100644 --- a/src/Dodge/Data/Universe.hs +++ b/src/Dodge/Data/Universe.hs @@ -49,8 +49,8 @@ data Universe = Universe } data DebugItem = DebugItem - { _debugPic :: Universe -> Picture - , _debugMessage :: Universe -> [String] + { _debugPic :: Picture + , _debugMessage :: [String] , _debugInfo :: DebugInfo } diff --git a/src/Dodge/Debug.hs b/src/Dodge/Debug.hs index 76aefe0d9..29c8227b3 100644 --- a/src/Dodge/Debug.hs +++ b/src/Dodge/Debug.hs @@ -1,5 +1,5 @@ {-# LANGUAGE LambdaCase #-} -module Dodge.Debug where +module Dodge.Debug (debugEvents) where import Data.Aeson.Types import AesonHelp @@ -15,59 +15,61 @@ import Dodge.WorldEvent.ThingsHit import Geometry.Vector import qualified SDL import Data.Ord +import Data.Foldable (fold) debugEvents :: Universe -> Universe debugEvents u = case dbools ^. at Enable_debug of Nothing -> u - Just () -> S.foldr debugEvent u dbools + 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 .~ debugEvent' u db --- case db of --- Collision_test -> u & uvDebug . at Collision_test ?~ collisionDebugItem u --- Circ_collision_test -> u & uvDebug . at Circ_collision_test ?~ circCollisionDebugItem u --- Select_creature -> u & uvDebug . at Select_creature ?~ selectCreatureDebugItem u --- _ -> u +debugEvent db u = u & uvDebug . at db .~ debugItem db u -debugEvent' :: Universe -> DebugBool -> Maybe DebugItem -debugEvent' u = \case - Collision_test -> Just $ collisionDebugItem u - Circ_collision_test -> Just $ circCollisionDebugItem u - Select_creature -> Just $ selectCreatureDebugItem u - Show_walls_near_point_cursor -> Just - (DebugItem (const $ drawWallsNearCursor w) (const mempty) NoDebugInfo) - Show_walls_near_segment -> Just - (DebugItem (const $ drawWallsNearSegment w) (const mempty) NoDebugInfo) - _ -> Nothing - where - w = u ^. uvWorld +debugItem :: DebugBool -> Universe -> Maybe DebugItem +debugItem = \case + Collision_test -> constDPic (drawCollisionTest . _uvWorld) + Circ_collision_test -> constDPic (drawCircCollisionTest . _uvWorld) + Select_creature -> Just . selectCreatureDebugItem + Show_walls_near_point_cursor -> constDPic (drawWallsNearCursor . _uvWorld) + Show_walls_near_segment -> constDPic (drawWallsNearSegment . _uvWorld) + Enable_debug -> const Nothing + Noclip -> const Nothing + Remove_LOS -> const Nothing + Cull_more_lights -> const Nothing + Close_shape_culling -> const Nothing + Bound_box_screen -> const Nothing + Show_ms_frame -> const Nothing + View_boundaries -> constDPic (viewBoundaries . _uvWorld) + Show_bound_box -> constDPic (drawBoundingBox . _uvWorld) + Show_wall_search_rays -> constDPic $ drawWallSearchRays . _uvWorld + Show_dda_test -> constDPic $ drawDDATest . _uvWorld + Show_far_wall_detect -> constDPic $ drawFarWallDetect . _uvWorld + Show_walls_near_point_you -> constDPic $ drawWallsNearYou . _uvWorld + Show_zone_near_point_cursor -> constDPic $ drawZoneNearPointCursor . _uvWorld + Show_zone_circ -> constDPic $ drawZoneCirc . _uvWorld + Inspect_wall -> constDPic $ drawInspectWalls . _uvWorld + Cr_awareness -> constDPic $ drawCreatureDisplayTexts . _uvWorld + Show_sound -> constDPic $ \u -> + fold (M.map (soundPic (u ^. uvConfig) (u ^. uvWorld)) $ u ^. uvWorld . playingSounds) + Cr_status -> constDPic $ \u -> drawCrInfo (u ^. uvConfig) (u ^. uvWorld) + Mouse_position -> constDPic $ drawMousePosition . _uvWorld + Walls_info -> constDPic $ drawWlIDs . _uvWorld + Pathing -> constDPic $ \u -> drawPathing (u ^. uvConfig) (u ^. uvWorld) + Show_path_between -> constDPic $ drawPathBetween . _uvWorld -collisionDebugItem :: Universe -> DebugItem -collisionDebugItem u = - DebugItem - { _debugPic = const $ drawCollisionTest $ u ^. uvWorld - , _debugMessage = const [] - , _debugInfo = NoDebugInfo - } +constDPic :: (Universe -> Picture) -> Universe -> Maybe DebugItem +constDPic p u = Just $ DebugItem (p u) mempty NoDebugInfo selectCreatureDebugItem :: Universe -> DebugItem selectCreatureDebugItem u = DebugItem - { _debugPic = const mempty - , _debugMessage = debugSelectCreatureMessage + { _debugPic = mempty + , _debugMessage = debugSelectCreatureMessage u , _debugInfo = scrollDebugInfoInt (length $ debugSelectCreatureList 0 u) u $ clickGetCreature u } -circCollisionDebugItem :: Universe -> DebugItem -circCollisionDebugItem _ = - DebugItem - { _debugPic = drawCircCollisionTest . (^. uvWorld) - , _debugMessage = const [] - , _debugInfo = NoDebugInfo - } - scrollDebugInfoInt :: Int -> Universe -> DebugInfo -> DebugInfo scrollDebugInfoInt i u | SDL.ScancodeRShift `M.member` (u ^. uvWorld . input . pressedKeys) = diff --git a/src/Dodge/Debug/Picture.hs b/src/Dodge/Debug/Picture.hs index 47366dbe8..1a3b8010e 100644 --- a/src/Dodge/Debug/Picture.hs +++ b/src/Dodge/Debug/Picture.hs @@ -4,7 +4,6 @@ module Dodge.Debug.Picture where import Control.Lens import Data.Foldable import qualified Data.Graph.Inductive as FGL -import qualified Data.Map.Strict as M import Data.Maybe import qualified Data.Set as S import Dodge.Base @@ -151,48 +150,47 @@ drawZoneCol col s (V2 x y) = setLayer DebugLayer . color col $ thickLine 2 (p : zipWith (+.+) (square 1) $ map ((s *.*) . (each %~ fromIntegral)) [V2 x y, V2 (x + 1) y, V2 (x + 1) (y + 1), V2 x (y + 1)] -debugDraw :: Config -> World -> Picture -{-# INLINE debugDraw #-} -debugDraw cfig w +showEnabledDebugs :: Config -> Picture +{-# INLINE showEnabledDebugs #-} +showEnabledDebugs cfig | Enable_debug `S.member` _debug_booleans cfig = - pic - <> setLayer FixedCoordLayer (toTopLeft cfig (translate (0.5 * halfWidth cfig) 0 $ drawList $ map text ts)) + setLayer FixedCoordLayer (toTopLeft cfig (translate (0.5 * halfWidth cfig) 0 $ drawList $ map text ts)) | otherwise = mempty where - pic = foldMap (debugDraw' cfig w) (_debug_booleans cfig) +-- pic = foldMap (debugDraw' cfig w) (_debug_booleans cfig) ts = map show (S.toList $ _debug_booleans cfig) -debugDraw' :: Config -> World -> DebugBool -> Picture -{-# INLINE debugDraw' #-} -debugDraw' cfig w bl = case bl of - Enable_debug -> mempty - Noclip -> mempty - Remove_LOS -> mempty - Cull_more_lights -> mempty - Close_shape_culling -> mempty - Bound_box_screen -> mempty - Show_ms_frame -> mempty - View_boundaries -> viewBoundaries w - Show_bound_box -> drawBoundingBox w - Show_wall_search_rays -> drawWallSearchRays w - Show_dda_test -> drawDDATest w - Show_far_wall_detect -> drawFarWallDetect w - Show_walls_near_point_cursor -> mempty - Show_walls_near_segment -> mempty - Show_walls_near_point_you -> drawWallsNearYou w - Show_zone_near_point_cursor -> drawZoneNearPointCursor w - Inspect_wall -> drawInspectWalls w - Cr_awareness -> drawCreatureDisplayTexts w - Show_sound -> fold $ M.map (soundPic cfig w) $ _playingSounds w - Cr_status -> drawCrInfo cfig w - Mouse_position -> drawMousePosition w - Walls_info -> drawWlIDs w - Pathing -> drawPathing cfig w - Show_nodes_near_select -> undefined --drawNodesNearSelect w - Show_path_between -> drawPathBetween w - Collision_test -> mempty - Circ_collision_test -> mempty - Select_creature -> mempty +--debugDraw' :: Config -> World -> DebugBool -> Picture +--{-# INLINE debugDraw' #-} +--debugDraw' cfig w bl = case bl of +-- Enable_debug -> mempty +-- Noclip -> mempty +-- Remove_LOS -> mempty +-- Cull_more_lights -> mempty +-- Close_shape_culling -> mempty +-- Bound_box_screen -> mempty +-- Show_ms_frame -> mempty +-- View_boundaries -> mempty +-- Show_bound_box -> mempty +-- Show_wall_search_rays -> mempty +-- Show_dda_test -> mempty +-- Show_far_wall_detect -> mempty +-- Show_walls_near_point_cursor -> mempty +-- Show_walls_near_segment -> mempty +-- Show_walls_near_point_you -> drawWallsNearYou w +-- Show_zone_near_point_cursor -> drawZoneNearPointCursor w +-- Show_zone_circ -> drawZoneCirc w +-- Inspect_wall -> drawInspectWalls w +-- Cr_awareness -> drawCreatureDisplayTexts w +-- Show_sound -> fold $ M.map (soundPic cfig w) $ _playingSounds w +-- Cr_status -> drawCrInfo cfig w +-- Mouse_position -> drawMousePosition w +-- Walls_info -> drawWlIDs w +-- Pathing -> drawPathing cfig w +-- Show_path_between -> drawPathBetween w +-- Collision_test -> mempty +-- Circ_collision_test -> mempty +-- Select_creature -> mempty drawCreatureDisplayTexts :: World -> Picture drawCreatureDisplayTexts w = foldMap (creatureDisplayText w) (w ^. cWorld . lWorld . creatures) @@ -288,6 +286,19 @@ drawZoneNearPointCursor w = mwp = mouseWorldPos (w ^. input) (w ^. wCam) ps = [zoneOfPoint 50 mwp] +drawZoneCirc :: World -> Picture +drawZoneCirc w = concat $ do + a <- w ^. input . clickWorldPos . at ButtonLeft + b <- w ^. input . heldWorldPos . at ButtonLeft + return $ + setLayer DebugLayer (uncurryV translate a $ color red $ circle (dist a b)) + <> + setLayer DebugLayer (color green $ line [a, b]) +-- foldMap (drawZoneCol orange 50) ps +-- where +-- mwp = mouseWorldPos (w ^. input) (w ^. wCam) +-- ps = [zoneOfPoint 50 mwp] + drawDDATest :: World -> Picture drawDDATest w = foldMap (drawZoneCol orange 50) ps diff --git a/src/Dodge/Default/World.hs.orig b/src/Dodge/Default/World.hs.orig deleted file mode 100644 index 7acd84f37..000000000 --- a/src/Dodge/Default/World.hs.orig +++ /dev/null @@ -1,140 +0,0 @@ -module Dodge.Default.World where -import Dodge.Data.World -import Dodge.Zone.Size -import Dodge.Zone.Object -import Dodge.Base -import Geometry.Vector3D -import Geometry.Zone ---import Dodge.Config.KeyConfig ---import Dodge.Menu ---import Picture -import Geometry.Data -import Geometry.Polygon ---import Picture.Texture ---import Data.Preload - -import Control.Lens -import System.Random -import qualified IntMapHelp as IM -import qualified Data.Map as M -import qualified Data.Set as S -import Data.Graph.Inductive.Graph hiding ((&)) ---import Data.Graph.Inductive.NodeMap ---import qualified Data.Vector.Fusion.Stream.Monadic as VS -defaultWorld :: World -defaultWorld = World - { _keys = S.empty - , _magnets = IM.empty - , _mouseButtons = mempty - , _cameraCenter = V2 0 0 - , _cameraRot = 0 - , _cameraZoom = 1 - , _itemZoom = 1 - , _defaultZoom = 1 - , _cameraViewFrom = V2 0 0 - , _viewDistance = 1000 - , _modifications = IM.empty - , _creatures = IM.empty - , _crZoning = Zoning IM.empty crZoneSize zoneOfCreature - , _creatureGroups = IM.empty - , _clouds = mempty - , _clZoning = Zoning IM.empty clZoneSize (zonePos (stripZ . _clPos)) - , _gusts = IM.empty - , _gsZoning = Zoning IM.empty clZoneSize (zonePos _guPos) - , _itemPositions = IM.empty - , _props = IM.empty - , _instantParticles = [] - , _particles = [] - , _newBeams = WorldBeams [] [] [] [] - , _beams = WorldBeams [] [] [] [] - , _walls = IM.empty - , _wallDamages = IM.empty - , _blocks = IM.empty - , _machines = IM.empty - , _terminals = IM.empty - , _doors = IM.empty - , _coordinates = IM.empty - , _triggers = IM.empty - , _wlZoning = Zoning IM.empty wlZoneSize zoneOfWall - , _floorItems = IM.empty - , _floorTiles = [] - , _randGen = mkStdGen 2 - , _mousePos = V2 0 0 - , _testString = const . const [] - , _debugPicture = mempty - , _yourID = 0 - , _worldEvents = id - , _delayedEvents = [] - , _pressPlates = IM.empty - , _buttons = IM.empty - , _toPlaySounds = M.empty - , _playingSounds = M.empty - , _corpses = IM.empty - , _decorations = IM.empty - --, _savedWorlds = M.empty --- , _menuLayers = [] - , _clickMousePos = V2 0 0 - , _pathGraph = PathGraph Data.Graph.Inductive.Graph.empty mempty 0 mempty - , _pathGraphP = mempty -<<<<<<< HEAD - , _pnZoning = Zoning mempty pnZoneSize (zonePos snd) - , _peZoning = Zoning mempty pnZoneSize (\x (_,_,PathEdge p q _) -> zoneOfSeg x p q) -======= - , _pnZoning = Zoning mempty wlZoneSize (zonePos snd) - , _peZoning = Zoning mempty wlZoneSize (\x (_,_,e) -> zoneOfSeg x (_peStart e) (_peEnd e)) ->>>>>>> efficientRuntime - , _hud = HUD - { _hudElement = DisplayInventory NoSubInventory - , _carteCenter = V2 0 0 - , _carteZoom = 0.5 - , _carteRot = 0 - } - , _lightSources = IM.empty - , _tempLightSources = [youLight] - , _closeObjects = [] - , _rbOptions = NoRightButtonOptions - , _seenLocations = IM.fromList - [(0, (_crPos . you, "CURRENT POSITION")) - ,(1, (const (V2 0 0) , "START POSITION")) - ] - , _selLocation = 0 - --, _keyConfig = defaultKeyConfigSDL --- , _config = defaultConfig - , _sideEffects = return - , _shapes = mempty - , _distortions = [] - , _gameRooms = [] - , _roomClipping = [] - , _unpauseClock = 0 - , _worldBounds = defaultBounds - , _maybeWorld = Nothing' - , _rewindWorlds = [] - , _timeFlow = NormalTimeFlow - , _hammers = defaultWorldHammers - , _backspaceTimer = 0 - , _genParams = GenParams M.empty - , _genPlacements = IM.empty - , _genRooms = IM.empty - , _deathDelay = Nothing - , _testFloat = 0 - , _boundBox = square 100 - , _boundDist = (100,-100,100,-100) - , _lLine = (0,0) - , _rLine = (0,0) - , _lSelect = 0 - , _rSelect = 0 - } -defaultWorldHammers :: M.Map WorldHammer HammerPosition -defaultWorldHammers = M.fromSet (const HammerUp) $ S.fromList [minBound.. maxBound] -youLight :: TempLightSource -youLight = TLS - { _tlsParam = LSParam - {_lsPos = V3 0 0 0 - ,_lsRad = 150 - ,_lsCol = 0.1 - } - ,_tlsUpdate = \w _ -> Just (youLight & tlsParam . lsPos .~ f (_crPos $ you w)) - ,_tlsTime = 0 - } - where - f (V2 x y) = V3 x y 100 diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index d8942cc4f..d1f7e12cc 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -35,7 +35,7 @@ fixedCoordPictures u = . take 50 . drop (u ^. uvDebugMessageOffset) . map text - $ foldMap (`_debugMessage` u) (_uvDebug u) -- other debug pics in extraPics + $ foldMap _debugMessage (_uvDebug u) -- other debug pics in extraPics ) where cfig = _uvConfig u diff --git a/src/Dodge/Render/ShapePicture.hs b/src/Dodge/Render/ShapePicture.hs index 3d2e0ff83..02e361e39 100644 --- a/src/Dodge/Render/ShapePicture.hs +++ b/src/Dodge/Render/ShapePicture.hs @@ -110,8 +110,8 @@ extraPics cfig u = <> foldMap drawLightSource (_lightSources lw) <> foldMap ppDraw (_pressPlates lw) <> viewClipBounds cfig w - <> debugDraw cfig w - <> foldMap (`_debugPic` u) (_uvDebug u) -- debug messages are in fixed coord pics + <> showEnabledDebugs cfig + <> foldMap _debugPic (_uvDebug u) -- debug messages are in fixed coord pics where w = u ^. uvWorld lw = w ^. cWorld . lWorld diff --git a/tags b/tags index 5e4210ed5..37617e448 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 108;" 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 @@ -368,7 +368,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 98;" 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 @@ -391,7 +391,7 @@ Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 7;" C East8 src/Dodge/Data/CardinalPoint.hs 15;" C EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t -EighthRes src/Dodge/Data/Config.hs 97;" C +EighthRes src/Dodge/Data/Config.hs 98;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor/Type.hs 13;" C ElectricSpark src/Dodge/Data/Spark.hs 22;" C @@ -479,7 +479,7 @@ FootstepSound src/Dodge/Data/SoundOrigin.hs 30;" 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 47;" C -FullRes src/Dodge/Data/Config.hs 97;" C +FullRes src/Dodge/Data/Config.hs 98;" 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 @@ -507,7 +507,7 @@ GenFloat src/Dodge/Data/GenFloat.hs 11;" t GenParams src/Dodge/Data/GenParams.hs 15;" t GenWorld src/Dodge/Data/GenWorld.hs 23;" t GenericFaction src/Dodge/Data/Creature/State.hs 15;" C -GeoObjShads src/Dodge/Data/Config.hs 101;" C +GeoObjShads src/Dodge/Data/Config.hs 102;" 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 @@ -536,7 +536,7 @@ HELD src/Dodge/Data/Item/Combine.hs 17;" C HOMINGMODULE src/Dodge/Data/Item/Combine.hs 102;" C HOSE src/Dodge/Data/Item/Combine.hs 55;" C HUD src/Dodge/Data/HUD.hs 31;" t -HalfRes src/Dodge/Data/Config.hs 97;" C +HalfRes src/Dodge/Data/Config.hs 98;" C HammerTrigger src/Dodge/Data/TriggerType.hs 10;" C HardQuit src/Dodge/Data/Universe.hs 70;" C HeavySmokeFlare src/Dodge/Data/Muzzle.hs 33;" C @@ -597,13 +597,13 @@ IncendiaryBall src/Dodge/Data/EnergyBall/Type.hs 13;" C InheritFloor src/Data/Tile.hs 12;" C Input src/Dodge/Data/Input.hs 33;" t InputScreen src/Dodge/Data/Universe.hs 92;" C -Inspect_wall src/Dodge/Data/Config.hs 91;" C +Inspect_wall src/Dodge/Data/Config.hs 92;" C Institution src/Dodge/Data/Scenario.hs 42;" t Int2 src/Geometry/Data.hs 21;" t IntID src/Dodge/Data/Universe.hs 113;" t IntImp src/Dodge/Data/CreatureEffect.hs 20;" t Intention src/Dodge/Data/Creature.hs 69;" t -IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C +IntersectingRoomClipBoundaries src/Dodge/Data/Config.hs 108;" 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 @@ -857,17 +857,17 @@ NoIntImp src/Dodge/Data/CreatureEffect.hs 20;" C NoItTargeting src/Dodge/Data/Item.hs 44;" C NoItemScroll src/Dodge/Data/Item.hs 39;" C NoLightFlare src/Dodge/Data/Muzzle.hs 31;" C -NoLighting src/Dodge/Data/Config.hs 104;" C +NoLighting src/Dodge/Data/Config.hs 105;" 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 103;" C NoParams src/Dodge/Data/Item/Params.hs 15;" C NoResurrection src/Dodge/Data/Corpse.hs 14;" C NoRightButtonState src/Dodge/Data/RightButtonOptions.hs 16;" C -NoRoomClipBoundaries src/Dodge/Data/Config.hs 107;" C +NoRoomClipBoundaries src/Dodge/Data/Config.hs 108;" 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 104;" 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 @@ -1098,7 +1098,7 @@ PutUsingGenParams src/Dodge/Data/GenWorld.hs 61;" C PutWall src/Dodge/Data/GenWorld.hs 54;" C PutWorldUpdate src/Dodge/Data/GenWorld.hs 59;" C QFloat src/Geometry/Data.hs 50;" t -QuarterRes src/Dodge/Data/Config.hs 97;" C +QuarterRes src/Dodge/Data/Config.hs 98;" 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 @@ -1139,7 +1139,7 @@ RenderData src/Data/Preload/Render.hs 13;" t ReplaceEquipment src/Dodge/Data/RightButtonOptions.hs 31;" 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 98;" t ResearchFacility src/Dodge/Data/Scenario.hs 62;" C ResourceFailure src/Dodge/Data/Scenario.hs 29;" C RespawnDelay src/Dodge/Data/World.hs 59;" C @@ -1157,7 +1157,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 100;" t -RoomClipping src/Dodge/Data/Config.hs 107;" t +RoomClipping src/Dodge/Data/Config.hs 108;" t RoomInt src/Dodge/Tree/Shift.hs 26;" t RoomLink src/Dodge/Data/Room.hs 23;" t RoomLinkType src/Dodge/Data/Room.hs 42;" t @@ -1203,7 +1203,7 @@ SelCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 33;" C 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 -Select_creature src/Dodge/Data/Config.hs 94;" C +Select_creature src/Dodge/Data/Config.hs 95;" C SelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 24;" C Selection src/Dodge/Data/HUD.hs 44;" t SelectionItem src/Dodge/Data/SelectionList.hs 41;" t @@ -1220,7 +1220,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 101;" t Shape src/Shape/Data.hs 53;" t ShapeProp src/Dodge/Data/Prop.hs 32;" C ShapeType src/Shape/Data.hs 16;" t @@ -1237,20 +1237,21 @@ Show_bound_box src/Dodge/Data/Config.hs 80;" C Show_dda_test src/Dodge/Data/Config.hs 83;" C Show_far_wall_detect src/Dodge/Data/Config.hs 86;" C Show_ms_frame src/Dodge/Data/Config.hs 67;" C -Show_nodes_near_select src/Dodge/Data/Config.hs 92;" C -Show_path_between src/Dodge/Data/Config.hs 93;" C +Show_nodes_near_select src/Dodge/Data/Config.hs 93;" C +Show_path_between src/Dodge/Data/Config.hs 94;" C Show_sound src/Dodge/Data/Config.hs 69;" C Show_wall_search_rays src/Dodge/Data/Config.hs 82;" C Show_walls_near_point_cursor src/Dodge/Data/Config.hs 87;" C Show_walls_near_point_you src/Dodge/Data/Config.hs 88;" C Show_walls_near_segment src/Dodge/Data/Config.hs 89;" C +Show_zone_circ src/Dodge/Data/Config.hs 91;" C Show_zone_near_point_cursor src/Dodge/Data/Config.hs 90;" C ShrapnelBomb src/Dodge/Data/Payload.hs 12;" C 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 64;" t -SixteenthRes src/Dodge/Data/Config.hs 97;" C +SixteenthRes src/Dodge/Data/Config.hs 98;" C Size src/Shape/Data.hs 28;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C SleepingQuatersSS src/Dodge/Data/Scenario.hs 90;" C @@ -2653,7 +2654,7 @@ applyPastDamages src/Dodge/Creature/State.hs 48;" f applyPiercingDamage src/Dodge/Creature/Damage.hs 22;" f applyPosition src/Sound.hs 111;" f applyRecoil src/Dodge/HeldUse.hs 451;" f -applyResFactor src/Dodge/Data/Config.hs 110;" f +applyResFactor src/Dodge/Data/Config.hs 111;" f applySetTerminalString src/Dodge/Debug/Terminal.hs 83;" f applySidePush src/Dodge/HeldUse.hs 551;" f applySoundCME src/Dodge/HeldUse.hs 441;" f @@ -2878,7 +2879,6 @@ chooseMovementLtAuto src/Dodge/CreatureEffect.hs 105;" f chooseMovementPistol src/Dodge/Humanoid.hs 203;" f chooseMovementPistol' src/Dodge/Humanoid.hs 208;" f chooseMovementSpreadGun src/Dodge/CreatureEffect.hs 88;" f -circCollisionDebugItem src/Dodge/Debug.hs 63;" f circHitWall src/Dodge/Base/Collide.hs 232;" f circInPolygon src/Geometry/Polygon.hs 70;" f circOnAnyCr src/Dodge/Base/Collide.hs 287;" f @@ -2906,7 +2906,7 @@ 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 107;" f +clickGetCreature src/Dodge/Debug.hs 98;" f clicker src/Dodge/Item/Scope.hs 82;" f clipV src/Geometry/Vector.hs 47;" f clipZoom src/Dodge/Update/Camera.hs 230;" f @@ -2915,7 +2915,7 @@ 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 222;" f -closestCreatureID src/Dodge/Debug.hs 116;" f +closestCreatureID src/Dodge/Debug.hs 107;" f closestPointOnLine src/Geometry/Intersect.hs 281;" f closestPointOnLineParam src/Geometry/Intersect.hs 297;" f closestPointOnSeg src/Geometry/Intersect.hs 312;" f @@ -2944,7 +2944,6 @@ collideCircWalls src/Dodge/Base/Collide.hs 244;" f collidePoint src/Dodge/Base/Collide.hs 54;" f collidePointTestFilter src/Dodge/Base/Collide.hs 180;" f collidePointWallsFilter src/Dodge/Base/Collide.hs 194;" f -collisionDebugItem src/Dodge/Debug.hs 47;" f color src/Picture/Base.hs 108;" f colorLamp src/Dodge/Creature/Lamp.hs 10;" f colorSH src/Shape.hs 237;" f @@ -2974,6 +2973,7 @@ 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 50;" f constructEdges src/Polyhedra.hs 34;" f constructEdgesList src/Polyhedra.hs 43;" f contToIDCont src/Dodge/LevelGen/PlacementHelper.hs 57;" f @@ -3130,14 +3130,14 @@ debrisSize src/Dodge/Block/Debris.hs 77;" f debugDraw src/Dodge/Debug/Picture.hs 154;" f debugDraw' src/Dodge/Debug/Picture.hs 165;" f debugEvent src/Dodge/Debug.hs 26;" f -debugEvent' src/Dodge/Debug.hs 34;" f debugEvents src/Dodge/Debug.hs 19;" f -debugList src/Dodge/Debug.hs 103;" f +debugItem src/Dodge/Debug.hs 29;" f +debugList src/Dodge/Debug.hs 94;" f debugMenu src/Dodge/Menu.hs 119;" f debugMenuOptions src/Dodge/Menu.hs 122;" f -debugOn src/Dodge/Data/Config.hs 151;" f -debugSelectCreatureList src/Dodge/Debug.hs 86;" f -debugSelectCreatureMessage src/Dodge/Debug.hs 77;" f +debugOn src/Dodge/Data/Config.hs 152;" f +debugSelectCreatureList src/Dodge/Debug.hs 77;" f +debugSelectCreatureMessage src/Dodge/Debug.hs 68;" f decodeSensorType src/Dodge/Terminal.hs 76;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f decomposeTree src/Dodge/Tree/Compose.hs 57;" f @@ -3166,7 +3166,7 @@ defaultCWGen src/Dodge/Default/World.hs 56;" f defaultCWorld src/Dodge/Default/World.hs 81;" f defaultChaseMvType src/Dodge/Creature/MoveType.hs 25;" f defaultClusterStatus src/Dodge/Default/Room.hs 38;" f -defaultConfig src/Dodge/Data/Config.hs 127;" f +defaultConfig src/Dodge/Data/Config.hs 128;" f defaultCorpse src/Dodge/Corpse/Make.hs 32;" f defaultCraftItem src/Dodge/Default/Item.hs 25;" f defaultCreature src/Dodge/Default/Creature.hs 12;" f @@ -3359,7 +3359,7 @@ drawBaseMachine src/Dodge/Machine/Draw.hs 55;" 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 336;" f +drawBoundingBox src/Dodge/Debug/Picture.hs 350;" f drawBullet src/Dodge/Bullet/Draw.hs 9;" f drawButton src/Dodge/Button/Draw.hs 10;" f drawCPUShadows src/Dodge/Render/Shadow.hs 19;" f @@ -3370,17 +3370,17 @@ drawCollisionTest src/Dodge/Debug/Picture.hs 103;" f drawCombFilter src/Dodge/Render/Picture.hs 268;" f drawCombineInventory src/Dodge/Render/HUD.hs 178;" f drawConcurrentMessage src/Dodge/Render/Picture.hs 69;" f -drawCoord src/Dodge/Debug/Picture.hs 364;" f +drawCoord src/Dodge/Debug/Picture.hs 378;" f drawCorpse src/Dodge/Corpse/Draw.hs 6;" f -drawCrInfo src/Dodge/Debug/Picture.hs 385;" f +drawCrInfo src/Dodge/Debug/Picture.hs 399;" f drawCreature src/Dodge/Render/ShapePicture.hs 62;" f -drawCreatureDisplayTexts src/Dodge/Debug/Picture.hs 197;" 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 71;" f drawCursorByTerminalStatus src/Dodge/Render/Picture.hs 125;" f -drawDDATest src/Dodge/Debug/Picture.hs 291;" f -drawDoorPaths src/Dodge/Debug/Picture.hs 252;" f +drawDDATest src/Dodge/Debug/Picture.hs 305;" f +drawDoorPaths src/Dodge/Debug/Picture.hs 253;" f drawDoubleLampCover src/Dodge/Prop/Draw.hs 95;" f drawDrag src/Dodge/Render/Picture.hs 199;" f drawDragDrop src/Dodge/Render/Picture.hs 228;" f @@ -3393,7 +3393,7 @@ drawEnergyBall src/Dodge/EnergyBall/Draw.hs 7;" f drawEquipment src/Dodge/Creature/Picture.hs 127;" f drawExamineInventory src/Dodge/Render/HUD.hs 194;" f drawExplosiveBall src/Dodge/EnergyBall/Draw.hs 15;" f -drawFarWallDetect src/Dodge/Debug/Picture.hs 269;" f +drawFarWallDetect src/Dodge/Debug/Picture.hs 270;" f drawFlame src/Dodge/Flame/Draw.hs 8;" f drawFlamelet src/Dodge/EnergyBall/Draw.hs 37;" f drawFooterText src/Dodge/Render/MenuScreen.hs 72;" f @@ -3402,8 +3402,8 @@ drawGapPlus src/Dodge/Render/Picture.hs 279;" f drawGib src/Dodge/Prop/Draw.hs 39;" f drawHUD src/Dodge/Render/HUD.hs 48;" f drawInputMenu src/Dodge/Render/MenuScreen.hs 22;" f -drawInspectWall src/Dodge/Debug/Picture.hs 244;" f -drawInspectWalls src/Dodge/Debug/Picture.hs 232;" f +drawInspectWall src/Dodge/Debug/Picture.hs 245;" f +drawInspectWalls src/Dodge/Debug/Picture.hs 233;" f drawInventory src/Dodge/Render/HUD.hs 55;" f drawItemChildrenConnect src/Dodge/Render/HUD.hs 325;" f drawItemConnections src/Dodge/Render/HUD.hs 315;" f @@ -3426,13 +3426,13 @@ drawMenuOrHUD src/Dodge/Render/Picture.hs 64;" f drawMenuScreen src/Dodge/Render/MenuScreen.hs 16;" f drawMouseCursor src/Dodge/Render/Picture.hs 80;" f drawMouseOver src/Dodge/Render/HUD.hs 105;" f -drawMousePosition src/Dodge/Debug/Picture.hs 354;" f +drawMousePosition src/Dodge/Debug/Picture.hs 368;" f drawMovingShape src/Dodge/Prop/Draw.hs 81;" f drawMovingShapeCol src/Dodge/Prop/Draw.hs 87;" f drawOptions src/Dodge/Render/MenuScreen.hs 36;" f -drawPathBetween src/Dodge/Debug/Picture.hs 200;" f -drawPathEdge src/Dodge/Debug/Picture.hs 257;" f -drawPathing src/Dodge/Debug/Picture.hs 427;" f +drawPathBetween src/Dodge/Debug/Picture.hs 201;" f +drawPathEdge src/Dodge/Debug/Picture.hs 258;" f +drawPathing src/Dodge/Debug/Picture.hs 441;" f drawPlus src/Dodge/Render/Picture.hs 160;" f drawPointLabel src/Dodge/Render/Label.hs 13;" f drawProjectile src/Dodge/Projectile/Draw.hs 13;" f @@ -3473,14 +3473,15 @@ drawVerticalDoubleArrow src/Dodge/Render/Picture.hs 211;" 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 -drawWallSearchRays src/Dodge/Debug/Picture.hs 300;" f -drawWallsNearCursor src/Dodge/Debug/Picture.hs 221;" f +drawWallSearchRays src/Dodge/Debug/Picture.hs 314;" f +drawWallsNearCursor src/Dodge/Debug/Picture.hs 222;" f drawWallsNearSegment src/Dodge/Debug/Picture.hs 128;" f -drawWallsNearYou src/Dodge/Debug/Picture.hs 212;" f +drawWallsNearYou src/Dodge/Debug/Picture.hs 213;" f drawWeapon src/Dodge/Creature/Volition.hs 15;" f -drawWlIDs src/Dodge/Debug/Picture.hs 372;" f +drawWlIDs src/Dodge/Debug/Picture.hs 386;" f +drawZoneCirc src/Dodge/Debug/Picture.hs 292;" f drawZoneCol src/Dodge/Debug/Picture.hs 147;" f -drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 284;" f +drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 285;" f dropAll src/Dodge/Creature/Update.hs 119;" f dropExcept src/Dodge/Creature/Action.hs 167;" f dropInventoryPath src/Dodge/HeldUse.hs 1396;" f @@ -3512,7 +3513,7 @@ ebEffect src/Dodge/EnergyBall.hs 45;" f ebFlicker src/Dodge/EnergyBall.hs 70;" f ebtToDamage src/Dodge/EnergyBall.hs 93;" f edgeFormatting src/Dodge/Combine/Graph.hs 131;" f -edgeToPic src/Dodge/Debug/Picture.hs 436;" f +edgeToPic src/Dodge/Debug/Picture.hs 450;" f effectOnEquip src/Dodge/Equipment.hs 31;" f effectOnRemove src/Dodge/Equipment.hs 18;" f eitType src/Dodge/Data/EquipType.hs 15;" f @@ -4372,7 +4373,7 @@ numSelfTree' src/Dodge/Tree/Compose.hs 110;" f numShads src/Picture/Data.hs 42;" f numSubElements src/Shader/Parameters.hs 39;" f numTraversable src/TreeHelp.hs 183;" f -obstacleColor src/Dodge/Debug/Picture.hs 262;" f +obstacleColor src/Dodge/Debug/Picture.hs 263;" f obstructPathsCrossing src/Dodge/Path.hs 138;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 698;" f onEquipWristShield src/Dodge/Equipment.hs 36;" f @@ -4898,7 +4899,7 @@ screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 51;" f scrollAugInvSel src/Dodge/Inventory.hs 190;" f scrollAugNextInSection src/Dodge/Inventory.hs 203;" f -scrollDebugInfoInt src/Dodge/Debug.hs 71;" f +scrollDebugInfoInt src/Dodge/Debug.hs 62;" f scrollRBOption src/Dodge/Update/Scroll.hs 202;" f scrollSelectionSections src/Dodge/SelectionSections.hs 28;" f scrollTimeBack src/Dodge/Update.hs 218;" f @@ -4926,7 +4927,7 @@ selSecDrawCursorAt src/Dodge/Render/List.hs 104;" f selSecSelCol src/Dodge/Render/HUD.hs 504;" f selSecSelSize src/Dodge/SelectionSections.hs 143;" f selSecYint src/Dodge/SelectionSections.hs 152;" f -selectCreatureDebugItem src/Dodge/Debug.hs 55;" f +selectCreatureDebugItem src/Dodge/Debug.hs 54;" f selectedItemScroll src/Dodge/Update/Scroll.hs 51;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 52;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 58;" f @@ -5110,7 +5111,7 @@ soundMultiFrom src/Dodge/SoundLogic.hs 187;" f soundOriginIDsAt src/Dodge/WorldEvent/Sound.hs 18;" f soundOriginsIDsAt src/Dodge/WorldEvent/Sound.hs 13;" f soundPathList src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 296;" f -soundPic src/Dodge/Debug/Picture.hs 341;" f +soundPic src/Dodge/Debug/Picture.hs 355;" f soundStart src/Dodge/SoundLogic.hs 118;" f soundToOnomato src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 150;" f soundToVol src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 4;" f @@ -5613,8 +5614,8 @@ verticalPipe src/Dodge/Picture.hs 19;" f verticalPipe src/Dodge/Placement/Instance/Pipe.hs 6;" f verticalWire src/Dodge/Wire.hs 24;" f vgunMuzzles src/Dodge/HeldUse.hs 333;" f -viewBoundaries src/Dodge/Debug/Picture.hs 309;" f -viewClipBounds src/Dodge/Debug/Picture.hs 318;" f +viewBoundaries src/Dodge/Debug/Picture.hs 323;" f +viewClipBounds src/Dodge/Debug/Picture.hs 332;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 194;" f viewTarget src/Dodge/Creature/ReaderUpdate.hs 146;" f violet src/Color.hs 21;" f