Commit before tweaking placementn/room generation

This commit is contained in:
2025-09-23 09:52:52 +01:00
parent 4179115023
commit d1bb8a985b
18 changed files with 308 additions and 201 deletions
+61 -31
View File
@@ -1,5 +1,6 @@
module Dodge.Room.Tutorial where
import Dodge.Room.Room
import Dodge.Annotation.Data
import Dodge.Cleat
--import Control.Monad
@@ -26,7 +27,6 @@ import Dodge.Room.Ngon
import Dodge.Room.Procedural
import Dodge.Room.RezBox
import Dodge.Room.RoadBlock
import Dodge.Room.Room
import Dodge.Room.Warning
--import Dodge.Room.RoadBlock
import Dodge.RoomLink
@@ -49,6 +49,9 @@ tutAnoTree =
[ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, AnTree corDoor
, AnTree $ tutRooms
, AnTree corDoor
, AnTree $ tToBTree "critroom" <$> weaponBehindPillar
, AnTree corDoor
, AnTree $ tutDrop
, AnTree $ return $ tToBTree "cor" $ return $ cleatOnward corridor
---- , AnTree $ pickupTut
@@ -73,7 +76,18 @@ tutDrop = do
& plSpot .~ rprBoolShift isUnusedLnk
(\(p, a) -> (p + 10 *.* unitVectorAtAngle (a - pi/2), a))
ss =
[ makeTermLine "USE [F] OR CLICK AND DRAG TO DROP ITEMS"
[makeTermLine "--------------------------------------------"
,makeTermLine "YOU CAN ONLY CARRY A LIMITED AMOUNT OF ITEMS"
,makeTermLine "--------------------------------------------"
]
<> tlSetStatus (TerminalPressTo "CONTINUE") <>
[ makeTermLine "USE [F] TO DROP SINGLE ITEMS"
,makeTermLine "--------------------------------------------"
]
<> tlSetStatus (TerminalPressTo "CONTINUE") <>
[ makeTermLine "YOU CAN SELECT AND MOVE MULTIPLE ITEMS"
, makeTermLine " WITH THE MOUSE"
, makeTermLine "-------------------------------------------"
]
tutRooms :: State LayoutVars (MetaTree Room String)
@@ -81,7 +95,7 @@ tutRooms = do
i <- nextLayoutInt
j <- nextLayoutInt
x <-
shuffleLinks =<< analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i
shuffleLinks =<< analyserByDoorWithPrompt sensorTut (RequireEquipment (AMMOMAG DRUMMAG)) i
<$> addDoorAtNthLinkToggleTerminal 1 ss j
<$> roomNgon 6 100
bcor <- blockedCorridor
@@ -97,13 +111,15 @@ tutRooms = do
]
where
ss =
[ makeTermLine "SOME TERMINALS CAN BE INTERACTED WITH DIRECTLY"
, makeTermLine " THESE WILL DISPLAY A PROMPT SYMBOL"
, makeTermLine " _____"
, makeTermLine " | | TYPE OR SCROLL TO ENTER COMMANDS"
, makeTermLine " | > |"
, makeTermLine " | | CLICK OR USE [RETURN] TO CONFIRM"
, makeTermLine " ^^^^^"
[ makeTermLine "---------------------------------------------"
, makeTermLine "YOU CAN INTERACT WITH SOME TERMINALS DIRECTLY"
, makeTermLine " THESE WILL DISPLAY A PROMPT SYMBOL"
, makeTermLine " *****"
, makeTermLine " * * TYPE OR SCROLL TO ENTER COMMANDS"
, makeTermLine " * > *"
, makeTermLine " * * CLICK OR USE [RETURN] TO CONFIRM"
, makeTermLine " ***** "
, makeTermLine "---------------------------------------------"
, makeTermLine ""
]
r x = roomRectAutoLinks 100 100 <&> rmPmnts .:~ sps (PS 50 0) (PutFlIt x)
@@ -114,27 +130,34 @@ tutRooms = do
& plSpot .~ rprBoolShift isUnusedLnk
(\(p, a) -> (p + 10 *.* unitVectorAtAngle (a - pi/2), a))
ss' =
[ makeTermLine "HOLD [CAPS] AND SCROLL"
, makeTermLine " OR CLICK AND DRAG TO REARRANGE INVENTORY ITEMS"
, makeTermLine ""
, makeTermLine "AMMO MAGS ARE TYPICALLY LOADED BENEATH WEAPONS"
[ makeTermLine "---------------------------------------------"
, makeTermLine "HOLD [CAPS] AND SCROLL"
, makeTermLine " OR CLICK AND DRAG"
, makeTermLine " TO REARRANGE INVENTORY ITEMS"
, makeTermLine "---------------------------------------------"
]
<> tlSetStatus (TerminalPressTo "CONTINUE") <>
[ makeTermLine "AMMO MAGS ARE NORMALLY LOADED BENEATH WEAPONS"
, makeTermLine " .-------."
, makeTermLine " BURSTRIFLE |DRUMMAG|"
, makeTermLine " <------^-------^"
, makeTermLine ""
, makeTermLine "HOLD [RMB] TO AIM"
, makeTermLine "*AND* THEN TAP [LMB] TO FIRE LOADED WEAPONS"
, makeTermLine "---------------------------------------------"
]
<> tlSetStatus (TerminalPressTo "CONTINUE") <>
[ makeTermLine "HOLD [RMB] TO AIM"
, makeTermLine " THEN CLICK [LMB] TO FIRE LOADED WEAPONS"
, makeTermLine "---------------------------------------------"
]
sensorTut :: [TerminalLine]
sensorTut =
[ makeTermLine "SOME TERMINALS DETECT EXTERNAL CONDITIONS"
, makeTermLine "WHILE WORKING THESE DISPLAY SPINNING SYMBOL"
, makeTermLine ""
, makeTermLine "**CAUTION**"
, makeTermLine "THE CONDITIONS AND ANY EFFECTS MAY BE HIDDEN"
, makeTermLine ""
[ makeTermLine "--------------------------------------------"
, makeTermLine "SOME TERMINALS DETECT EXTERNAL CONDITIONS"
, makeTermLine "WHILE ACTIVE THESE DISPLAY A SPINNING SYMBOL"
, makeTermLine " | / - \\"
, makeTermLine "--------------------------------------------"
]
<> tlSetStatus (TerminalPressTo "CONTINUE")
tutRezBox :: RandomGen g => State g Room
tutRezBox = do
@@ -156,17 +179,24 @@ tutRezBox = do
& restrictOutLinks (\(V2 _ h, _) -> h > 59)
& rmName .~ "tutRezBox"
where
s w = tutorialMessage1 (w ^. cWorld . cwGen . cwgSeed)
s w = tutorialMessage1 (w ^. gwWorld . cWorld . cwGen . cwgSeed)
tutorialMessage1 :: Int -> [TerminalLine]
tutorialMessage1 i =
[ makeTermLine $ "WELCOME TO ENVIRONMENT " ++ show i
[ makeTermLine "--------------------------------------------"
, makeTermLine $ "WELCOME TO ENVIRONMENT " ++ show i
, makeTermLine ""
, makeTermLine "USE [SPACE] TO INTERACT WITH NEARBY OBJECTS"
, makeTermLine "--------------------------------------------"
]
<> tlSetStatus (TerminalPressTo "USE [SPACE] TO INTERACT WITH NEARBY OBJECTS")
<> [ makeTermLine "USE [SPACE] TO INTERACT WITH NEARBY OBJECTS"
, makeTermLine ""
, makeTermLine "USE [W]"
, makeTermLine " [A] [S]"
, makeTermLine " [D] TO MOVE"
<> tlSetStatus (TerminalPressTo "CONTINUE")
<> [ makeTermLine "USE [W]"
, makeTermLine " [A] [S]"
, makeTermLine " [D] TO MOVE"
, makeTermLine "--------------------------------------------"
]
<> tlSetStatus (TerminalPressTo "CONTINUE") <>
[ makeTermLine "AFTER EXITING THIS TERMINAL YOUR INVENTORY"
, makeTermLine " AND NEARBY OBJECTS WILL BE DISPLAYED"
, makeTermLine "--------------------------------------------"
]