Slightly rethink display of inventories and terminals
This commit is contained in:
+18
-22
@@ -1,41 +1,37 @@
|
|||||||
Seed: 7114951007332849727
|
Seed: 7114951007332849727
|
||||||
Room layout (compact):
|
Room layout (compact):
|
||||||
0,1,2,3,4,5,6
|
0,1,2,3
|
||||||
|
|
|
|
||||||
+- 7,8
|
+- 4,5
|
||||||
|
|
|
|
||||||
+- 9,10
|
+- 6,7
|
||||||
|
|
|
|
||||||
11,12,13,14
|
8,9,10,11,12
|
||||||
|
|
||||||
Layout with room names:
|
Layout with room names:
|
||||||
Corridor-0
|
tutRezBox-0
|
||||||
|
|
|
|
||||||
6gon-1
|
autoDoor-1
|
||||||
|
|
|
|
||||||
defaultRoom-2
|
Corridor-2
|
||||||
|
|
|
|
||||||
autoRect-3
|
doorToggle-6gon-3
|
||||||
|
|
|
|
||||||
autoDoor-4
|
+- triggerDoorRoom-4
|
||||||
|
|
|
||||||
Corridor-5
|
|
||||||
|
|
|
||||||
doorToggle-6gon-6
|
|
||||||
|
|
|
||||||
+- triggerDoorRoom-7
|
|
||||||
| |
|
| |
|
||||||
| autoRect-8
|
| autoRect-5
|
||||||
|
|
|
|
||||||
+- triggerDoorRoom-9
|
+- triggerDoorRoom-6
|
||||||
| |
|
| |
|
||||||
| autoRect-10
|
| autoRect-7
|
||||||
|
|
|
|
||||||
Corridor-11
|
Corridor-8
|
||||||
|
|
|
|
||||||
6gon-12
|
6gon-9
|
||||||
|
|
|
|
||||||
defaultRoom-13
|
defaultRoom-10
|
||||||
|
|
|
|
||||||
autoRect-14
|
autoRect-11
|
||||||
|
|
|
||||||
|
Corridor-12
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
Generating level with seed 7114951007332849727
|
Generating level with seed 7114951007332849727
|
||||||
|
|
||||||
After 1 attempt(s), Successful generation of level with seed 7114951007332849727
|
After 1 attempt(s), Successful generation of level with seed 7114951007332849727
|
||||||
15 rooms in total
|
13 rooms in total
|
||||||
|
|||||||
+26
-30
@@ -1,49 +1,45 @@
|
|||||||
Seed: 7114951007332849727
|
Seed: 7114951007332849727
|
||||||
0:teststart
|
0:TutStartRez
|
||||||
|
|
|
|
||||||
1:TutDrop
|
1:corDoor
|
||||||
|
|
|
|
||||||
2:corDoor
|
2:DoorTest
|
||||||
|
|
|
|
||||||
3:DoorTest
|
3:TutDrop
|
||||||
|
|
|
|
||||||
4:TutDrop
|
4:cor
|
||||||
|
|
||||||
0:0:teststart
|
0:0:TutStartRez
|
||||||
|
|
||||||
0:0:0:Corridor
|
0:0:0:tutRezBox
|
||||||
|
|
||||||
1:0:TutDrop
|
1:0:corDoor
|
||||||
|
|
||||||
1:0:0:6gon
|
1:0:0:autoDoor
|
||||||
|
|
|
|
||||||
1:0:1:defaultRoom
|
1:0:1:Corridor
|
||||||
|
|
||||||
|
2:0:DoorTest
|
||||||
|
|
||||||
|
2:0:0:doorToggle-6gon
|
||||||
|
|
|
|
||||||
1:0:2:autoRect
|
+- 2:0:1:triggerDoorRoom
|
||||||
|
|
||||||
2:0:corDoor
|
|
||||||
|
|
||||||
2:0:0:autoDoor
|
|
||||||
|
|
|
||||||
2:0:1:Corridor
|
|
||||||
|
|
||||||
3:0:DoorTest
|
|
||||||
|
|
||||||
3:0:0:doorToggle-6gon
|
|
||||||
|
|
|
||||||
+- 3:0:1:triggerDoorRoom
|
|
||||||
| |
|
| |
|
||||||
| 3:0:2:autoRect
|
| 2:0:2:autoRect
|
||||||
|
|
|
|
||||||
+- 3:0:3:triggerDoorRoom
|
+- 2:0:3:triggerDoorRoom
|
||||||
| |
|
| |
|
||||||
| 3:0:4:autoRect
|
| 2:0:4:autoRect
|
||||||
|
|
|
|
||||||
3:0:5:Corridor
|
2:0:5:Corridor
|
||||||
|
|
||||||
4:0:6gon
|
3:0:TutDrop
|
||||||
|
|
||||||
|
3:0:0:6gon
|
||||||
|
|
|
|
||||||
4:1:defaultRoom
|
3:0:1:defaultRoom
|
||||||
|
|
|
|
||||||
4:2:autoRect
|
3:0:2:autoRect
|
||||||
|
|
||||||
|
4:0:Corridor
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -54,7 +54,7 @@ data TCom
|
|||||||
data TmWdWd
|
data TmWdWd
|
||||||
= TmWdId
|
= TmWdId
|
||||||
| TmWdWdPowerDownTerminal
|
| TmWdWdPowerDownTerminal
|
||||||
| TmWdWdLeaveTerminal
|
| TmWdWdLeaveTerminal String
|
||||||
| TmWdWdDeactivateTerminal
|
| TmWdWdDeactivateTerminal
|
||||||
| TmWdWdfromWdWd WdWd
|
| TmWdWdfromWdWd WdWd
|
||||||
| TmWdWdTermSound SoundID
|
| TmWdWdTermSound SoundID
|
||||||
|
|||||||
@@ -61,13 +61,13 @@ updateCombineSections w cfig =
|
|||||||
filtcurs
|
filtcurs
|
||||||
(flip . andOrRegex $ regexCombs invitms)
|
(flip . andOrRegex $ regexCombs invitms)
|
||||||
(IM.fromDistinctAscList . zip [0 ..] $ combineList w)
|
(IM.fromDistinctAscList . zip [0 ..] $ combineList w)
|
||||||
"COMBINATIONS"
|
"POSSIBLE COMBINATIONS"
|
||||||
$ w ^? hud . subInventory . ciFilter . _Just
|
$ w ^? hud . subInventory . ciFilter . _Just
|
||||||
invitms = _unNIntMap $ fmap (\k -> w ^?! cWorld . lWorld . items . ix k) $ fold $ w ^? cWorld . lWorld . creatures . ix 0 . crInv
|
invitms = _unNIntMap $ fmap (\k -> w ^?! cWorld . lWorld . items . ix k) $ fold $ w ^? cWorld . lWorld . creatures . ix 0 . crInv
|
||||||
sclose'
|
sclose'
|
||||||
| null sclose =
|
| null sclose =
|
||||||
IM.singleton 0 $
|
IM.singleton 0 $
|
||||||
SelItem ["No possible combinations"] 1 25 False white 0 Nothing
|
SelItem ["NONE"] 1 25 False white 0 Nothing
|
||||||
| otherwise = sclose
|
| otherwise = sclose
|
||||||
|
|
||||||
regexCombs :: IM.IntMap Item -> SelectionItem CombinableItem -> String -> Bool
|
regexCombs :: IM.IntMap Item -> SelectionItem CombinableItem -> String -> Bool
|
||||||
@@ -169,24 +169,34 @@ filterSectionsPair ::
|
|||||||
String ->
|
String ->
|
||||||
Maybe String ->
|
Maybe String ->
|
||||||
(IM.IntMap (SelectionItem a), IM.IntMap (SelectionItem a))
|
(IM.IntMap (SelectionItem a), IM.IntMap (SelectionItem a))
|
||||||
filterSectionsPair infocus filtfn itms filtdescription mfilt = (filtsis, itms')
|
filterSectionsPair infocus filtfn itms s mfilt = (x, itms')
|
||||||
where
|
where
|
||||||
filtcurs = if infocus then cFilledRect else cWireRect
|
filtcurs = if infocus then cFilledRect else cWireRect
|
||||||
filtsis = fold $ do
|
x = IM.singleton 0 $ fromMaybe (SelItem [s] 1 (length s) False white 0 Nothing) $ do
|
||||||
str <- mfilt
|
str <- mfilt
|
||||||
return $
|
return $ SelItem
|
||||||
IM.singleton
|
[s ++ " FILTER/" ++ str ++ [filtcurs], numfiltitems]
|
||||||
0
|
|
||||||
$ SelItem
|
|
||||||
[filtdescription ++ " FILTER/" ++ str ++ [filtcurs], numfiltitems]
|
|
||||||
2
|
2
|
||||||
(length (filtdescription ++ " FILTER/" ++ str ++ [filtcurs]))
|
(length (s ++ " FILTER/" ++ str ++ [filtcurs]))
|
||||||
True
|
True
|
||||||
white
|
white
|
||||||
0
|
0
|
||||||
Nothing
|
Nothing
|
||||||
|
-- filtsis = fold $ do
|
||||||
|
-- str <- mfilt
|
||||||
|
-- return $
|
||||||
|
-- IM.singleton
|
||||||
|
-- 0
|
||||||
|
-- $ SelItem
|
||||||
|
-- [filtdescription ++ " FILTER/" ++ str ++ [filtcurs], numfiltitems]
|
||||||
|
-- 2
|
||||||
|
-- (length (filtdescription ++ " FILTER/" ++ str ++ [filtcurs]))
|
||||||
|
-- True
|
||||||
|
-- white
|
||||||
|
-- 0
|
||||||
|
-- Nothing
|
||||||
itms' = maybe id (IM.filter . filtfn) mfilt itms
|
itms' = maybe id (IM.filter . filtfn) mfilt itms
|
||||||
numfiltitems = " " ++ show (length itms - length itms') ++ " FILTERED"
|
numfiltitems = show (length itms - length itms') ++ " FILTERED"
|
||||||
|
|
||||||
invDimColor :: Color
|
invDimColor :: Color
|
||||||
invDimColor = greyN 0.7
|
invDimColor = greyN 0.7
|
||||||
|
|||||||
@@ -41,9 +41,7 @@ invCursorParams w = BoundaryCursor $ case w ^? hud . subInventory of
|
|||||||
_ -> [North, South, West]
|
_ -> [North, South, West]
|
||||||
|
|
||||||
secondColumnLDP :: ListDisplayParams
|
secondColumnLDP :: ListDisplayParams
|
||||||
secondColumnLDP =
|
secondColumnLDP = defaultListDisplayParams & ldpPos . spPixelOff .~ V2 subInvX (-80)
|
||||||
defaultListDisplayParams
|
|
||||||
& ldpPos . spPixelOff .~ V2 subInvX (-81)
|
|
||||||
|
|
||||||
subInvX :: Float
|
subInvX :: Float
|
||||||
subInvX = 10 * fromIntegral topInvW + 70
|
subInvX = 10 * fromIntegral topInvW + 70
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ mcProximitySensorUpdate mc sens pr w
|
|||||||
& mctermlens . tmFutureLines
|
& mctermlens . tmFutureLines
|
||||||
<>~ [makeTermLine "SENSOR SUCCESS, DEACTIVATED"]
|
<>~ [makeTermLine "SENSOR SUCCESS, DEACTIVATED"]
|
||||||
<> tlSetStatus (TerminalPressTo "QUIT")
|
<> tlSetStatus (TerminalPressTo "QUIT")
|
||||||
<> tlDoEffect TmWdWdLeaveTerminal
|
<> tlDoEffect (TmWdWdLeaveTerminal "QUIT")
|
||||||
| notog =
|
| notog =
|
||||||
w & playsound dedumS
|
w & playsound dedumS
|
||||||
& mcsenslens . proxToggle ?~ False
|
& mcsenslens . proxToggle ?~ False
|
||||||
|
|||||||
+18
-17
@@ -52,12 +52,14 @@ drawHUD :: Config -> World -> Picture
|
|||||||
drawHUD cfig w = case w ^. hud of
|
drawHUD cfig w = case w ^. hud of
|
||||||
-- DisplayCarte -> drawCarte cfig w
|
-- DisplayCarte -> drawCarte cfig w
|
||||||
HUD {_diSections = sections, _subInventory = subinv} ->
|
HUD {_diSections = sections, _subInventory = subinv} ->
|
||||||
drawInventory sections w cfig
|
drawInventory sections w cfig subinv
|
||||||
<> drawSubInventory subinv cfig w
|
<> drawSubInventory subinv cfig w
|
||||||
|
|
||||||
drawInventory :: IM.IntMap (SelectionSection ()) -> World -> Config -> Picture
|
drawInventory
|
||||||
drawInventory sss w cfig =
|
:: IM.IntMap (SelectionSection ()) -> World -> Config -> SubInventory -> Picture
|
||||||
drawSelectionSections sss invDP cfig
|
drawInventory sss w cfig = \case
|
||||||
|
DisplayTerminal {} -> mempty
|
||||||
|
_ -> drawSelectionSections sss invDP cfig
|
||||||
<> drawSSCursor sss invDP curs cfig (f $ w ^? hud . diSelection . _Just)
|
<> drawSSCursor sss invDP curs cfig (f $ w ^? hud . diSelection . _Just)
|
||||||
<> drawRootCursor w sss (f $ w ^? hud . diSelection . _Just) invDP cfig
|
<> drawRootCursor w sss (f $ w ^? hud . diSelection . _Just) invDP cfig
|
||||||
<> itemconnections
|
<> itemconnections
|
||||||
@@ -184,8 +186,8 @@ drawCombineInventory ::
|
|||||||
World ->
|
World ->
|
||||||
Picture
|
Picture
|
||||||
drawCombineInventory cfig sss w =
|
drawCombineInventory cfig sss w =
|
||||||
invHead cfig "COMBINE"
|
-- invHead cfig "COMBINE"
|
||||||
<> drawSelectionSections sss secondColumnLDP cfig
|
drawSelectionSections sss secondColumnLDP cfig
|
||||||
<> drawSSCursor sss secondColumnLDP curs cfig msel
|
<> drawSSCursor sss secondColumnLDP curs cfig msel
|
||||||
<> combineInventoryExtra sss msel cfig w
|
<> combineInventoryExtra sss msel cfig w
|
||||||
where
|
where
|
||||||
@@ -363,22 +365,21 @@ combineInventoryExtra sss msel cfig w = fold $ do
|
|||||||
|
|
||||||
drawTerminalDisplay :: LWorld -> Config -> Terminal -> Picture
|
drawTerminalDisplay :: LWorld -> Config -> Terminal -> Picture
|
||||||
drawTerminalDisplay lw cfig tm =
|
drawTerminalDisplay lw cfig tm =
|
||||||
invHead cfig ("T-" ++ show tid)
|
drawSelectionList invDP cfig f
|
||||||
<> drawSelectionList secondColumnLDP cfig f
|
-- <> invHead cfig ("TERMINAL-" ++ show tid)
|
||||||
<> color
|
-- <> color
|
||||||
(withAlpha 0.5 green) -- consider integrating termScreenColor somehow
|
-- (withAlpha 0.5 green) -- consider integrating termScreenColor somehow
|
||||||
(drawSelectionListBackground secondColumnLDP cfig tsize)
|
-- (drawSelectionListBackground secondColumnLDP cfig tsize)
|
||||||
<> color (dark $ _tmExternalColor tm) (drawTitleBackground cfig)
|
-- <> color (dark $ _tmExternalColor tm) (drawTitleBackground cfig)
|
||||||
where
|
where
|
||||||
tid = tm ^. tmID
|
tid = tm ^. tmID
|
||||||
tsize = getMaxLinesTM + 1
|
-- tsize = getMaxLinesTM + 1
|
||||||
toselitm (str, col) = SelItem [str] 1 55 True col 0 Nothing
|
toselitm (str, col) = SelItem [str] 1 55 True col 0 Nothing
|
||||||
-- not sure if the width (55) is correct here
|
-- not sure if the width (55) is correct here
|
||||||
f =
|
f = toselitm ("TERMINAL " ++ show tid,white) :
|
||||||
map toselitm . displayTermInput
|
(map (toselitm . (_1 %~ (" "<>))) . displayTermInput
|
||||||
. reverse
|
. reverse
|
||||||
-- . take getMaxLinesTM
|
$ _tmDisplayedLines tm)
|
||||||
$ _tmDisplayedLines tm
|
|
||||||
displayTermInput = case _tmStatus tm of
|
displayTermInput = case _tmStatus tm of
|
||||||
TerminalOff -> id
|
TerminalOff -> id
|
||||||
TerminalDeactivated -> id
|
TerminalDeactivated -> id
|
||||||
|
|||||||
@@ -43,12 +43,13 @@ import TreeHelp
|
|||||||
tutAnoTree :: Annotation
|
tutAnoTree :: Annotation
|
||||||
tutAnoTree =
|
tutAnoTree =
|
||||||
OnwardList
|
OnwardList
|
||||||
[ AnTree $ return $ tToBTree "teststart" $ return $ cleatOnward corridor
|
-- [ AnTree $ return $ tToBTree "teststart" $ return $ cleatOnward corridor
|
||||||
, AnTree $ tutDrop
|
-- , AnTree $ tutDrop
|
||||||
-- [ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
|
[ AnTree $ tToBTree "TutStartRez" . return . cleatOnward <$> tutRezBox
|
||||||
, AnTree corDoor
|
, AnTree corDoor
|
||||||
, AnTree $ tutRooms
|
, AnTree $ tutRooms
|
||||||
, AnTree $ tutDrop
|
, AnTree $ tutDrop
|
||||||
|
, AnTree $ return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||||
---- , AnTree $ pickupTut
|
---- , AnTree $ pickupTut
|
||||||
---- , AnTree $ weaponTut
|
---- , AnTree $ weaponTut
|
||||||
]
|
]
|
||||||
@@ -66,7 +67,7 @@ tutRooms = do
|
|||||||
i <- nextLayoutInt
|
i <- nextLayoutInt
|
||||||
j <- nextLayoutInt
|
j <- nextLayoutInt
|
||||||
x <- shuffleLinks =<< analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i
|
x <- shuffleLinks =<< analyserByDoor (RequireEquipment (AMMOMAG DRUMMAG)) i
|
||||||
<$> addDoorAtNthLinkToggleTerminal 1 (makeTermPara s) j
|
<$> addDoorAtNthLinkToggleTerminal 1 ss j
|
||||||
<$> roomNgon 6 100
|
<$> roomNgon 6 100
|
||||||
bcor <- blockedCorridor
|
bcor <- blockedCorridor
|
||||||
r1 <-(r burstRifle)
|
r1 <-(r burstRifle)
|
||||||
@@ -77,7 +78,12 @@ tutRooms = do
|
|||||||
,bcor
|
,bcor
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
s = "INTERACTION TEST: USE KEYBOARD OR SCROLL TO ENTER COMMANDS."
|
ss = [makeTermLine "BE READY TO PERFORM SOME BASIC TASKS"
|
||||||
|
, 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)
|
r x = roomRectAutoLinks 100 100 <&> rmPmnts .:~ sps (PS 50 0) (PutFlIt x)
|
||||||
|
|
||||||
tutRezBox :: RandomGen g => State g Room
|
tutRezBox :: RandomGen g => State g Room
|
||||||
@@ -87,7 +93,10 @@ tutRezBox = do
|
|||||||
roomRect 40 60 1 1
|
roomRect 40 60 1 1
|
||||||
& rmPmnts
|
& rmPmnts
|
||||||
.~ [ sPS (V2 20 1) 0 $ PutLS ls
|
.~ [ sPS (V2 20 1) 0 $ PutLS ls
|
||||||
, putImmediateMessageTerminal terminalColor (defaultTerminal & tmBootLines .~ makeTermPara s <> tlSetStatus (TerminalPressTo "QUIT") <> tlDoEffect TmWdWdDeactivateTerminal)
|
, putImmediateMessageTerminal terminalColor
|
||||||
|
(defaultTerminal & tmBootLines .~ s
|
||||||
|
<> tlSetStatus (TerminalPressTo "USE [WASD] TO MOVE") <> tlDoEffect
|
||||||
|
(TmWdWdLeaveTerminal "USE [WASD] TO MOVE"))
|
||||||
& plSpot .~ PS (V2 20 0) 0
|
& plSpot .~ PS (V2 20 0) 0
|
||||||
]
|
]
|
||||||
& restrictInLinks (\(V2 _ h, _) -> h < 1)
|
& restrictInLinks (\(V2 _ h, _) -> h < 1)
|
||||||
@@ -96,5 +105,14 @@ tutRezBox = do
|
|||||||
where
|
where
|
||||||
s = tutorialMessage1
|
s = tutorialMessage1
|
||||||
|
|
||||||
tutorialMessage1 :: String
|
tutorialMessage1 :: [TerminalLine]
|
||||||
tutorialMessage1 = "SYNTHESIS SUCCESSFUL. MOBILITY TEST INITIATED [WASD]. INTERACTION TEST IN QUEUE [SPACE]."
|
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"
|
||||||
|
]
|
||||||
|
|||||||
@@ -36,14 +36,12 @@ textTerminal = defaultTerminal{_tmBootLines = textInputBlurb []}
|
|||||||
|
|
||||||
textInputBlurb :: [TerminalLine] -> [TerminalLine]
|
textInputBlurb :: [TerminalLine] -> [TerminalLine]
|
||||||
textInputBlurb tls =
|
textInputBlurb tls =
|
||||||
[ termSoundLine computerBeepingS
|
[termSoundLine computerBeepingS]
|
||||||
, TLine 0 [TerminalLineConst "LOADING TEXT INTERFACE..." termTextColor] TmWdId
|
|
||||||
]
|
|
||||||
++ tls
|
++ tls
|
||||||
++ [TLine 10 [TerminalLineConst "READY FOR INPUT" termTextColor] (TmTmSetStatus (TerminalTextInput ""))]
|
++ tlSetStatus (TerminalTextInput "")
|
||||||
|
|
||||||
termSoundLine :: SoundID -> TerminalLine
|
termSoundLine :: SoundID -> TerminalLine
|
||||||
termSoundLine sid = TLine 0 [] (TmWdWdTermSound sid)
|
termSoundLine = TLine 0 [] . TmWdWdTermSound
|
||||||
|
|
||||||
termTextColor :: Color
|
termTextColor :: Color
|
||||||
termTextColor = greyN 0.9
|
termTextColor = greyN 0.9
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ doTmWdWd tmwdwd = case tmwdwd of
|
|||||||
TmWdId -> const id
|
TmWdId -> const id
|
||||||
TmWdWdPowerDownTerminal -> resetTerminal TerminalOff
|
TmWdWdPowerDownTerminal -> resetTerminal TerminalOff
|
||||||
TmWdWdDeactivateTerminal -> resetTerminal TerminalDeactivated
|
TmWdWdDeactivateTerminal -> resetTerminal TerminalDeactivated
|
||||||
TmWdWdLeaveTerminal -> leaveResetQuitTerminal
|
TmWdWdLeaveTerminal s -> leaveResetQuitTerminal s
|
||||||
TmWdWdTermSound sid -> \tm w -> fromMaybe w $ do
|
TmWdWdTermSound sid -> \tm w -> fromMaybe w $ do
|
||||||
tpos <- w ^? cWorld . lWorld . buttons . ix (_tmButtonID tm) . btPos
|
tpos <- w ^? cWorld . lWorld . buttons . ix (_tmButtonID tm) . btPos
|
||||||
return $ soundStart TerminalSound tpos sid Nothing w
|
return $ soundStart TerminalSound tpos sid Nothing w
|
||||||
@@ -107,10 +107,10 @@ resetTerminal x tm =
|
|||||||
. (cWorld . lWorld . terminals . ix (_tmID tm) . tmDisplayedLines .~ [])
|
. (cWorld . lWorld . terminals . ix (_tmID tm) . tmDisplayedLines .~ [])
|
||||||
. exitTerminalSubInv
|
. exitTerminalSubInv
|
||||||
|
|
||||||
leaveResetQuitTerminal :: Terminal -> World -> World
|
leaveResetQuitTerminal :: String -> Terminal -> World -> World
|
||||||
leaveResetQuitTerminal tm =
|
leaveResetQuitTerminal s tm =
|
||||||
(cWorld . lWorld . terminals . ix (_tmID tm) . tmFutureLines
|
(cWorld . lWorld . terminals . ix (_tmID tm) . tmFutureLines
|
||||||
.~ (tlSetStatus (TerminalPressTo "QUIT")) <> tlDoEffect TmWdWdLeaveTerminal)
|
.~ (tlSetStatus (TerminalPressTo s)) <> tlDoEffect (TmWdWdLeaveTerminal s))
|
||||||
. exitTerminalSubInv
|
. exitTerminalSubInv
|
||||||
|
|
||||||
exitTerminalSubInv :: World -> World
|
exitTerminalSubInv :: World -> World
|
||||||
|
|||||||
@@ -2559,7 +2559,7 @@ aRadarPulse src/Dodge/RadarSweep.hs 19;" f
|
|||||||
aShape src/Dodge/Placement/Instance/LightSource.hs 107;" f
|
aShape src/Dodge/Placement/Instance/LightSource.hs 107;" f
|
||||||
aSound src/Dodge/SoundLogic.hs 74;" f
|
aSound src/Dodge/SoundLogic.hs 74;" f
|
||||||
aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f
|
aTreeStrut src/Dodge/Tree/GenerateStructure.hs 42;" f
|
||||||
accessTerminal src/Dodge/WorldEffect.hs 53;" f
|
accessTerminal src/Dodge/WorldEffect.hs 54;" f
|
||||||
activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 62;" f
|
activateDetonator src/Dodge/Creature/Impulse/UseItem.hs 62;" f
|
||||||
activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f
|
activeTargetCursorPic src/Dodge/Targeting/Draw.hs 31;" f
|
||||||
addArmour src/Dodge/Creature.hs 84;" f
|
addArmour src/Dodge/Creature.hs 84;" f
|
||||||
@@ -2607,13 +2607,13 @@ aimDelaySweep src/Dodge/Render/Picture.hs 288;" f
|
|||||||
aimStanceInfo src/Dodge/Item/Info.hs 244;" f
|
aimStanceInfo src/Dodge/Item/Info.hs 244;" f
|
||||||
aimTurn src/Dodge/Creature/YourControl.hs 180;" f
|
aimTurn src/Dodge/Creature/YourControl.hs 180;" f
|
||||||
airlock src/Dodge/Room/Airlock.hs 23;" f
|
airlock src/Dodge/Room/Airlock.hs 23;" f
|
||||||
airlock0 src/Dodge/Room/Airlock.hs 59;" f
|
airlock0 src/Dodge/Room/Airlock.hs 65;" f
|
||||||
airlock90 src/Dodge/Room/Airlock.hs 157;" f
|
airlock90 src/Dodge/Room/Airlock.hs 163;" f
|
||||||
airlockCrystal src/Dodge/Room/Airlock.hs 196;" f
|
airlockCrystal src/Dodge/Room/Airlock.hs 202;" f
|
||||||
airlockDoor src/Dodge/Room/Airlock.hs 85;" f
|
airlockDoor src/Dodge/Room/Airlock.hs 91;" f
|
||||||
airlockDoubleDoor src/Dodge/Room/Airlock.hs 88;" f
|
airlockDoubleDoor src/Dodge/Room/Airlock.hs 94;" f
|
||||||
airlockSimple src/Dodge/Room/Airlock.hs 100;" f
|
airlockSimple src/Dodge/Room/Airlock.hs 106;" f
|
||||||
airlockZ src/Dodge/Room/Airlock.hs 125;" f
|
airlockZ src/Dodge/Room/Airlock.hs 131;" f
|
||||||
allVisibleWalls src/Dodge/Base/Collide.hs 215;" f
|
allVisibleWalls src/Dodge/Base/Collide.hs 215;" f
|
||||||
alongSegBy src/Geometry.hs 41;" f
|
alongSegBy src/Geometry.hs 41;" f
|
||||||
alteRifle src/Dodge/Item/Held/Cane.hs 22;" f
|
alteRifle src/Dodge/Item/Held/Cane.hs 22;" f
|
||||||
@@ -3127,7 +3127,7 @@ debugSelectCreatureMessage src/Dodge/Debug.hs 79;" f
|
|||||||
decodeSensorType src/Dodge/Terminal.hs 74;" f
|
decodeSensorType src/Dodge/Terminal.hs 74;" f
|
||||||
decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f
|
decomposeSelfTree src/Dodge/Tree/Compose.hs 60;" f
|
||||||
decomposeTree src/Dodge/Tree/Compose.hs 57;" f
|
decomposeTree src/Dodge/Tree/Compose.hs 57;" f
|
||||||
decontamRoom src/Dodge/Room/Airlock.hs 29;" f
|
decontamRoom src/Dodge/Room/Airlock.hs 28;" f
|
||||||
decoratedBlock src/Dodge/Placement/Instance/Block.hs 10;" f
|
decoratedBlock src/Dodge/Placement/Instance/Block.hs 10;" f
|
||||||
decorationToShape src/Dodge/Placement/TopDecoration.hs 9;" f
|
decorationToShape src/Dodge/Placement/TopDecoration.hs 9;" f
|
||||||
decreaseAwareness src/Dodge/Creature/Perception.hs 119;" f
|
decreaseAwareness src/Dodge/Creature/Perception.hs 119;" f
|
||||||
@@ -3258,8 +3258,8 @@ doCrWdAc src/Dodge/CreatureEffect.hs 77;" f
|
|||||||
doCrWdImp src/Dodge/CreatureEffect.hs 16;" f
|
doCrWdImp src/Dodge/CreatureEffect.hs 16;" f
|
||||||
doCrWdWd src/Dodge/CreatureEffect.hs 20;" f
|
doCrWdWd src/Dodge/CreatureEffect.hs 20;" f
|
||||||
doDamage src/Dodge/Creature/State.hs 42;" f
|
doDamage src/Dodge/Creature/State.hs 42;" f
|
||||||
doDeathToggle src/Dodge/WorldEffect.hs 85;" f
|
doDeathToggle src/Dodge/WorldEffect.hs 86;" f
|
||||||
doDeathTriggers src/Dodge/WorldEffect.hs 78;" f
|
doDeathTriggers src/Dodge/WorldEffect.hs 79;" f
|
||||||
doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f
|
doDebugTest src/Dodge/Update/Input/DebugTest.hs 22;" f
|
||||||
doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 37;" f
|
doDebugTest2 src/Dodge/Update/Input/DebugTest.hs 37;" f
|
||||||
doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 62;" f
|
doDebugTestF10 src/Dodge/Update/Input/DebugTest.hs 62;" f
|
||||||
@@ -3310,13 +3310,13 @@ doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f
|
|||||||
doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
|
doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
|
||||||
doThrust src/Dodge/Projectile/Update.hs 182;" f
|
doThrust src/Dodge/Projectile/Update.hs 182;" f
|
||||||
doTimeScroll src/Dodge/Update.hs 208;" f
|
doTimeScroll src/Dodge/Update.hs 208;" f
|
||||||
doTmWdWd src/Dodge/WorldEffect.hs 88;" f
|
doTmWdWd src/Dodge/WorldEffect.hs 89;" f
|
||||||
doWallRotate src/Dodge/Update/Camera.hs 220;" f
|
doWallRotate src/Dodge/Update/Camera.hs 220;" f
|
||||||
doWdBl src/Dodge/WorldBool.hs 10;" f
|
doWdBl src/Dodge/WorldBool.hs 10;" f
|
||||||
doWdCrBl src/Dodge/CreatureEffect.hs 37;" f
|
doWdCrBl src/Dodge/CreatureEffect.hs 37;" f
|
||||||
doWdCrCr src/Dodge/CreatureEffect.hs 12;" f
|
doWdCrCr src/Dodge/CreatureEffect.hs 12;" f
|
||||||
doWdP2f src/Dodge/WdP2f.hs 12;" f
|
doWdP2f src/Dodge/WdP2f.hs 12;" f
|
||||||
doWdWd src/Dodge/WorldEffect.hs 27;" f
|
doWdWd src/Dodge/WorldEffect.hs 28;" f
|
||||||
doWorldEvents src/Dodge/Update.hs 430;" f
|
doWorldEvents src/Dodge/Update.hs 430;" f
|
||||||
doWorldPos src/Dodge/WorldPos.hs 7;" f
|
doWorldPos src/Dodge/WorldPos.hs 7;" f
|
||||||
door src/Dodge/Room/Door.hs 13;" f
|
door src/Dodge/Room/Door.hs 13;" f
|
||||||
@@ -3540,7 +3540,7 @@ errorNormalizeV src/Geometry.hs 55;" f
|
|||||||
errorPointInPolygon src/Geometry.hs 47;" f
|
errorPointInPolygon src/Geometry.hs 47;" f
|
||||||
evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 133;" f
|
evaluateRandPS src/Dodge/Placement/PlaceSpot.hs 133;" f
|
||||||
evenOddSplit src/Dodge/Base.hs 160;" f
|
evenOddSplit src/Dodge/Base.hs 160;" f
|
||||||
exitTerminalSubInv src/Dodge/WorldEffect.hs 109;" f
|
exitTerminalSubInv src/Dodge/WorldEffect.hs 116;" f
|
||||||
expandLine src/Dodge/Picture.hs 30;" f
|
expandLine src/Dodge/Picture.hs 30;" f
|
||||||
expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f
|
expandPolyBy src/Dodge/LevelGen/StaticWalls.hs 91;" f
|
||||||
expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
|
expandPolyByFixed src/Dodge/LevelGen/StaticWalls.hs 97;" f
|
||||||
@@ -3907,7 +3907,7 @@ isAmmoIntLink src/Dodge/HeldUse.hs 713;" f
|
|||||||
isAnimate src/Dodge/Creature/Test.hs 130;" f
|
isAnimate src/Dodge/Creature/Test.hs 130;" f
|
||||||
isCognizant src/Dodge/Creature/Perception.hs 106;" f
|
isCognizant src/Dodge/Creature/Perception.hs 106;" f
|
||||||
isConnected src/Dodge/Inventory/Swap.hs 76;" f
|
isConnected src/Dodge/Inventory/Swap.hs 76;" f
|
||||||
isElectrical src/Dodge/Machine/Update.hs 83;" f
|
isElectrical src/Dodge/Machine/Update.hs 81;" f
|
||||||
isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 199;" f
|
isGroupSelectableSection src/Dodge/Update/Input/InGame.hs 199;" f
|
||||||
isInLnk src/Dodge/PlacementSpot.hs 168;" f
|
isInLnk src/Dodge/PlacementSpot.hs 168;" f
|
||||||
isJust' src/MaybeHelp.hs 29;" f
|
isJust' src/MaybeHelp.hs 29;" f
|
||||||
@@ -4028,7 +4028,7 @@ ldtToDT src/Dodge/DoubleTree.hs 16;" f
|
|||||||
ldtToIM src/Dodge/DoubleTree.hs 219;" f
|
ldtToIM src/Dodge/DoubleTree.hs 219;" f
|
||||||
ldtToIndentList src/Dodge/DoubleTree.hs 222;" f
|
ldtToIndentList src/Dodge/DoubleTree.hs 222;" f
|
||||||
ldtToLoc src/Dodge/DoubleTree.hs 268;" f
|
ldtToLoc src/Dodge/DoubleTree.hs 268;" f
|
||||||
leaveTerminal src/Dodge/WorldEffect.hs 114;" f
|
leaveResetQuitTerminal src/Dodge/WorldEffect.hs 110;" f
|
||||||
left src/DoubleStack.hs 16;" f
|
left src/DoubleStack.hs 16;" f
|
||||||
leftChildList src/Dodge/Item/Grammar.hs 185;" f
|
leftChildList src/Dodge/Item/Grammar.hs 185;" f
|
||||||
leftHandPQ src/Dodge/Creature/HandPos.hs 60;" f
|
leftHandPQ src/Dodge/Creature/HandPos.hs 60;" f
|
||||||
@@ -4201,24 +4201,24 @@ maybeOpenConsole src/Dodge/Update.hs 131;" f
|
|||||||
maybeReadFile src/Dodge/LoadSeed.hs 10;" f
|
maybeReadFile src/Dodge/LoadSeed.hs 10;" f
|
||||||
maybeTakeOne src/RandomHelp.hs 116;" f
|
maybeTakeOne src/RandomHelp.hs 116;" f
|
||||||
maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f
|
maybeWarmupStatus src/Dodge/Item/Display.hs 45;" f
|
||||||
mcApplyDamage src/Dodge/Machine/Update.hs 128;" f
|
mcApplyDamage src/Dodge/Machine/Update.hs 126;" f
|
||||||
mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 97;" f
|
mcDamSensorTriggerUpdate src/Dodge/Machine/Update.hs 95;" f
|
||||||
mcDamSensorUpdate src/Dodge/Machine/Update.hs 135;" f
|
mcDamSensorUpdate src/Dodge/Machine/Update.hs 133;" f
|
||||||
mcKillBut src/Dodge/Machine/Destroy.hs 37;" f
|
mcKillBut src/Dodge/Machine/Destroy.hs 37;" f
|
||||||
mcKillTerm src/Dodge/Machine/Destroy.hs 29;" f
|
mcKillTerm src/Dodge/Machine/Destroy.hs 29;" f
|
||||||
mcNoItemsTest src/Dodge/Machine/Update.hs 143;" f
|
mcNoItemsTest src/Dodge/Machine/Update.hs 141;" f
|
||||||
mcPlaySound src/Dodge/Machine/Update.hs 112;" f
|
mcPlaySound src/Dodge/Machine/Update.hs 110;" f
|
||||||
mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 103;" f
|
mcProxSensorTriggerUpdate src/Dodge/Machine/Update.hs 101;" f
|
||||||
mcProxSensorUpdate src/Dodge/Machine/Update.hs 138;" f
|
mcProxSensorUpdate src/Dodge/Machine/Update.hs 136;" f
|
||||||
mcProxTest src/Dodge/Machine/Update.hs 199;" f
|
mcProxTest src/Dodge/Machine/Update.hs 199;" f
|
||||||
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 168;" f
|
mcProximitySensorUpdate src/Dodge/Machine/Update.hs 168;" f
|
||||||
mcSPic src/Dodge/Render/ShapePicture.hs 134;" f
|
mcSPic src/Dodge/Render/ShapePicture.hs 134;" f
|
||||||
mcShootAuto src/Dodge/HeldUse.hs 1195;" f
|
mcShootAuto src/Dodge/HeldUse.hs 1195;" f
|
||||||
mcShootLaser src/Dodge/HeldUse.hs 1188;" f
|
mcShootLaser src/Dodge/HeldUse.hs 1188;" f
|
||||||
mcTriggerVal src/Dodge/Machine/Update.hs 109;" f
|
mcTriggerVal src/Dodge/Machine/Update.hs 107;" f
|
||||||
mcTypeUpdate src/Dodge/Machine/Update.hs 29;" f
|
mcTypeUpdate src/Dodge/Machine/Update.hs 29;" f
|
||||||
mcUseHeld src/Dodge/HeldUse.hs 1107;" f
|
mcUseHeld src/Dodge/HeldUse.hs 1107;" f
|
||||||
mcUseItem src/Dodge/Machine/Update.hs 88;" f
|
mcUseItem src/Dodge/Machine/Update.hs 86;" f
|
||||||
megaBattery src/Dodge/Item/Ammo.hs 55;" f
|
megaBattery src/Dodge/Item/Ammo.hs 55;" f
|
||||||
megaShellMag src/Dodge/Item/Ammo.hs 44;" f
|
megaShellMag src/Dodge/Item/Ammo.hs 44;" f
|
||||||
megaTinMag src/Dodge/Item/Ammo.hs 23;" f
|
megaTinMag src/Dodge/Item/Ammo.hs 23;" f
|
||||||
@@ -4753,7 +4753,7 @@ replacePutID src/Dodge/Placement/Instance/Wall.hs 102;" f
|
|||||||
resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 47;" f
|
resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 47;" f
|
||||||
resetPLUse src/Dodge/PlacementSpot.hs 99;" f
|
resetPLUse src/Dodge/PlacementSpot.hs 99;" f
|
||||||
resetStride src/Dodge/Creature/State/WalkCycle.hs 24;" f
|
resetStride src/Dodge/Creature/State/WalkCycle.hs 24;" f
|
||||||
resetTerminal src/Dodge/WorldEffect.hs 103;" f
|
resetTerminal src/Dodge/WorldEffect.hs 104;" f
|
||||||
resizeFBOTO src/Framebuffer/Update.hs 203;" f
|
resizeFBOTO src/Framebuffer/Update.hs 203;" f
|
||||||
resizeFBOTO3 src/Framebuffer/Update.hs 175;" f
|
resizeFBOTO3 src/Framebuffer/Update.hs 175;" f
|
||||||
resizeRBO src/Framebuffer/Update.hs 87;" f
|
resizeRBO src/Framebuffer/Update.hs 87;" f
|
||||||
@@ -4922,7 +4922,7 @@ sensorReqToString src/Dodge/Machine/Update.hs 194;" f
|
|||||||
sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f
|
sensorRoom src/Dodge/Room/SensorDoor.hs 26;" f
|
||||||
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f
|
sensorRoomRunPast src/Dodge/Room/SensorDoor.hs 46;" f
|
||||||
sensorSPic src/Dodge/Machine/Draw.hs 81;" f
|
sensorSPic src/Dodge/Machine/Draw.hs 81;" f
|
||||||
sensorTypeDamages src/Dodge/Machine/Update.hs 227;" f
|
sensorTypeDamages src/Dodge/Machine/Update.hs 228;" f
|
||||||
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
|
sentinelAI src/Dodge/Creature/SentinelAI.hs 20;" f
|
||||||
sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 83;" f
|
sentinelExtraWatchUpdate src/Dodge/Creature/SentinelAI.hs 83;" f
|
||||||
sentinelFireType src/Dodge/Creature/SentinelAI.hs 50;" f
|
sentinelFireType src/Dodge/Creature/SentinelAI.hs 50;" f
|
||||||
@@ -5321,7 +5321,7 @@ topTestPart src/Dodge/TestString.hs 41;" f
|
|||||||
torch src/Dodge/Item/Held/Utility.hs 23;" f
|
torch src/Dodge/Item/Held/Utility.hs 23;" f
|
||||||
torchShape src/Dodge/Item/Draw/SPic.hs 290;" f
|
torchShape src/Dodge/Item/Draw/SPic.hs 290;" f
|
||||||
torqueAmount src/Dodge/HeldUse.hs 573;" f
|
torqueAmount src/Dodge/HeldUse.hs 573;" f
|
||||||
torqueCr src/Dodge/WorldEffect.hs 71;" f
|
torqueCr src/Dodge/WorldEffect.hs 72;" f
|
||||||
torso src/Dodge/Creature/Picture.hs 102;" f
|
torso src/Dodge/Creature/Picture.hs 102;" f
|
||||||
tractCr src/Dodge/TractorBeam/Update.hs 27;" f
|
tractCr src/Dodge/TractorBeam/Update.hs 27;" f
|
||||||
tractFlIt src/Dodge/TractorBeam/Update.hs 22;" f
|
tractFlIt src/Dodge/TractorBeam/Update.hs 22;" f
|
||||||
@@ -5392,11 +5392,11 @@ turnTo src/Dodge/Movement/Turn.hs 8;" f
|
|||||||
turret src/Dodge/Placement/Instance/Turret.hs 37;" f
|
turret src/Dodge/Placement/Instance/Turret.hs 37;" f
|
||||||
turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f
|
turretItemOffset src/Dodge/Item/HeldOffset.hs 21;" f
|
||||||
tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f
|
tutAnoTree src/Dodge/Room/Tutorial.hs 43;" f
|
||||||
tutDrop src/Dodge/Room/Tutorial.hs 56;" f
|
tutDrop src/Dodge/Room/Tutorial.hs 57;" f
|
||||||
tutRezBox src/Dodge/Room/Tutorial.hs 82;" f
|
tutRezBox src/Dodge/Room/Tutorial.hs 84;" f
|
||||||
tutRoomTree src/Dodge/Floor.hs 26;" f
|
tutRoomTree src/Dodge/Floor.hs 26;" f
|
||||||
tutRooms src/Dodge/Room/Tutorial.hs 63;" f
|
tutRooms src/Dodge/Room/Tutorial.hs 65;" f
|
||||||
tutorialMessage1 src/Dodge/Room/Tutorial.hs 98;" f
|
tutorialMessage1 src/Dodge/Room/Tutorial.hs 100;" f
|
||||||
tweenAngles src/Geometry/Vector.hs 195;" f
|
tweenAngles src/Geometry/Vector.hs 195;" f
|
||||||
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f
|
twinSlowDoorChasers src/Dodge/Room/LongDoor.hs 80;" f
|
||||||
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f
|
twinSlowDoorRoom src/Dodge/Room/LongDoor.hs 28;" f
|
||||||
@@ -5531,7 +5531,7 @@ updateTeslaArc src/Dodge/Update.hs 587;" f
|
|||||||
updateTeslaArcs src/Dodge/Update.hs 584;" f
|
updateTeslaArcs src/Dodge/Update.hs 584;" f
|
||||||
updateTractorBeam src/Dodge/TractorBeam/Update.hs 8;" f
|
updateTractorBeam src/Dodge/TractorBeam/Update.hs 8;" f
|
||||||
updateTractorBeams src/Dodge/Update.hs 655;" f
|
updateTractorBeams src/Dodge/Update.hs 655;" f
|
||||||
updateTurret src/Dodge/Machine/Update.hs 53;" f
|
updateTurret src/Dodge/Machine/Update.hs 46;" f
|
||||||
updateUniverse src/Dodge/Update.hs 79;" f
|
updateUniverse src/Dodge/Update.hs 79;" f
|
||||||
updateUniverseFirst src/Dodge/Update.hs 90;" f
|
updateUniverseFirst src/Dodge/Update.hs 90;" f
|
||||||
updateUniverseLast src/Dodge/Update.hs 141;" f
|
updateUniverseLast src/Dodge/Update.hs 141;" f
|
||||||
|
|||||||
Reference in New Issue
Block a user