Compare commits
2 Commits
5394450800
...
505ced95bb
| Author | SHA1 | Date | |
|---|---|---|---|
| 505ced95bb | |||
| 1a3d54e3b5 |
@@ -121,7 +121,7 @@ girderZ h d w x y =
|
||||
[ thinHighBar h xt yt
|
||||
, thinHighBar h xb yb
|
||||
]
|
||||
<> zipWith (thinHighBar (h - 1)) ps qs
|
||||
<> zipWith (thinHighBar (h )) ps qs
|
||||
where
|
||||
n = w *.* normalizeV (vNormal $ y -.- x)
|
||||
xb = x +.+ n
|
||||
|
||||
@@ -41,10 +41,7 @@ removeLights = rmPmnts %~ mapMaybe f
|
||||
addLightsNGon :: Room -> State LayoutVars Room
|
||||
addLightsNGon rm = do
|
||||
(i, rm') <- storeRoomID $ removeLights rm
|
||||
return $
|
||||
rm'
|
||||
& rmInPmnt
|
||||
.:~ (0, f i)
|
||||
return $ rm' & rmInPmnt .:~ (0, f i)
|
||||
where
|
||||
a = 2 * pi - (2 * pi / fromIntegral (rm ^?! rmType . rmngonSides))
|
||||
y = rm ^?! rmType . rmngonSize
|
||||
|
||||
+58
-30
@@ -2,6 +2,8 @@
|
||||
|
||||
module Dodge.Room.Tutorial where
|
||||
|
||||
import Dodge.Room.Foreground
|
||||
import Data.Foldable
|
||||
import Control.Monad
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
import qualified Data.IntSet as IS
|
||||
@@ -55,30 +57,30 @@ tutAnoTree = do
|
||||
[ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
|
||||
, corDoor
|
||||
, chasmSpitTerminal
|
||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
, corDoor
|
||||
, tToBTree "sdr" . return . cleatOnward
|
||||
<$> (shuffleLinks =<< distributerRoom BulletAmmo 100000)
|
||||
, -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
-- --, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom
|
||||
---- , tToBTree "sr" . return . cleatOnward <$> tanksRoom [] []
|
||||
-- , return $ tToBTree "door" $ return $ cleatOnward door
|
||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
-- , tToBTree "sdr" . return . cleatOnward <$>
|
||||
-- (shuffleLinks =<< tanksPipesRoom)
|
||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
return $ tToBTree "door" $ return $ cleatOnward door
|
||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
, tutHub
|
||||
, chasmSpitTerminal
|
||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
, tutLight
|
||||
, tutDrop
|
||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
---- , AnTree $ pickupTut
|
||||
---- , AnTree $ weaponTut
|
||||
--a , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a , corDoor
|
||||
--a , tToBTree "sdr" . return . cleatOnward
|
||||
--a <$> (shuffleLinks =<< distributerRoom BulletAmmo 100000)
|
||||
--a , -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a -- --, tToBTree "sdr" . return . cleatOnward <$> slowDoorRoom
|
||||
--a ---- , tToBTree "sr" . return . cleatOnward <$> tanksRoom [] []
|
||||
--a -- , return $ tToBTree "door" $ return $ cleatOnward door
|
||||
--a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a -- , tToBTree "sdr" . return . cleatOnward <$>
|
||||
--a -- (shuffleLinks =<< tanksPipesRoom)
|
||||
--a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a -- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a return $ tToBTree "door" $ return $ cleatOnward door
|
||||
--a , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a , tutHub
|
||||
--a , chasmSpitTerminal
|
||||
--a , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a , tutLight
|
||||
--a , tutDrop
|
||||
--a , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||
--a ---- , AnTree $ pickupTut
|
||||
--a ---- , AnTree $ weaponTut
|
||||
]
|
||||
|
||||
foldMTRS ::
|
||||
@@ -236,10 +238,12 @@ sqPlatformChasm b a =
|
||||
|
||||
sqSpitChasm :: Float -> Float -> ([[Point2]], [[Point2]])
|
||||
sqSpitChasm b a =
|
||||
( [[ibr, obr, otr, itr], [itr, otr, otl, itl], [itl, otl, obl, ibl]]
|
||||
, [[ibr, obr, otr, otl, obl, ibl, itl, itr]]
|
||||
( --[[ibr, obr, otr, itr], [itr, otr, otl, itl], [itl, otl, obl, ibl]]
|
||||
convexPartition clfs
|
||||
, [clfs]
|
||||
)
|
||||
where
|
||||
clfs = [ibr, obr, otr, otl, obl, ibl, itl, itr]
|
||||
obr = V2 a (-a)
|
||||
obl = V2 (-a) (-a)
|
||||
otl = V2 (-a) a
|
||||
@@ -248,6 +252,12 @@ sqSpitChasm b a =
|
||||
ibl = V2 (-b) (-a)
|
||||
itl = V2 (-b) b
|
||||
itr = V2 b b
|
||||
-- otl---------otr
|
||||
-- | itl-itr |
|
||||
-- obr-ibl ibr-obl
|
||||
|
||||
nonConvexChasm :: [Point2] -> PSType
|
||||
nonConvexChasm ps = PutChasm [] [ps]
|
||||
|
||||
midChasmSpit :: State LayoutVars Room
|
||||
midChasmSpit = do
|
||||
@@ -289,11 +299,26 @@ chasmSpitTerminal = do
|
||||
i1 <- nextLayoutInt
|
||||
y <- midChasmSpit
|
||||
shp <- takeOne [vShape, lShape, jShape, liShape]
|
||||
let l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 0 rp
|
||||
l4 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 1 rp
|
||||
l5 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> isOutLnkNum 2 rp
|
||||
let l1 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp North East
|
||||
l2 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp North West
|
||||
l3 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East North
|
||||
l4 = mntLightLnkShape shp $ resetPLUse $ rprBool $ \rp _ -> f rp East South
|
||||
ls <- takeOne [[l1,l2],[l3,l4]
|
||||
,[spanLightI (V2 120 0) (V2 120 300)]
|
||||
, [spanLightI (V2 0 128) (V2 300 128)]
|
||||
, [spanLightI (V2 300 0) (V2 0 300), sps0 $ putShape $ thinHighBar 95 0 300]
|
||||
]
|
||||
gh <- takeOne [55,75,97]
|
||||
gird <- takeOne [girderZ gh 30 10,girder gh 30 10,girderV gh 30 10]
|
||||
dec <- takeOne $ -- replicate 3 [] <>
|
||||
[--[]
|
||||
-- ,[sps0 $ putShape $ gird (V2 30 0) (V2 30 300)
|
||||
-- ,sps0 $ putShape $ gird (V2 270 0) (V2 270 300)]
|
||||
-- ,[sps0 $ putShape $ gird (V2 0 20) (V2 300 20)]
|
||||
[sps0 $ putShape $ gird (V2 0 200) (V2 300 200)]
|
||||
]
|
||||
-- let y' = y & rmPmnts <>~ [l3, l4, l5]
|
||||
let y' = y & rmPmnts <>~ [l3, l4]
|
||||
let y' = y & rmPmnts <>~ ls <> dec
|
||||
return $
|
||||
tToBTree "chasmTerm" $
|
||||
Node
|
||||
@@ -302,6 +327,9 @@ chasmSpitTerminal = do
|
||||
, treePost [triggerDoorRoom i1, critDeadEnd]
|
||||
, return $ cleatOnward $ triggerDoorRoom i1
|
||||
]
|
||||
where
|
||||
f rp a b = FromEdge a 2 `S.member` (fold $ rp ^? rpType . rplsType)
|
||||
&& OnEdge b `S.member` (fold $ rp ^? rpType . rplsType)
|
||||
|
||||
polyChasm :: Int -> Float -> State LayoutVars Room
|
||||
polyChasm n x =
|
||||
|
||||
@@ -151,6 +151,14 @@ convexHull :: [Point2] -> [Point2]
|
||||
convexHull (x : y : z : xs) = grahamScan $ orderAroundFirst $ sortOn (\(V2 a b) -> (b, a)) (x : y : z : xs)
|
||||
convexHull _ = error "Tried to create the convex hull of two or fewer points"
|
||||
|
||||
-- assumes the points go "anticlockwise" around a non-self intersecting shape
|
||||
convexPartition :: [Point2] -> [[Point2]]
|
||||
convexPartition (x:y:z:[]) = [[x,y,z]]
|
||||
convexPartition (x:y:z:xs)
|
||||
| isLHS x y z = [x,y,z] : convexPartition (x:z:xs)
|
||||
| otherwise = convexPartition (y:z:xs <> [x])
|
||||
convexPartition _ = error "unexpected shape for convexPartition"
|
||||
|
||||
{- | Creates the convex hull of a set of points.
|
||||
assumes no repetition of points: try nubbing!
|
||||
-}
|
||||
|
||||
@@ -2759,7 +2759,7 @@ bulletWeapons src/Dodge/Combine/Combinations.hs 247;" f
|
||||
burstRifle src/Dodge/Item/Held/Cane.hs 30;" f
|
||||
buttonFlip src/Dodge/Button/Event.hs 17;" f
|
||||
buzzS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 593;" f
|
||||
cChasm src/Dodge/Room/Tutorial.hs 126;" f
|
||||
cChasm src/Dodge/Room/Tutorial.hs 131;" f
|
||||
cFilledRect src/Dodge/CharacterEnums.hs 6;" f
|
||||
cWireRect src/Dodge/CharacterEnums.hs 10;" f
|
||||
calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f
|
||||
@@ -2795,8 +2795,8 @@ chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 121;" f
|
||||
chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f
|
||||
chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f
|
||||
chasmRotate src/Dodge/Creature/Update.hs 173;" f
|
||||
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 319;" f
|
||||
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 281;" f
|
||||
chasmSimpleMaze src/Dodge/Room/Tutorial.hs 338;" f
|
||||
chasmSpitTerminal src/Dodge/Room/Tutorial.hs 288;" f
|
||||
chasmTestCorpse src/Dodge/Creature/Update.hs 155;" f
|
||||
chasmTestLiving src/Dodge/Creature/Update.hs 137;" f
|
||||
chasmWallToSurface src/Dodge/Base/Collide.hs 118;" f
|
||||
@@ -3547,7 +3547,7 @@ floorTo src/Geometry/Zone.hs 12;" f
|
||||
floorWire src/Dodge/Wire.hs 13;" f
|
||||
foamSprayFadeOutS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 777;" f
|
||||
foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 823;" f
|
||||
foldMTRS src/Dodge/Room/Tutorial.hs 80;" f
|
||||
foldMTRS src/Dodge/Room/Tutorial.hs 85;" f
|
||||
foldPairs src/ListHelp.hs 37;" f
|
||||
foldrWhileArb src/ListHelp.hs 111;" f
|
||||
followImpulse src/Dodge/Creature/Impulse.hs 25;" f
|
||||
@@ -3609,8 +3609,8 @@ getCloseObj src/Dodge/Update/Input/InGame.hs 539;" f
|
||||
getCommand src/Dodge/Terminal.hs 61;" f
|
||||
getCommands src/Dodge/Terminal.hs 58;" f
|
||||
getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
|
||||
getCrsFromRooms src/Dodge/Room/Tutorial.hs 466;" f
|
||||
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 453;" f
|
||||
getCrsFromRooms src/Dodge/Room/Tutorial.hs 485;" f
|
||||
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 472;" f
|
||||
getDebugMouseOver src/Dodge/Update.hs 424;" f
|
||||
getDistortions src/Dodge/Render.hs 443;" f
|
||||
getEdgesCrossing src/Dodge/Path.hs 37;" f
|
||||
@@ -3628,7 +3628,7 @@ getPJStabiliser src/Dodge/HeldUse.hs 1268;" f
|
||||
getPretty src/AesonHelp.hs 8;" f
|
||||
getPromptTM src/Dodge/Terminal/Type.hs 3;" f
|
||||
getRoomFromID src/Dodge/Room/Modify.hs 31;" f
|
||||
getRoomsFromInts src/Dodge/Room/Tutorial.hs 449;" f
|
||||
getRoomsFromInts src/Dodge/Room/Tutorial.hs 468;" f
|
||||
getRootItemBounds src/Dodge/Render/HUD.hs 106;" f
|
||||
getRootItemInvID src/Dodge/Inventory/Location.hs 35;" f
|
||||
getSelectedCloseObj src/Dodge/SelectedClose.hs 14;" f
|
||||
@@ -3942,7 +3942,7 @@ keyCardRunPastRand src/Dodge/LockAndKey.hs 37;" f
|
||||
keyPic src/Dodge/Item/Draw/SPic.hs 438;" f
|
||||
keyholeCorridor src/Dodge/Room/Corridor.hs 45;" f
|
||||
knifeS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 741;" f
|
||||
lChasm src/Dodge/Room/Tutorial.hs 138;" f
|
||||
lChasm src/Dodge/Room/Tutorial.hs 143;" f
|
||||
lConnect src/Dodge/Render/Connectors.hs 43;" f
|
||||
lConnectCol src/Dodge/Render/Connectors.hs 46;" f
|
||||
lConnectMulti src/Dodge/Render/Connectors.hs 51;" f
|
||||
@@ -4177,9 +4177,9 @@ mglCreate src/GLHelp.hs 8;" f
|
||||
mglDelete src/GLHelp.hs 14;" f
|
||||
midBarDecoration src/Dodge/Placement/TopDecoration.hs 23;" f
|
||||
midBounds src/Dodge/Room/Foreground.hs 150;" f
|
||||
midChasm src/Dodge/Room/Tutorial.hs 167;" f
|
||||
midChasmPlatform src/Dodge/Room/Tutorial.hs 189;" f
|
||||
midChasmSpit src/Dodge/Room/Tutorial.hs 248;" f
|
||||
midChasm src/Dodge/Room/Tutorial.hs 172;" f
|
||||
midChasmPlatform src/Dodge/Room/Tutorial.hs 194;" f
|
||||
midChasmSpit src/Dodge/Room/Tutorial.hs 253;" f
|
||||
midPad src/Padding.hs 27;" f
|
||||
midPadL src/Padding.hs 33;" f
|
||||
midPoint src/Geometry.hs 83;" f
|
||||
@@ -4352,7 +4352,7 @@ pairsToSCC src/Dodge/Graph.hs 32;" f
|
||||
paletteToColor src/Color.hs 85;" f
|
||||
parseItem src/Dodge/Debug/Terminal.hs 62;" f
|
||||
parseNum src/Dodge/Debug/Terminal.hs 77;" f
|
||||
passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 531;" f
|
||||
passthroughLockKeyLists src/Dodge/Room/Tutorial.hs 550;" f
|
||||
pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f
|
||||
pathEdgeObstructed src/Dodge/Path.hs 66;" f
|
||||
pauseAndFloatCam src/Dodge/Camera.hs 10;" f
|
||||
@@ -4457,8 +4457,8 @@ pokeWall src/Shader/Poke.hs 80;" f
|
||||
pokeWallsWindows src/Shader/Poke.hs 52;" f
|
||||
poly3 src/Picture/Base.hs 76;" f
|
||||
poly3Col src/Picture/Base.hs 80;" f
|
||||
polyChasm src/Dodge/Room/Tutorial.hs 297;" f
|
||||
polyChasmC src/Dodge/Room/Tutorial.hs 309;" f
|
||||
polyChasm src/Dodge/Room/Tutorial.hs 316;" f
|
||||
polyChasmC src/Dodge/Room/Tutorial.hs 328;" f
|
||||
polyCirc src/Shape.hs 47;" f
|
||||
polyCircx src/Shape.hs 52;" f
|
||||
polyCornerDist src/Geometry/Polygon.hs 69;" f
|
||||
@@ -4835,7 +4835,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 242;" f
|
||||
sensorRoom src/Dodge/Room/SensorDoor.hs 29;" f
|
||||
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 61;" f
|
||||
sensorSPic src/Dodge/Machine/Draw.hs 99;" f
|
||||
sensorTut src/Dodge/Room/Tutorial.hs 475;" f
|
||||
sensorTut src/Dodge/Room/Tutorial.hs 494;" f
|
||||
sensorTypeDamages src/Dodge/Machine/Update.hs 288;" f
|
||||
sensorTypeDamages src/Dodge/Wall/Damage.hs 92;" f
|
||||
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
|
||||
@@ -4870,7 +4870,7 @@ setSoundVolume src/Sound.hs 159;" f
|
||||
setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f
|
||||
setTile src/Dodge/Layout.hs 70;" f
|
||||
setTiles src/Dodge/Layout.hs 67;" f
|
||||
setTreeInts src/Dodge/Room/Tutorial.hs 87;" f
|
||||
setTreeInts src/Dodge/Room/Tutorial.hs 92;" f
|
||||
setViewDistance src/Dodge/Update/Camera.hs 245;" f
|
||||
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
|
||||
setViewport src/Dodge/Render.hs 448;" f
|
||||
@@ -5050,8 +5050,8 @@ spreadGunCrit src/Dodge/Creature/SpreadGunCrit.hs 11;" f
|
||||
spreadOut src/Dodge/Creature/Boid.hs 160;" f
|
||||
sps src/Dodge/LevelGen/PlacementHelper.hs 30;" f
|
||||
sps0 src/Dodge/LevelGen/PlacementHelper.hs 42;" f
|
||||
sqPlatformChasm src/Dodge/Room/Tutorial.hs 218;" f
|
||||
sqSpitChasm src/Dodge/Room/Tutorial.hs 233;" f
|
||||
sqPlatformChasm src/Dodge/Room/Tutorial.hs 223;" f
|
||||
sqSpitChasm src/Dodge/Room/Tutorial.hs 238;" f
|
||||
square src/Geometry/Polygon.hs 56;" f
|
||||
squareDecoration src/Dodge/Placement/TopDecoration.hs 48;" f
|
||||
squashIntersectCirclePoint src/Dodge/WallCreatureCollisions.hs 116;" f
|
||||
@@ -5319,13 +5319,13 @@ tryThrust src/Dodge/Projectile/Update.hs 126;" f
|
||||
tryUseParent src/Dodge/Creature/State.hs 145;" f
|
||||
turnTo src/Dodge/Movement/Turn.hs 8;" f
|
||||
turretItemOffset src/Dodge/Item/HeldOffset.hs 22;" f
|
||||
tutAnoTree src/Dodge/Room/Tutorial.hs 52;" f
|
||||
tutDrop src/Dodge/Room/Tutorial.hs 92;" f
|
||||
tutHub src/Dodge/Room/Tutorial.hs 373;" f
|
||||
tutLight src/Dodge/Room/Tutorial.hs 341;" f
|
||||
tutRezBox src/Dodge/Room/Tutorial.hs 486;" f
|
||||
tutAnoTree src/Dodge/Room/Tutorial.hs 53;" f
|
||||
tutDrop src/Dodge/Room/Tutorial.hs 97;" f
|
||||
tutHub src/Dodge/Room/Tutorial.hs 392;" f
|
||||
tutLight src/Dodge/Room/Tutorial.hs 360;" f
|
||||
tutRezBox src/Dodge/Room/Tutorial.hs 505;" f
|
||||
tutRoomTree src/Dodge/Floor.hs 20;" f
|
||||
tutorialMessage1 src/Dodge/Room/Tutorial.hs 511;" f
|
||||
tutorialMessage1 src/Dodge/Room/Tutorial.hs 530;" f
|
||||
tweenAngles src/Geometry/Vector.hs 190;" f
|
||||
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 79;" f
|
||||
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 34;" f
|
||||
@@ -5646,7 +5646,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 151;" f
|
||||
zChasm src/Dodge/Room/Tutorial.hs 156;" f
|
||||
zConnect src/Dodge/Render/Connectors.hs 18;" f
|
||||
zConnectCol src/Dodge/Render/Connectors.hs 29;" f
|
||||
zConnectColMidX src/Dodge/Render/Connectors.hs 32;" f
|
||||
|
||||
Reference in New Issue
Block a user