Work on laser run past rooms
This commit is contained in:
@@ -26,7 +26,6 @@ module Dodge.RoomLink (
|
||||
|
||||
import Dodge.Base.CardinalPoint
|
||||
import Control.Lens
|
||||
import Data.List (partition)
|
||||
import qualified Data.Set as S
|
||||
import Dodge.Data.GenWorld
|
||||
import Geometry
|
||||
@@ -104,12 +103,11 @@ swapInOutLinks = rmLinks %~ map (rlType %~ S.map f)
|
||||
f OutLink = InLink
|
||||
f x = x
|
||||
|
||||
overLnkType :: RoomLinkType -> ([RoomLink] -> [RoomLink]) -> Room -> Room
|
||||
overLnkType lt f = rmLinks %~ g
|
||||
overLnkType :: RoomLinkType -> (RoomLink -> RoomLink) -> [RoomLink] -> [RoomLink]
|
||||
overLnkType lt f = each %~ g
|
||||
where
|
||||
g lnks =
|
||||
let (xs, ys) = partition (S.member lt . _rlType) lnks
|
||||
in f xs ++ ys
|
||||
g lnk | lt `S.member` _rlType lnk = f lnk
|
||||
| otherwise = lnk
|
||||
|
||||
rlPosDir :: RoomLink -> (Point2, Float)
|
||||
rlPosDir rl = (_rlPos rl, _rlDir rl)
|
||||
|
||||
Reference in New Issue
Block a user