Play around with terminal messages

This commit is contained in:
2025-09-20 01:07:23 +01:00
parent b837e6a798
commit b270e18556
10 changed files with 170 additions and 126 deletions
+5 -3
View File
@@ -27,9 +27,11 @@ generateWorldFromSeed rdata i = do
generateGraphs
(roomList, bounds) <- layoutLevelFromSeed 0 i
postGenerationProcessing rdata
$! generateLevelFromRoomList roomList initialWorld{_randGen = mkStdGen i}
& gwWorld . cWorld . cwGen . cwgRoomClipping .~ bounds
& gwWorld . cWorld . cwGen . cwgSeed .~ i
$! generateLevelFromRoomList roomList $ initialWorld{_randGen = mkStdGen i}
& cWorld . cwGen . cwgRoomClipping .~ bounds
& cWorld . cwGen . cwgSeed .~ i
-- & gwWorld . cWorld . cwGen . cwgRoomClipping .~ bounds
-- & gwWorld . cWorld . cwGen . cwgSeed .~ i
postGenerationProcessing :: RenderData -> GenWorld -> IO World
postGenerationProcessing _ gw = do
+83 -40
View File
@@ -1,11 +1,5 @@
module Dodge.Room.Tutorial where
import Dodge.Room.Room
import Dodge.Room.Corridor
import Dodge.Room.Airlock
import Dodge.Room.RoadBlock
import Dodge.Item.Held.Cane
import Dodge.Item.Ammo
import Dodge.Annotation.Data
import Dodge.Cleat
--import Control.Monad
@@ -13,10 +7,15 @@ import Dodge.Cleat
--import Dodge.Cleat
import Dodge.Data.GenWorld
import Dodge.Default.Terminal
import Dodge.Item.Ammo
import Dodge.Item.Held.Cane
--import Dodge.Item.Random
import Dodge.LevelGen.PlacementHelper
--import Dodge.LightSource
import Dodge.Placement.Instance
import Dodge.PlacementSpot
import Dodge.Room.Airlock
import Dodge.Room.Corridor
import Dodge.Room.Door
import Dodge.Room.LasTurret
import Dodge.Room.Link
@@ -26,6 +25,8 @@ import Dodge.Room.Ngon
--import Dodge.Room.Link
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
@@ -42,16 +43,16 @@ import TreeHelp
tutAnoTree :: Annotation
tutAnoTree =
OnwardList
-- [ AnTree $ return $ tToBTree "teststart" $ return $ cleatOnward corridor
-- , AnTree $ tutDrop
OnwardList
-- [ AnTree $ return $ tToBTree "teststart" $ return $ cleatOnward corridor
-- , AnTree $ tutDrop
[ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
, AnTree corDoor
, AnTree $ tutRooms
, AnTree $ tutDrop
, AnTree $ return $ tToBTree "cor" $ return $ cleatOnward corridor
---- , AnTree $ pickupTut
---- , AnTree $ weaponTut
---- , AnTree $ pickupTut
---- , AnTree $ weaponTut
]
tutDrop :: State LayoutVars (MetaTree Room String)
@@ -60,31 +61,72 @@ tutDrop = do
i <- nextLayoutInt
let y = decontamRoom i
rm <- roomRectAutoLinks 40 100
return $ tToBTree "TutDrop" $ treePost [x,y,cleatOnward rm]
return $
tToBTree "TutDrop" $
treePost
[x & rmPmnts .:~ t, y, cleatOnward rm]
where
t =
putMessageTerminal
terminalColor
(defaultTerminal & tmBootLines .~ ss <> tlSetStatus (TerminalPressTo "QUIT") <> tlDoEffect TmWdWdPowerDownTerminal)
& plSpot .~ rprBoolShift isUnusedLnk
(\(p, a) -> (p + 10 *.* unitVectorAtAngle (a - pi/2), a))
ss =
[ makeTermLine "USE [F] OR CLICK AND DRAG TO DROP ITEMS"
]
tutRooms :: State LayoutVars (MetaTree Room String)
tutRooms = do
i <- nextLayoutInt
j <- nextLayoutInt
x <- shuffleLinks =<< analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i
<$> addDoorAtNthLinkToggleTerminal 1 ss j
x <-
shuffleLinks =<< analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i
<$> addDoorAtNthLinkToggleTerminal 1 ss j
<$> roomNgon 6 100
bcor <- blockedCorridor
r1 <-(r burstRifle)
r2 <-(r (drumMag & itConsumables ?~ 100))
return $ tToBTree "DoorTest" $ Node x
[treeFromPost [triggerDoorRoom i] r1
,treeFromPost [triggerDoorRoom j] r2
,bcor
]
r1 <- (r burstRifle) <&> rmPmnts .:~ t
r2 <- (r (drumMag & itConsumables ?~ 500))
return $
tToBTree "DoorTest" $
Node
x
[ treeFromPost [triggerDoorRoom i] r1
, treeFromPost [triggerDoorRoom j] r2
, bcor
]
where
ss = [makeTermLine "BE READY TO PERFORM SOME BASIC TASKS"
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 "INTERACTION TEST"
, makeTermLine "<TYPE OR SCROLL TO SELECT COMMANDS>"
, makeTermLine "<USE CLICK OR RETURN TO ENTER COMMANDS>"
]
r x = roomRectAutoLinks 100 100 <&> rmPmnts .:~ sps (PS 50 0) (PutFlIt x)
t =
putMessageTerminal
terminalColor
(defaultTerminal & tmBootLines .~ ss' <> tlSetStatus (TerminalPressTo "QUIT") <> tlDoEffect TmWdWdPowerDownTerminal)
& plSpot .~ rprBoolShift isUnusedLnk
(\(p, a) -> (p + 10 *.* unitVectorAtAngle (a - pi/2), a))
ss' =
[ makeTermLine "HOLD [CAPS] AND SCROLL\\"
, makeTermLine " OR }~ TO REARRANGE INVENTORY ITEMS"
, makeTermLine " CLICK AND DRAG/"
, makeTermLine ""
, makeTermLine "AMMO MAGS ARE TYPICALLY LOADED BENEATH WEAPONS"
, makeTermLine " .-------."
, makeTermLine " BURSTRIFLE |DRUMMAG|"
, makeTermLine " <--------------'"
, makeTermLine ""
, makeTermLine "HOLD [RMB]\\"
, makeTermLine " AND TAP }~ TO FIRE LOADED WEAPONS"
, makeTermLine " TAP [LMB]/"
]
tutRezBox :: RandomGen g => State g Room
tutRezBox = do
@@ -93,26 +135,27 @@ tutRezBox = do
roomRect 40 60 1 1
& rmPmnts
.~ [ sPS (V2 20 1) 0 $ PutLS ls
, putImmediateMessageTerminal terminalColor
(defaultTerminal & tmBootLines .~ s
<> tlSetStatus (TerminalPressTo "USE [WASD] TO MOVE") <> tlDoEffect
(TmWdWdLeaveTerminal "USE [WASD] TO MOVE"))
, Placement (PS 0 0) PutNothing Nothing $ \w _ -> Just $ putImmediateMessageTerminal
terminalColor
( defaultTerminal & tmBootLines .~ s w
<> tlSetStatus (TerminalPressTo "USE [WASD] TO MOVE")
<> tlDoEffect
(TmWdWdLeaveTerminal "USE [WASD] TO MOVE")
)
& plSpot .~ PS (V2 20 0) 0
]
& restrictInLinks (\(V2 _ h, _) -> h < 1)
& restrictOutLinks (\(V2 _ h, _) -> h > 59)
& rmName .~ "tutRezBox"
where
s = tutorialMessage1
s w = tutorialMessage1 (w ^. cWorld . cwGen . cwgSeed)
tutorialMessage1 :: [TerminalLine]
tutorialMessage1 =
[makeTermLine "SYNTHESIS SUCCESSFUL..."
,makeTermLine "WELCOME TO THE STATION!"
,makeTermLine ""
,makeTermLine "INTERACTION TEST"
] <> tlSetStatus (TerminalPressTo "USE [SPACE] TO INTERACT")
<> [makeTermLine "<USE [SPACE] TO INTERACT>"
,makeTermLine ""
,makeTermLine "MOBILITY TEST"
tutorialMessage1 :: Int -> [TerminalLine]
tutorialMessage1 i =
[ makeTermLine $ "WELCOME TO ENVIRONMENT " ++ show i
, makeTermLine ""
]
<> tlSetStatus (TerminalPressTo "USE [SPACE] TO INTERACT")
<> [ makeTermLine "USE [SPACE] TO INTERACT"
, makeTermLine ""
]
+1 -2
View File
@@ -158,8 +158,7 @@ tryPickupSelected k mpos w = do
_ -> foldl' (flip $ pickUpItem 0) w ispickup & newdisel (length (cr ^. crInv)) xs
where
newdisel j xs =
hud . diSelection
?~ Sel 0 j (IS.fromDistinctAscList [j .. j + IS.size xs -1])
hud . diSelection ?~ Sel 0 j (IS.fromDistinctAscList [j .. j + IS.size xs -1])
g i = do
NInt j <- w ^? hud . closeItems . ix i
w ^? cWorld . lWorld . items . ix j