Cleanup, fix damage code terminal bug
This commit is contained in:
+28
-22
@@ -1,5 +1,5 @@
|
||||
--{-# LANGUAGE TupleSections #-}
|
||||
module Dodge.Room.Warning where
|
||||
module Dodge.Room.Warning (warningRooms) where
|
||||
|
||||
import Dodge.Data.BlBl
|
||||
import Color
|
||||
@@ -21,10 +21,6 @@ import Geometry
|
||||
import LensHelp
|
||||
import RandomHelp
|
||||
|
||||
--import Data.Char
|
||||
--import Data.Tree
|
||||
--import qualified Data.Text as T
|
||||
|
||||
warningRooms :: RandomGen g => String -> Int -> State g (MetaTree Room String)
|
||||
warningRooms str n = do
|
||||
rm <- do
|
||||
@@ -34,8 +30,7 @@ warningRooms str n = do
|
||||
rToOnward "warningRooms" $ treePost [door, cenroom, triggerDoorRoom n, cleatOnward door]
|
||||
|
||||
addWarningTerminal :: String -> Int -> Room -> Room
|
||||
addWarningTerminal str outplid =
|
||||
(rmName .++~ "warningTerm-")
|
||||
addWarningTerminal str outplid = (rmName .++~ "warningTerm-")
|
||||
. (rmOutPmnt .~ [OutPlacement outplace outplid])
|
||||
where
|
||||
outplace =
|
||||
@@ -48,21 +43,32 @@ addWarningTerminal str outplid =
|
||||
termMessages trpl =
|
||||
lineOutputTerminal (makeColorTermLine red "WARNING" : makeTermPara str)
|
||||
& tmCommands .:~ TCToggles
|
||||
& tmToggles
|
||||
.~ M.fromList
|
||||
& tmToggles .~ M.fromList
|
||||
[("DOOR", TerminalToggle (fromJust $ _plMID trpl) (BlConst True))]
|
||||
|
||||
moveToSideFirstOutLink :: RoomPos -> Room -> Maybe (Point2, Float)
|
||||
moveToSideFirstOutLink rp rm = case rp ^? rpLinkStatus . rplsChildNum of
|
||||
Just 0 ->
|
||||
let rppos = _rpPos rp
|
||||
rpdir = _rpDir rp
|
||||
inpos = rppos +.+ rotateV rpdir (V2 0 (-12.5))
|
||||
rtpos = inpos +.+ rotateV rpdir (V2 30 0)
|
||||
ltpos = inpos +.+ rotateV rpdir (V2 (-30) 0)
|
||||
in if any (isJust . intersectSegPolyFirst inpos ltpos) (_rmPolys rm)
|
||||
then -- the above test may not work properly if the room polys are
|
||||
-- complicated, it should really use created walls...
|
||||
Just (rtpos, rpdir)
|
||||
else Just (ltpos, rpdir)
|
||||
_ -> Nothing
|
||||
moveToSideFirstOutLink rp rm = do
|
||||
0 <- rp ^? rpLinkStatus . rplsChildNum
|
||||
let rppos = _rpPos rp
|
||||
rpdir = _rpDir rp
|
||||
inpos = rppos +.+ rotateV rpdir (V2 0 (-12.5))
|
||||
rtpos = inpos +.+ rotateV rpdir (V2 30 0)
|
||||
ltpos = inpos +.+ rotateV rpdir (V2 (-30) 0)
|
||||
return $ if any (isJust . intersectSegPolyFirst inpos ltpos) (_rmPolys rm)
|
||||
then -- the above test may not work properly if the room polys are
|
||||
-- complicated, it should really use created walls...
|
||||
(rtpos, rpdir)
|
||||
else (ltpos, rpdir)
|
||||
--moveToSideFirstOutLink rp rm = case rp ^? rpLinkStatus . rplsChildNum of
|
||||
-- Just 0 ->
|
||||
-- let rppos = _rpPos rp
|
||||
-- rpdir = _rpDir rp
|
||||
-- inpos = rppos +.+ rotateV rpdir (V2 0 (-12.5))
|
||||
-- rtpos = inpos +.+ rotateV rpdir (V2 30 0)
|
||||
-- ltpos = inpos +.+ rotateV rpdir (V2 (-30) 0)
|
||||
-- in if any (isJust . intersectSegPolyFirst inpos ltpos) (_rmPolys rm)
|
||||
-- then -- the above test may not work properly if the room polys are
|
||||
-- -- complicated, it should really use created walls...
|
||||
-- Just (rtpos, rpdir)
|
||||
-- else Just (ltpos, rpdir)
|
||||
-- _ -> Nothing
|
||||
|
||||
Reference in New Issue
Block a user