Work on laser run past rooms

This commit is contained in:
2026-03-14 19:08:23 +00:00
parent 74e6be2f95
commit d333d48ccf
4 changed files with 68 additions and 24 deletions
+4 -6
View File
@@ -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)