diff --git a/src/Dodge/Layout.hs b/src/Dodge/Layout.hs index c2ff35007..ef77d34fa 100644 --- a/src/Dodge/Layout.hs +++ b/src/Dodge/Layout.hs @@ -2,6 +2,7 @@ module Dodge.Layout ( generateLevelFromRoomList, tilesFromRooms, + shuffleRoomPos, ) where import Dodge.Path.Translate diff --git a/src/Dodge/Room/Tutorial.hs b/src/Dodge/Room/Tutorial.hs index c47b3ea48..82b804838 100644 --- a/src/Dodge/Room/Tutorial.hs +++ b/src/Dodge/Room/Tutorial.hs @@ -1,5 +1,6 @@ module Dodge.Room.Tutorial where +import Dodge.Layout import Dodge.Item.Held.Utility import Control.Monad import qualified Data.IntMap.Strict as IM @@ -36,28 +37,11 @@ import RandomHelp import ShortShow import TreeHelp ---import Data.List (intersperse) - -testf = PSPos (\x _ -> f x) (\_ -> id) Nothing - where - f x = case _rpType x of - NotLink{} -> Just (PS (_rpPos x) (_rpDir x), x) - _ -> Nothing - tutAnoTree :: State LayoutVars MTRS tutAnoTree = do foldMTRS [ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox , corDoor - , tToBTree "test" . return . cleatOnward <$> (roomRectAutoLinks 100 100 - <&> rmPmnts <>~ - [sps0 $ PutChasm $ rectNSWE 70 30 30 70 - , Placement testf (PutFlIt led) Nothing Nothing (const $ const Nothing) - ] - <&> rmPos .~[RoomPos 35 0 mempty (NotLink False) mempty] - -- <&> rmPos .~[] - ) - , corDoor , tutHub , tutLight , tutDrop @@ -211,18 +195,29 @@ chasmSimpleMaze = tutLight :: State LayoutVars (MetaTree Room String) tutLight = do - x <- chasmSimpleMaze + x <- shuffleRoomPos =<< chasmSimpleMaze y <- chasmSimpleMaze return $ tToBTree "TutLight" $ treePost - [ x -- & rmPmnts <>~ [sps (PS 0 0) (PutFlIt torch)] + [ x & rmPmnts <>~ + [sps g (PutFlIt led) + ,sps g (PutFlIt battery) + ] , corridor & rmPmnts .~ mempty , removeLights y , corridor & rmPmnts .~ mempty , removeLights y , cleatOnward corridor & rmPmnts .~ mempty ] + where + g = PSPos (\x _ -> f x) (\_ -> id) Nothing + where + f x = case _rpType x of + NotLink{} | null (x ^. rpPlacementUse . at UsedPosFloor) + -> Just (PS (_rpPos x) (_rpDir x) + , x & rpPlacementUse . at UsedPosFloor ?~ ()) + _ -> Nothing removeLights :: Room -> Room removeLights = rmPmnts %~ mapMaybe f @@ -257,7 +252,7 @@ tutHub = do return $ tToBTree "DoorTest" $ Node - (x & rmPmnts .:~ sps0 (PutFlIt led)) + x [ treeFromPost [triggerDoorRoom i] r1 , treeFromPost [triggerDoorRoom j] r2 , (rmClusterStatus . csLinks . at OnwardCluster .~ Nothing) diff --git a/tags b/tags index 1f3f827c2..ad6efdff5 100644 --- a/tags +++ b/tags @@ -2585,7 +2585,7 @@ addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f addNodes src/Dodge/Path.hs 115;" f -addPane src/Dodge/Placement/PlaceSpot.hs 169;" f +addPane src/Dodge/Placement/PlaceSpot.hs 172;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPointPolygon src/Geometry/Polygon.hs 133;" f addPolyWall src/Dodge/LevelGen/StaticWalls.hs 141;" f @@ -2809,7 +2809,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 109;" f +cChasm src/Dodge/Room/Tutorial.hs 124;" f cFilledRect src/Dodge/CharacterEnums.hs 6;" f cWireRect src/Dodge/CharacterEnums.hs 10;" f calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f @@ -2843,7 +2843,7 @@ chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 70;" f chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 114;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 31;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 37;" f -chasmSimpleMaze src/Dodge/Room/Tutorial.hs 176;" f +chasmSimpleMaze src/Dodge/Room/Tutorial.hs 191;" f chasmTest src/Dodge/Creature/Update.hs 131;" f chasmWallToSurface src/Dodge/Base/Collide.hs 110;" f checkCombineSelectionExists src/Dodge/DisplayInventory.hs 100;" f @@ -3612,7 +3612,7 @@ floorItemSPic src/Dodge/Render/ShapePicture.hs 117;" 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 54;" f +foldMTRS src/Dodge/Room/Tutorial.hs 69;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f followImpulse src/Dodge/Creature/Impulse.hs 39;" f @@ -3677,8 +3677,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 311;" f -getCrsFromRooms' src/Dodge/Room/Tutorial.hs 298;" f +getCrsFromRooms src/Dodge/Room/Tutorial.hs 335;" f +getCrsFromRooms' src/Dodge/Room/Tutorial.hs 322;" f getDistortions src/Dodge/Render.hs 435;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1296;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f @@ -3693,7 +3693,7 @@ getNodePos src/Dodge/Path.hs 31;" f getPJStabiliser src/Dodge/HeldUse.hs 1283;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f -getRoomsFromInts src/Dodge/Room/Tutorial.hs 294;" f +getRoomsFromInts src/Dodge/Room/Tutorial.hs 318;" f getRootItemBounds src/Dodge/Render/HUD.hs 100;" f getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f @@ -4000,7 +4000,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 36;" f keyPic src/Dodge/Item/Draw/SPic.hs 475;" f keyholeCorridor src/Dodge/Room/Corridor.hs 39;" f knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 638;" f -lChasm src/Dodge/Room/Tutorial.hs 118;" f +lChasm src/Dodge/Room/Tutorial.hs 133;" f lConnect src/Dodge/Render/Connectors.hs 42;" f lConnectMulti src/Dodge/Render/Connectors.hs 46;" f lShape src/Dodge/Placement/Instance/LightSource.hs 90;" f @@ -4251,7 +4251,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 139;" f +midChasm src/Dodge/Room/Tutorial.hs 154;" f midPad src/Padding.hs 27;" f midPadL src/Padding.hs 33;" f midPoint src/Geometry.hs 84;" f @@ -4311,18 +4311,18 @@ multiLookupTrie src/SimpleTrie.hs 57;" f multiLookupTrieI src/SimpleTrie.hs 66;" f muout src/Dodge/RoomLink.hs 144;" f muzFlareAt src/Dodge/HeldUse.hs 674;" f -mvButton src/Dodge/Placement/PlaceSpot.hs 177;" f -mvCr src/Dodge/Placement/PlaceSpot.hs 183;" f -mvFS src/Dodge/Placement/PlaceSpot.hs 186;" f +mvButton src/Dodge/Placement/PlaceSpot.hs 180;" f +mvCr src/Dodge/Placement/PlaceSpot.hs 186;" f +mvFS src/Dodge/Placement/PlaceSpot.hs 189;" f mvGust src/Dodge/Update.hs 770;" f -mvLS src/Dodge/Placement/PlaceSpot.hs 251;" f +mvLS src/Dodge/Placement/PlaceSpot.hs 254;" f mvP src/Dodge/Wall/Move.hs 54;" f -mvPP src/Dodge/Placement/PlaceSpot.hs 180;" f +mvPP src/Dodge/Placement/PlaceSpot.hs 183;" f mvPointAlongAtSpeed src/Dodge/Base.hs 121;" f mvPointMeleeTarg src/Dodge/Creature/Boid.hs 314;" f mvPointToward src/Dodge/Base.hs 136;" f mvPointTowardAtSpeed src/Dodge/Base.hs 105;" f -mvProp src/Dodge/Placement/PlaceSpot.hs 174;" f +mvProp src/Dodge/Placement/PlaceSpot.hs 177;" f mvPs src/Dodge/Wall/Move.hs 58;" f myIntersectLineLine src/Geometry/Intersect.hs 212;" f myIntersectSegSeg src/Geometry/Intersect.hs 190;" f @@ -4463,22 +4463,22 @@ pjRemoteSetDirection src/Dodge/Projectile/Update.hs 225;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f -plMachine src/Dodge/Placement/PlaceSpot.hs 189;" f -plMachine' src/Dodge/Placement/PlaceSpot.hs 226;" f +plMachine src/Dodge/Placement/PlaceSpot.hs 192;" f +plMachine' src/Dodge/Placement/PlaceSpot.hs 229;" 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 78;" f -plTurret src/Dodge/Placement/PlaceSpot.hs 195;" f -placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 240;" f +plTurret src/Dodge/Placement/PlaceSpot.hs 198;" f +placeMachineWalls src/Dodge/Placement/PlaceSpot.hs 243;" f placePlainPSSpot src/Dodge/Placement/PlaceSpot.hs 42;" f placeSpot src/Dodge/Placement/PlaceSpot.hs 32;" f placeSpotID src/Dodge/Placement/PlaceSpot.hs 98;" f placeSpotRoomRand src/Dodge/Placement/PlaceSpot.hs 86;" f placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 63;" f -placeWallPoly src/Dodge/Placement/PlaceSpot.hs 163;" f +placeWallPoly src/Dodge/Placement/PlaceSpot.hs 166;" f plainRegex src/Dodge/DisplayInventory.hs 189;" f playIfFree src/Sound.hs 137;" f playPositionalSoundQueue src/Sound.hs 145;" f @@ -4552,8 +4552,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 160;" f -polyChasmC src/Dodge/Room/Tutorial.hs 169;" f +polyChasm src/Dodge/Room/Tutorial.hs 175;" f +polyChasmC src/Dodge/Room/Tutorial.hs 184;" f polyCirc src/Shape.hs 46;" f polyCircx src/Shape.hs 51;" f polyCornerDist src/Geometry/Polygon.hs 60;" f @@ -4744,7 +4744,7 @@ removeAimPosture src/Dodge/Creature/YourControl.hs 158;" f removeAmmoFromMag src/Dodge/HeldUse.hs 920;" f removeDot src/ShortShow.hs 40;" f removeInverseWalls src/Dodge/LevelGen/StaticWalls.hs 25;" f -removeLights src/Dodge/Room/Tutorial.hs 212;" f +removeLights src/Dodge/Room/Tutorial.hs 236;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f @@ -4928,7 +4928,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 196;" 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 320;" f +sensorTut src/Dodge/Room/Tutorial.hs 344;" f sensorTypeDamages src/Dodge/Machine/Update.hs 233;" f sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 83;" f @@ -4954,7 +4954,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 288;" f -setRoomInt src/Dodge/Room/Tutorial.hs 61;" f +setRoomInt src/Dodge/Room/Tutorial.hs 76;" 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 @@ -4964,7 +4964,7 @@ setTargetMv src/Dodge/Creature/ReaderUpdate.hs 76;" f setTile src/Dodge/Layout.hs 66;" f setTiles src/Dodge/Layout.hs 63;" f setToggle src/Dodge/Prop/Update.hs 44;" f -setTreeInts src/Dodge/Room/Tutorial.hs 68;" f +setTreeInts src/Dodge/Room/Tutorial.hs 83;" f setViewDistance src/Dodge/Update/Camera.hs 236;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 63;" f setViewport src/Dodge/Render.hs 440;" f @@ -5253,6 +5253,7 @@ testCrossWalls src/Dodge/Room/Path.hs 41;" f testEvent src/Dodge/Event/Test.hs 9;" f testInventory src/Dodge/Creature.hs 292;" f testStringInit src/Dodge/TestString.hs 33;" f +testf src/Dodge/Room/Tutorial.hs 41;" f text src/Picture/Base.hs 193;" f textGrad src/Picture/Text.hs 5;" f textInputBlurb src/Dodge/Terminal.hs 37;" f @@ -5398,13 +5399,13 @@ tryUseParent src/Dodge/Creature/State.hs 144;" f turnTo src/Dodge/Movement/Turn.hs 8;" f turret src/Dodge/Placement/Instance/Turret.hs 37;" f turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f -tutAnoTree src/Dodge/Room/Tutorial.hs 41;" f -tutDrop src/Dodge/Room/Tutorial.hs 73;" f -tutHub src/Dodge/Room/Tutorial.hs 219;" f -tutLight src/Dodge/Room/Tutorial.hs 197;" f -tutRezBox src/Dodge/Room/Tutorial.hs 331;" f +tutAnoTree src/Dodge/Room/Tutorial.hs 47;" f +tutDrop src/Dodge/Room/Tutorial.hs 88;" f +tutHub src/Dodge/Room/Tutorial.hs 243;" f +tutLight src/Dodge/Room/Tutorial.hs 212;" f +tutRezBox src/Dodge/Room/Tutorial.hs 355;" f tutRoomTree src/Dodge/Floor.hs 21;" f -tutorialMessage1 src/Dodge/Room/Tutorial.hs 355;" f +tutorialMessage1 src/Dodge/Room/Tutorial.hs 379;" f tweenAngles src/Geometry/Vector.hs 195;" f twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 81;" f twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 29;" f @@ -5715,7 +5716,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 127;" f +zChasm src/Dodge/Room/Tutorial.hs 142;" 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