From 0da381666484fdc9804804ae5fe79b51abe0e5c8 Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 25 Oct 2025 10:17:59 +0100 Subject: [PATCH] Cleanup --- src/Dodge/LevelGen/DoorPane.hs | 23 +- src/Dodge/Placement/PlaceSpot.hs | 2 +- src/Dodge/Placement/PlaceSpot/TriggerDoor.hs | 86 +------- src/Dodge/Room/Airlock.hs | 2 +- tags | 216 +++++++++---------- 5 files changed, 119 insertions(+), 210 deletions(-) diff --git a/src/Dodge/LevelGen/DoorPane.hs b/src/Dodge/LevelGen/DoorPane.hs index ca56232b1..2ab641f3d 100644 --- a/src/Dodge/LevelGen/DoorPane.hs +++ b/src/Dodge/LevelGen/DoorPane.hs @@ -1,17 +1,10 @@ -module Dodge.LevelGen.DoorPane ( rectanglePairs) where -import Geometry.Vector -import Geometry.Data +module Dodge.LevelGen.DoorPane (mkRectangle) where -rectanglePairs :: Float -> Point2 -> Point2 -> [(Point2,Point2)] -rectanglePairs wdth a b = - [ (aup, ad) - , (ad, bd) - , (bd, bu) - , (bu, aup) - ] +import Geometry.Data +import Geometry.Vector +import Linear + +mkRectangle :: Float -> Point2 -> [ Point2] +mkRectangle wdth b = [ n , - n , b - n , b + n ] where - aup = a +.+ norm - ad = a -.- norm - bu = b +.+ norm - bd = b -.- norm - norm = wdth *.* normalizeV ( vNormal (b -.- a)) + n = wdth *^ normalizeV (vNormal b) diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index 0188e24cc..ae25eabc5 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -134,7 +134,7 @@ placeSpotID rid ps pt w = case pt of PutMachine pps mc mitm -> plMachine (map doShift pps) mc mitm p rot w PutLS ls -> plNewUpID (gwWorld . cWorld . lWorld . lightSources) lsID (mvLS p' rot ls) w RandPS _ -> error "RandPS should not be reachable here" --evaluateRandPS rid rgn ps w - PutDoor dr wl -> plDoor' (dr & drZeroPos %~ pashift & drOnePos %~ pashift) wl w + PutDoor dr wl -> plDoor (dr & drZeroPos %~ pashift & drOnePos %~ pashift) wl w PutCoord cp -> plNewID (gwWorld . coordinates) (doShift cp) w PutBlock bl wl ps' -> plBlock diff --git a/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs b/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs index 76efce36f..3f36cec46 100644 --- a/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs +++ b/src/Dodge/Placement/PlaceSpot/TriggerDoor.hs @@ -1,27 +1,20 @@ module Dodge.Placement.PlaceSpot.TriggerDoor ( - plDoor', plDoor, - plSlideDoor, ) where import Dodge.Door.DoorLerp import Dodge.Data.GenWorld -import Dodge.Default.Door -import Dodge.Default.Wall -import Dodge.LevelGen.DoorPane import Dodge.Placement.PlaceSpot.Block import Dodge.ShiftPoint -import Geometry import qualified IntMapHelp as IM import LensHelp -import Linear -plDoor' :: +plDoor :: Door -> Wall -> GenWorld -> (Int, GenWorld) -plDoor' dr wl gw = +plDoor dr wl gw = ( drid , over gwWorld addWalls $ gw & gwWorld . cWorld . lWorld . doors . at drid ?~ newdr -- carefull with the ordering of addWalls @@ -42,78 +35,3 @@ plDoor' dr wl gw = (map fst pps & each %~ shiftPointBy lerposa) drid wlid - -plDoor :: - WdBl -> - Float -> - Point2A -> - Point2A -> - GenWorld -> - (Int, GenWorld) -plDoor cond l p1 p2 gw = - ( drid - , over gwWorld addWalls $ gw & gwWorld . cWorld . lWorld . doors . at drid ?~ addDoor - -- carefull with the ordering of addWalls - ) - where - isauto = case cond of - WdBlCrFilterNearPoint{} -> True - _ -> False - drid = IM.newKey $ _doors (_lWorld (_cWorld $ _gwWorld gw)) - addDoor = - defaultDoor - { _drID = drid - , _drTrigger = cond - , _drUpdate = DoorLerp 0.01 - , _drZeroPos = p1 - , _drOnePos = p2 - , _drLerp = 0 - , _drFootPrint = IM.fromList . zip wlids $ wlps' - } - wlids = take 4 [wlid ..] - wlid = IM.newKey $ gw ^. gwWorld . cWorld . lWorld . walls - wlps' = rectanglePairs 9 0 (V2 l 0) - addWalls = - insertStructureWalls - (`DoorPart` isauto) - defaultDoorWall - (map fst wlps' & each %~ shiftPointBy p1) - drid - wlid - -plSlideDoor :: - Door -> - Wall -> - Float -> - Point2 -> - Point2 -> - GenWorld -> - (Int, GenWorld) -plSlideDoor dr wl shiftOffset a b gw = - (drid, over gwWorld addWalls $ gw & gwWorld . cWorld . lWorld . doors %~ addDoor) - where - isauto = case dr ^. drTrigger of - WdBlCrFilterNearPoint{} -> True - _ -> False - drid = IM.newKey $ _doors (_lWorld (_cWorld $ _gwWorld gw)) - addDoor = - IM.insert drid $ - dr - { _drID = drid - , _drUpdate = DoorLerp $ 1 / distance a (shiftLeft a) - , _drZeroPos = (a, 0) - , _drOnePos = (shiftLeft a, 0) - , _drLerp = 0 - , _drFootPrint = IM.fromList $ zip wlids $ rectanglePairs 9 0 (b - a) - } - pairs = rectanglePairs 9 a b - shiftLeft = (+.+ (a -.- b +.+ shiftOffset *.* normalizeV (b -.- a))) - wlids = take 4 [wlid ..] - wlid = IM.newKey $ gw ^. gwWorld . cWorld . lWorld . walls - addWalls = - insertStructureWalls - (`DoorPart` isauto) - wl - (map fst pairs) - drid - wlid diff --git a/src/Dodge/Room/Airlock.hs b/src/Dodge/Room/Airlock.hs index 53d41f88b..80c7d6c47 100644 --- a/src/Dodge/Room/Airlock.hs +++ b/src/Dodge/Room/Airlock.hs @@ -121,7 +121,7 @@ putDoor cond l p1 p2 = PutDoor dr wl & drZeroPos .~ p1 & drOnePos .~ p2 & drFootPrint .~ IM.fromList (zip [0 ..] wlps') - wlps' = rectanglePairs 9 0 (V2 l 0) + wlps' = loopPairs $ mkRectangle 9 (V2 l 0) airlockSimple :: RandomGen g => State g Room airlockSimple = do diff --git a/tags b/tags index e57cd5a9a..087dcd94c 100644 --- a/tags +++ b/tags @@ -939,10 +939,10 @@ POISONSPRAYER src/Dodge/Data/Item/Combine.hs 172;" C PORTABLEFUSION src/Dodge/Data/Item/Combine.hs 87;" C POWERLEGS src/Dodge/Data/Item/Combine.hs 128;" C PRISM src/Dodge/Data/Item/Combine.hs 65;" C -PS src/Dodge/Data/GenWorld.hs 96;" C -PSNoShiftCont src/Dodge/Data/GenWorld.hs 97;" C -PSPos src/Dodge/Data/GenWorld.hs 98;" C -PSRoomRand src/Dodge/Data/GenWorld.hs 103;" C +PS src/Dodge/Data/GenWorld.hs 92;" C +PSNoShiftCont src/Dodge/Data/GenWorld.hs 93;" C +PSPos src/Dodge/Data/GenWorld.hs 94;" C +PSRoomRand src/Dodge/Data/GenWorld.hs 99;" C PSType src/Dodge/Data/GenWorld.hs 31;" t PUMP src/Dodge/Data/Item/Combine.hs 62;" C PaletteColor src/Color/Data.hs 11;" t @@ -962,8 +962,8 @@ PhysicalSensor src/Dodge/Data/Machine/Sensor.hs 16;" C Picture src/Picture/Data.hs 44;" t Piercing src/Dodge/Data/Damage.hs 16;" C PistolAI src/Dodge/Data/Creature/Misc.hs 41;" C -Placement src/Dodge/Data/GenWorld.hs 109;" t -PlacementSpot src/Dodge/Data/GenWorld.hs 95;" t +Placement src/Dodge/Data/GenWorld.hs 105;" t +PlacementSpot src/Dodge/Data/GenWorld.hs 91;" t PlainBarrel src/Dodge/Data/Creature/Misc.hs 86;" C PlantNurserySS src/Dodge/Data/Scenario.hs 96;" C PlayStatus src/Sound/Data.hs 21;" t @@ -1029,25 +1029,25 @@ PushedBy src/Dodge/Data/Door.hs 25;" C PushesItself src/Dodge/Data/Door.hs 24;" C PutBlock src/Dodge/Data/GenWorld.hs 44;" C PutButton src/Dodge/Data/GenWorld.hs 40;" C -PutChasm src/Dodge/Data/GenWorld.hs 63;" C +PutChasm src/Dodge/Data/GenWorld.hs 61;" C PutCoord src/Dodge/Data/GenWorld.hs 45;" C PutCrit src/Dodge/Data/GenWorld.hs 32;" C -PutDoor' src/Dodge/Data/GenWorld.hs 56;" C +PutDoor src/Dodge/Data/GenWorld.hs 55;" C PutFlIt src/Dodge/Data/GenWorld.hs 43;" C -PutForeground src/Dodge/Data/GenWorld.hs 59;" C -PutID src/Dodge/Data/GenWorld.hs 62;" C +PutForeground src/Dodge/Data/GenWorld.hs 57;" C +PutID src/Dodge/Data/GenWorld.hs 60;" C PutLS src/Dodge/Data/GenWorld.hs 39;" C -PutLabel src/Dodge/Data/GenWorld.hs 64;" C +PutLabel src/Dodge/Data/GenWorld.hs 62;" C PutLineBlock src/Dodge/Data/GenWorld.hs 48;" C PutMachine src/Dodge/Data/GenWorld.hs 33;" C PutMod src/Dodge/Data/GenWorld.hs 46;" C -PutNothing src/Dodge/Data/GenWorld.hs 61;" C +PutNothing src/Dodge/Data/GenWorld.hs 59;" C PutOnEquipment src/Dodge/Data/RightButtonOptions.hs 19;" C PutProp src/Dodge/Data/GenWorld.hs 41;" C PutTerminal src/Dodge/Data/GenWorld.hs 42;" C PutTrigger src/Dodge/Data/GenWorld.hs 47;" C PutWall src/Dodge/Data/GenWorld.hs 54;" C -PutWorldUpdate src/Dodge/Data/GenWorld.hs 60;" C +PutWorldUpdate src/Dodge/Data/GenWorld.hs 58;" C QFloat src/Geometry/Data.hs 50;" t QuarterRes src/Dodge/Data/Config.hs 98;" C QuicksaveSlot src/Dodge/Data/SaveSlot.hs 8;" C @@ -1071,7 +1071,7 @@ RadialDistortion src/Dodge/Data/Distortion.hs 11;" C RandImpulse src/Dodge/Data/ActionPlan.hs 49;" t RandImpulseCircMove src/Dodge/Data/ActionPlan.hs 51;" C RandImpulseList src/Dodge/Data/ActionPlan.hs 50;" C -RandPS src/Dodge/Data/GenWorld.hs 58;" C +RandPS src/Dodge/Data/GenWorld.hs 56;" C RandomImpulse src/Dodge/Data/ActionPlan.hs 31;" C RandomTurn src/Dodge/Data/ActionPlan.hs 30;" C ReactorSS src/Dodge/Data/Scenario.hs 111;" C @@ -1107,7 +1107,7 @@ Rocket src/Dodge/Data/Projectile.hs 32;" C RocketHoming src/Dodge/Data/Projectile.hs 39;" t RocketSmoke src/Dodge/Data/Projectile.hs 52;" t RocketSmoke src/Dodge/Data/Cloud.hs 22;" C -Room src/Dodge/Data/GenWorld.hs 124;" t +Room src/Dodge/Data/GenWorld.hs 120;" t RoomClipping src/Dodge/Data/Config.hs 108;" t RoomInt src/Dodge/Tree/Shift.hs 26;" t RoomLink src/Dodge/Data/Room.hs 24;" t @@ -2073,11 +2073,11 @@ _pjSpin src/Dodge/Data/Projectile.hs 19;" f _pjTimer src/Dodge/Data/Projectile.hs 22;" f _pjType src/Dodge/Data/Projectile.hs 24;" f _pjVel src/Dodge/Data/Projectile.hs 17;" f -_plExternalID src/Dodge/Data/GenWorld.hs 113;" f -_plIDCont src/Dodge/Data/GenWorld.hs 114;" f -_plMID src/Dodge/Data/GenWorld.hs 112;" f -_plSpot src/Dodge/Data/GenWorld.hs 110;" f -_plType src/Dodge/Data/GenWorld.hs 111;" f +_plExternalID src/Dodge/Data/GenWorld.hs 109;" f +_plIDCont src/Dodge/Data/GenWorld.hs 110;" f +_plMID src/Dodge/Data/GenWorld.hs 108;" f +_plSpot src/Dodge/Data/GenWorld.hs 106;" f +_plType src/Dodge/Data/GenWorld.hs 107;" f _playStatus src/Sound/Data.hs 15;" f _playingSounds src/Dodge/Data/World.hs 40;" f _posture src/Dodge/Data/Creature/Stance.hs 17;" f @@ -2098,24 +2098,24 @@ _proxReqEquipment src/Dodge/Data/Machine/Sensor.hs 36;" f _proxReqMinHealth src/Dodge/Data/Machine/Sensor.hs 35;" f _proxSensorType src/Dodge/Data/Machine/Sensor.hs 26;" f _proxToggle src/Dodge/Data/Machine/Sensor.hs 27;" f -_psFallback src/Dodge/Data/GenWorld.hs 101;" f -_psPos src/Dodge/Data/GenWorld.hs 96;" f -_psRandShift src/Dodge/Data/GenWorld.hs 105;" f -_psRoomEff src/Dodge/Data/GenWorld.hs 100;" f -_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 104;" f -_psRot src/Dodge/Data/GenWorld.hs 96;" f -_psSelect src/Dodge/Data/GenWorld.hs 99;" f +_psFallback src/Dodge/Data/GenWorld.hs 97;" f +_psPos src/Dodge/Data/GenWorld.hs 92;" f +_psRandShift src/Dodge/Data/GenWorld.hs 101;" f +_psRoomEff src/Dodge/Data/GenWorld.hs 96;" f +_psRoomRandPointNum src/Dodge/Data/GenWorld.hs 100;" f +_psRot src/Dodge/Data/GenWorld.hs 92;" f +_psSelect src/Dodge/Data/GenWorld.hs 95;" f _pulseBalls src/Dodge/Data/LWorld.hs 113;" f _pulseLasers src/Dodge/Data/LWorld.hs 112;" f _pulseProgress src/Dodge/Data/Creature/Misc.hs 54;" f _pulseRate src/Dodge/Data/Creature/Misc.hs 53;" f _putBlock src/Dodge/Data/GenWorld.hs 44;" f _putButton src/Dodge/Data/GenWorld.hs 40;" f -_putChasmPoly src/Dodge/Data/GenWorld.hs 63;" f +_putChasmPoly src/Dodge/Data/GenWorld.hs 61;" f _putEndPoint src/Dodge/Data/GenWorld.hs 52;" f -_putID src/Dodge/Data/GenWorld.hs 62;" f +_putID src/Dodge/Data/GenWorld.hs 60;" f _putItem src/Dodge/Data/GenWorld.hs 43;" f -_putLabel src/Dodge/Data/GenWorld.hs 64;" f +_putLabel src/Dodge/Data/GenWorld.hs 62;" f _putMachineMachine src/Dodge/Data/GenWorld.hs 35;" f _putMachineMaybeItem src/Dodge/Data/GenWorld.hs 37;" f _putMachinePoly src/Dodge/Data/GenWorld.hs 34;" f @@ -2153,28 +2153,28 @@ _rkSmoke src/Dodge/Data/Projectile.hs 34;" f _rlDir src/Dodge/Data/Room.hs 27;" f _rlPos src/Dodge/Data/Room.hs 26;" f _rlType src/Dodge/Data/Room.hs 25;" f -_rmBound src/Dodge/Data/GenWorld.hs 139;" f -_rmChildren src/Dodge/Data/GenWorld.hs 150;" f -_rmClusterStatus src/Dodge/Data/GenWorld.hs 152;" f -_rmConnectsTo src/Dodge/Data/GenWorld.hs 147;" f -_rmEndWires src/Dodge/Data/GenWorld.hs 146;" f -_rmFloor src/Dodge/Data/GenWorld.hs 140;" f +_rmBound src/Dodge/Data/GenWorld.hs 135;" f +_rmChildren src/Dodge/Data/GenWorld.hs 146;" f +_rmClusterStatus src/Dodge/Data/GenWorld.hs 148;" f +_rmConnectsTo src/Dodge/Data/GenWorld.hs 143;" f +_rmEndWires src/Dodge/Data/GenWorld.hs 142;" f +_rmFloor src/Dodge/Data/GenWorld.hs 136;" f _rmHeight src/Dodge/Data/Room.hs 39;" f -_rmInPmnt src/Dodge/Data/GenWorld.hs 138;" f -_rmLinkEff src/Dodge/Data/GenWorld.hs 128;" f -_rmLinks src/Dodge/Data/GenWorld.hs 126;" f -_rmMID src/Dodge/Data/GenWorld.hs 148;" f -_rmMParent src/Dodge/Data/GenWorld.hs 149;" f -_rmName src/Dodge/Data/GenWorld.hs 141;" f -_rmPath src/Dodge/Data/GenWorld.hs 136;" f -_rmPmnts src/Dodge/Data/GenWorld.hs 137;" f -_rmPolys src/Dodge/Data/GenWorld.hs 125;" f -_rmPos src/Dodge/Data/GenWorld.hs 135;" f -_rmRandPSs src/Dodge/Data/GenWorld.hs 144;" f -_rmShift src/Dodge/Data/GenWorld.hs 142;" f -_rmStartWires src/Dodge/Data/GenWorld.hs 145;" f -_rmType src/Dodge/Data/GenWorld.hs 151;" f -_rmViewpoints src/Dodge/Data/GenWorld.hs 143;" f +_rmInPmnt src/Dodge/Data/GenWorld.hs 134;" f +_rmLinkEff src/Dodge/Data/GenWorld.hs 124;" f +_rmLinks src/Dodge/Data/GenWorld.hs 122;" f +_rmMID src/Dodge/Data/GenWorld.hs 144;" f +_rmMParent src/Dodge/Data/GenWorld.hs 145;" f +_rmName src/Dodge/Data/GenWorld.hs 137;" f +_rmPath src/Dodge/Data/GenWorld.hs 132;" f +_rmPmnts src/Dodge/Data/GenWorld.hs 133;" f +_rmPolys src/Dodge/Data/GenWorld.hs 121;" f +_rmPos src/Dodge/Data/GenWorld.hs 131;" f +_rmRandPSs src/Dodge/Data/GenWorld.hs 140;" f +_rmShift src/Dodge/Data/GenWorld.hs 138;" f +_rmStartWires src/Dodge/Data/GenWorld.hs 141;" f +_rmType src/Dodge/Data/GenWorld.hs 147;" f +_rmViewpoints src/Dodge/Data/GenWorld.hs 139;" f _rmWidth src/Dodge/Data/Room.hs 38;" f _rpDir src/Dodge/Data/Room.hs 17;" f _rpFlags src/Dodge/Data/Room.hs 18;" f @@ -2492,8 +2492,7 @@ addGirderNS' src/Dodge/Room/Modify/Girder.hs 55;" f addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f -addPane src/Dodge/Placement/PlaceSpot.hs 182;" f -addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f +addPane src/Dodge/Placement/PlaceSpot.hs 180;" f addPointPolygon src/Geometry/Polygon.hs 134;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f addPolyWalls src/Dodge/LevelGen/StaticWalls.hs 129;" f @@ -2513,12 +2512,12 @@ aimDelaySweep src/Dodge/Render/Picture.hs 287;" f aimStanceInfo src/Dodge/Item/Info.hs 243;" f aimTurn src/Dodge/Creature/YourControl.hs 181;" f airlock src/Dodge/Room/Airlock.hs 27;" f -airlock0 src/Dodge/Room/Airlock.hs 75;" f -airlock90 src/Dodge/Room/Airlock.hs 211;" f -airlockCrystal src/Dodge/Room/Airlock.hs 256;" f +airlock0 src/Dodge/Room/Airlock.hs 77;" f +airlock90 src/Dodge/Room/Airlock.hs 189;" f +airlockCrystal src/Dodge/Room/Airlock.hs 229;" f airlockDoubleDoor src/Dodge/Room/Airlock.hs 101;" f -airlockSimple src/Dodge/Room/Airlock.hs 128;" f -airlockZ src/Dodge/Room/Airlock.hs 166;" f +airlockSimple src/Dodge/Room/Airlock.hs 126;" f +airlockZ src/Dodge/Room/Airlock.hs 154;" f allVisibleWalls src/Dodge/Base/Collide.hs 223;" f alongSegBy src/Geometry.hs 40;" f alteRifle src/Dodge/Item/Held/Cane.hs 22;" f @@ -2715,7 +2714,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 248;" f burstRifle src/Dodge/Item/Held/Cane.hs 30;" f buttonFlip src/Dodge/Button/Event.hs 17;" f buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 702;" f -cChasm src/Dodge/Room/Tutorial.hs 136;" f +cChasm src/Dodge/Room/Tutorial.hs 142;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f @@ -2750,7 +2749,7 @@ chaseCritInternal src/Dodge/Humanoid.hs 7;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f -chasmSimpleMaze src/Dodge/Room/Tutorial.hs 203;" f +chasmSimpleMaze src/Dodge/Room/Tutorial.hs 209;" f chasmTest src/Dodge/Creature/Update.hs 132;" f chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f @@ -2969,7 +2968,7 @@ crsNearPoint src/Dodge/Zoning/Creature.hs 18;" f crsNearRect src/Dodge/Zoning/Creature.hs 39;" f crsNearSeg src/Dodge/Zoning/Creature.hs 24;" f crystalLine src/Dodge/Placement/Instance/Wall.hs 66;" f -cubeShape src/Dodge/Block/Debris.hs 113;" f +cubeShape src/Dodge/Block/Debris.hs 111;" f cullPoint src/Dodge/Render/ShapePicture.hs 96;" f cullPretty src/AesonHelp.hs 14;" f cutPoly src/Dodge/LevelGen/StaticWalls.hs 77;" f @@ -3024,7 +3023,7 @@ deadScalp src/Dodge/Creature/Picture.hs 81;" f 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 86;" f +debrisSize src/Dodge/Block/Debris.hs 84;" f debugEvent src/Dodge/Debug.hs 36;" f debugEvents src/Dodge/Debug.hs 21;" f debugItem src/Dodge/Debug.hs 39;" f @@ -3037,7 +3036,7 @@ debugWritableValues src/Dodge/Debug.hs 84;" f decodeSensorType src/Dodge/Terminal.hs 72;" f decomposeSelfTree src/Dodge/Tree/Compose.hs 61;" f decomposeTree src/Dodge/Tree/Compose.hs 58;" f -decontamRoom src/Dodge/Room/Airlock.hs 32;" f +decontamRoom src/Dodge/Room/Airlock.hs 37;" f decoratedBlock src/Dodge/Placement/Instance/Block.hs 11;" f decorationToShape src/Dodge/Placement/TopDecoration.hs 9;" f decreaseAwareness src/Dodge/Creature/Perception.hs 118;" f @@ -3068,7 +3067,7 @@ defaultCreature src/Dodge/Default/Creature.hs 12;" f defaultCreatureMemory src/Dodge/Default/Creature.hs 65;" f defaultCrystalWall src/Dodge/Default/Wall.hs 35;" f defaultDirtBlock src/Dodge/Default/Block.hs 17;" f -defaultDirtWall src/Dodge/Default/Wall.hs 48;" f +defaultDirtWall src/Dodge/Default/Wall.hs 47;" f defaultDoor src/Dodge/Default/Door.hs 5;" f defaultDoorWall src/Dodge/Default/Wall.hs 29;" f defaultDrawButton src/Dodge/Button/Draw.hs 29;" f @@ -3092,7 +3091,7 @@ defaultRoom src/Dodge/Default/Room.hs 9;" f defaultTerminal src/Dodge/Default/Terminal.hs 10;" f defaultVision src/Dodge/Default/Creature.hs 85;" f defaultWall src/Dodge/Default/Wall.hs 15;" f -defaultWindow src/Dodge/Default/Wall.hs 56;" f +defaultWindow src/Dodge/Default/Wall.hs 54;" f defaultWorld src/Dodge/Default/World.hs 31;" f degToRad src/Geometry/Vector.hs 118;" f deleteIMInZone src/Dodge/Base.hs 70;" f @@ -3139,7 +3138,7 @@ dist src/Geometry/Vector.hs 185;" f dist3 src/Geometry/Vector3D.hs 101;" f divTo src/Geometry/Zone.hs 6;" f divideCircle src/Geometry.hs 321;" f -divideDoorPane src/Dodge/Placement/Instance/Door.hs 67;" f +divideDoorPane src/Dodge/Placement/Instance/Door.hs 64;" f divideLine src/Geometry.hs 248;" f divideLineExact src/Geometry.hs 276;" f divideLineOddNumPoints src/Geometry.hs 261;" f @@ -3211,7 +3210,7 @@ doWdWd src/Dodge/WorldEffect.hs 28;" f doWorldEvents src/Dodge/Update.hs 428;" f doWorldPos src/Dodge/WorldPos.hs 10;" f door src/Dodge/Room/Door.hs 13;" f -doorBetween src/Dodge/Placement/Instance/Door.hs 46;" f +doorBetween src/Dodge/Placement/Instance/Door.hs 44;" f doorLerp src/Dodge/DrWdWd.hs 27;" f dotV src/Geometry/Vector.hs 76;" f dotV3 src/Geometry/Vector3D.hs 119;" f @@ -3495,7 +3494,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 122;" f floorWire src/Dodge/Wire.hs 13;" f foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 558;" f foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f -foldMTRS src/Dodge/Room/Tutorial.hs 81;" f +foldMTRS src/Dodge/Room/Tutorial.hs 87;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 24;" f @@ -3556,8 +3555,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 533;" f getCommand src/Dodge/Terminal.hs 52;" f getCommands src/Dodge/Terminal.hs 49;" f getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f -getCrsFromRooms src/Dodge/Room/Tutorial.hs 352;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 339;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 358;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 345;" f getDebugMouseOver src/Dodge/Update.hs 376;" f getDistortions src/Dodge/Render.hs 435;" f getEdgesCrossing src/Dodge/Path.hs 49;" f @@ -3574,7 +3573,7 @@ getNodePos src/Dodge/Path.hs 38;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f -getRoomsFromInts src/Dodge/Room/Tutorial.hs 335;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 341;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -3725,9 +3724,9 @@ insertOneS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 514;" f insertOver src/ListHelp.hs 47;" f insertS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 446;" f insertStructureWalls src/Dodge/Placement/PlaceSpot/Block.hs 37;" f -insertWall src/Dodge/Placement/PlaceSpot/Block.hs 121;" f +insertWall src/Dodge/Placement/PlaceSpot/Block.hs 120;" f insertWallInZones src/Dodge/Wall/Zone.hs 20;" f -insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 118;" f +insertWalls src/Dodge/Placement/PlaceSpot/Block.hs 117;" f insertWithNewKeys src/IntMapHelp.hs 71;" f intAnno src/Dodge/Floor.hs 111;" f interactWithCloseObj src/Dodge/SelectedClose.hs 9;" f @@ -3890,7 +3889,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyPic src/Dodge/Item/Draw/SPic.hs 459;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f -lChasm src/Dodge/Room/Tutorial.hs 145;" f +lChasm src/Dodge/Room/Tutorial.hs 151;" f lConnect src/Dodge/Render/Connectors.hs 42;" f lConnectMulti src/Dodge/Render/Connectors.hs 46;" f lShape src/Dodge/Placement/Instance/LightSource.hs 89;" f @@ -4038,8 +4037,8 @@ makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeColorTermLine src/Dodge/Terminal.hs 111;" f makeColorTermPara src/Dodge/Terminal.hs 108;" f makeCorpse src/Dodge/Corpse/Make.hs 13;" f -makeDebris src/Dodge/Block/Debris.hs 51;" f -makeDebrisDirected src/Dodge/Block/Debris.hs 54;" f +makeDebris src/Dodge/Block/Debris.hs 49;" f +makeDebrisDirected src/Dodge/Block/Debris.hs 52;" f makeDoorDebris src/Dodge/Block/Debris.hs 26;" f makeDustAt src/Dodge/WorldEvent/Cloud.hs 17;" f makeEnumOption src/Dodge/Menu/OptionType.hs 13;" f @@ -4140,7 +4139,7 @@ mglCreate src/GLHelp.hs 8;" f mglDelete src/GLHelp.hs 14;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f midBounds src/Dodge/Room/Foreground.hs 151;" f -midChasm src/Dodge/Room/Tutorial.hs 166;" f +midChasm src/Dodge/Room/Tutorial.hs 172;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 83;" f @@ -4166,6 +4165,7 @@ mixColorsLinear src/Color.hs 95;" f mkCustomLenses src/ThirdPartyLens.hs 7;" f mkGraphFromEdges src/GraphHelp.hs 4;" f mkNode src/Dodge/Graph.hs 29;" f +mkRectangle src/Dodge/LevelGen/DoorPane.hs 7;" f mntLS src/Dodge/Placement/Instance/LightSource.hs 136;" f mntLSCond src/Dodge/Placement/Instance/LightSource.hs 159;" f mntLSOn src/Dodge/Placement/Instance/LightSource.hs 66;" f @@ -4201,16 +4201,16 @@ muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 678;" f muzzlePos src/Dodge/HeldUse.hs 769;" f muzzleRandPos src/Dodge/HeldUse.hs 778;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 190;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 193;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 200;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 188;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 191;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 198;" f mvGust src/Dodge/Update.hs 784;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 235;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 233;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 327;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 187;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 185;" f myIntersectLineLine src/Geometry/Intersect.hs 198;" f myIntersectSegSeg src/Geometry/Intersect.hs 176;" f myParams src/Dodge/Combine/Graph.hs 101;" f @@ -4345,24 +4345,22 @@ pistol src/Dodge/Item/Held/Stick.hs 40;" f pistolerRoom src/Dodge/Room/Room.hs 330;" f pjRemoteSetDirection src/Dodge/Projectile/Update.hs 172;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 20;" f -plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 46;" f -plDoor' src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 19;" f -plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 54;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 203;" f +plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 12;" f +plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 53;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 201;" f plNew src/Dodge/Base/NewID.hs 19;" f plNewID src/Dodge/Base/NewID.hs 7;" f plNewUpID src/Dodge/Base/NewID.hs 13;" f plNewUsing src/Dodge/Base/NewID.hs 27;" f plRRpt src/Dodge/LevelGen/PlacementHelper.hs 33;" f -plSlideDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 84;" f -placeChasm src/Dodge/Placement/PlaceSpot.hs 161;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 230;" f +placeChasm src/Dodge/Placement/PlaceSpot.hs 159;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 228;" f placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 43;" f placeSpot src/Dodge/Placement/PlaceSpot.hs 34;" f placeSpotID src/Dodge/Placement/PlaceSpot.hs 105;" f placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 90;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 68;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 177;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 175;" f plainRegex src/Dodge/DisplayInventory.hs 189;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f @@ -4432,8 +4430,8 @@ pokeWall src/Shader/Poke.hs 78;" f pokeWallsWindows src/Shader/Poke.hs 50;" f poly3 src/Picture/Base.hs 84;" f poly3Col src/Picture/Base.hs 88;" f -polyChasm src/Dodge/Room/Tutorial.hs 187;" f -polyChasmC src/Dodge/Room/Tutorial.hs 196;" f +polyChasm src/Dodge/Room/Tutorial.hs 193;" f +polyChasmC src/Dodge/Room/Tutorial.hs 202;" f polyCirc src/Shape.hs 46;" f polyCircx src/Shape.hs 51;" f polyCornerDist src/Geometry/Polygon.hs 61;" f @@ -4514,13 +4512,13 @@ pushOutFromWall src/Dodge/WallCreatureCollisions.hs 101;" f pushOutFromWalls src/Dodge/WallCreatureCollisions.hs 64;" f pushR src/DoubleStack.hs 24;" f pushScreen src/Dodge/Menu/PushPop.hs 9;" f -putAutoDoor src/Dodge/Placement/Instance/Door.hs 87;" f +putAutoDoor src/Dodge/Placement/Instance/Door.hs 83;" f putBlockN src/Dodge/Placement/Instance/Wall.hs 169;" f putBlockRect src/Dodge/Placement/Instance/Wall.hs 148;" f putBlockV src/Dodge/Placement/Instance/Wall.hs 156;" f -putDoor src/Dodge/Room/Airlock.hs 116;" f +putDoor src/Dodge/Room/Airlock.hs 113;" f putDoubleDoor src/Dodge/Placement/Instance/Door.hs 17;" f -putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 28;" f +putDoubleDoorThen src/Dodge/Placement/Instance/Door.hs 27;" f putImmediateMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 65;" f putLamp src/Dodge/Placement/Instance/LightSource.hs 222;" f putLasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f @@ -4529,7 +4527,7 @@ putLitButOnPosExtTrig src/Dodge/Placement/Instance/Button.hs 103;" f putLitButOnPosExtTrig' src/Dodge/Placement/Instance/Button.hs 106;" f putMessageTerminal src/Dodge/Placement/Instance/Terminal.hs 57;" f putShape src/Dodge/Room/Foreground.hs 134;" f -putSlideDr src/Dodge/Door/PutSlideDoor.hs 11;" f +putSlideDr src/Dodge/Door/PutSlideDoor.hs 12;" f putStrLnAppend src/Dodge/LevelGen.hs 82;" f putTerminal src/Dodge/Placement/Instance/Terminal.hs 54;" f putTerminalFull src/Dodge/Placement/Instance/Terminal.hs 22;" f @@ -4594,7 +4592,6 @@ rectVV src/Geometry/Polygon.hs 40;" f rectWH src/Geometry/Polygon.hs 19;" f rectXH src/Geometry/Polygon.hs 34;" f rectXY src/Geometry/Polygon.hs 37;" f -rectanglePairs src/Dodge/LevelGen/DoorPane.hs 5;" f red src/Color.hs 14;" f reduceLocDT src/Dodge/DoubleTree.hs 398;" f reduceLocLDT src/Dodge/DoubleTree.hs 393;" f @@ -4621,7 +4618,7 @@ removeAimPosture src/Dodge/Creature/YourControl.hs 159;" f removeAmmoFromMag src/Dodge/HeldUse.hs 907;" f removeDot src/ShortShow.hs 44;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f -removeLights src/Dodge/Room/Tutorial.hs 252;" f +removeLights src/Dodge/Room/Tutorial.hs 258;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f @@ -4800,7 +4797,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 197;" f sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f sensorSPic src/Dodge/Machine/Draw.hs 81;" f -sensorTut src/Dodge/Room/Tutorial.hs 361;" f +sensorTut src/Dodge/Room/Tutorial.hs 367;" f sensorTypeDamages src/Dodge/Machine/Update.hs 234;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 81;" f @@ -4827,7 +4824,7 @@ setOutLinks src/Dodge/RoomLink.hs 50;" f setOutLinksByType src/Dodge/RoomLink.hs 75;" f setOutLinksPD src/Dodge/RoomLink.hs 95;" f setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f -setRoomInt src/Dodge/Room/Tutorial.hs 88;" f +setRoomInt src/Dodge/Room/Tutorial.hs 94;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setShaderSource src/Shader/Compile.hs 290;" f @@ -4837,7 +4834,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f setTile src/Dodge/Layout.hs 70;" f setTiles src/Dodge/Layout.hs 67;" f setToggle src/Dodge/Prop/Update.hs 44;" f -setTreeInts src/Dodge/Room/Tutorial.hs 95;" f +setTreeInts src/Dodge/Room/Tutorial.hs 101;" f setViewDistance src/Dodge/Update/Camera.hs 236;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewport src/Dodge/Render.hs 440;" f @@ -4948,8 +4945,8 @@ slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 670;" f slapS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 604;" f slideDoorS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 688;" f slideWindow src/ListHelp.hs 80;" f -slowDoorRoom src/Dodge/Room/LongDoor.hs 158;" f -slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 175;" f +slowDoorRoom src/Dodge/Room/LongDoor.hs 156;" f +slowDoorRoomRunPast src/Dodge/Room/LongDoor.hs 173;" f smallBattery src/Dodge/Item/Ammo.hs 60;" f smallBranch src/Dodge/Tree/GenerateStructure.hs 32;" f smallChaseCrit src/Dodge/Creature/ChaseCrit.hs 14;" f @@ -5270,12 +5267,12 @@ turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 35;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f -tutDrop src/Dodge/Room/Tutorial.hs 100;" f -tutHub src/Dodge/Room/Tutorial.hs 259;" f -tutLight src/Dodge/Room/Tutorial.hs 224;" f -tutRezBox src/Dodge/Room/Tutorial.hs 372;" f +tutDrop src/Dodge/Room/Tutorial.hs 106;" f +tutHub src/Dodge/Room/Tutorial.hs 265;" f +tutLight src/Dodge/Room/Tutorial.hs 230;" f +tutRezBox src/Dodge/Room/Tutorial.hs 378;" f tutRoomTree src/Dodge/Floor.hs 21;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 396;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 402;" f tweenAngles src/Geometry/Vector.hs 190;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 84;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 31;" f @@ -5573,6 +5570,7 @@ writeSaveSlot src/Dodge/Save.hs 36;" f xCylinder src/Shape.hs 137;" f xCylinderST src/Shape.hs 134;" f xIntercepts src/Dodge/Zoning/Base.hs 66;" f +xSwitch src/Dodge/Room/Airlock.hs 32;" f xV2 src/Geometry/Vector.hs 201;" f xyV3 src/Geometry/Vector.hs 213;" f xyzV4 src/Geometry/Vector.hs 209;" f @@ -5589,7 +5587,7 @@ yourInv src/Dodge/Base/You.hs 28;" f yourRootItem src/Dodge/Base/You.hs 22;" f yourSelectedItem src/Dodge/Base/You.hs 16;" f yourStatsInfo src/Dodge/Creature/Info.hs 27;" f -zChasm src/Dodge/Room/Tutorial.hs 154;" f +zChasm src/Dodge/Room/Tutorial.hs 160;" f zConnect src/Dodge/Render/Connectors.hs 17;" f zConnectCol src/Dodge/Render/Connectors.hs 28;" f zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f