Allow arbitrary changes to a room when using a link slot
This commit is contained in:
+9
-6
@@ -7,11 +7,10 @@ import Dodge.LevelGen
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.LevelGen.StaticWalls
|
||||
import Dodge.LevelGen.Pathing
|
||||
import Dodge.Room.Foreground
|
||||
import Dodge.Wall.Zone
|
||||
import Dodge.GameRoom
|
||||
import Dodge.Bounds
|
||||
--import Dodge.LevelGen.Data
|
||||
import Dodge.Room.Foreground
|
||||
import Dodge.Default.Wall
|
||||
import Geometry
|
||||
import qualified IntMapHelp as IM
|
||||
@@ -50,11 +49,15 @@ placeWires :: (World,[Room])-> World
|
||||
placeWires (w,rms) = foldr placeRoomWires w rms
|
||||
|
||||
placeRoomWires :: Room -> World -> World
|
||||
placeRoomWires rm w = foldr placeWire w (_rmWires rm)
|
||||
placeRoomWires rm w = IM.foldr ($) w
|
||||
$ IM.intersectionWith (placeWire rm) (_rmStartWires rm) (_rmEndWires rm)
|
||||
|
||||
placeWire :: RoomWire -> World -> World
|
||||
placeWire rw w = case rw of
|
||||
RoomWire (p,_) (q,_) -> w & foregroundShape %~ (thinHighBar 40 p q <>)
|
||||
placeWire :: Room -> RoomWire -> RoomWire -> World -> World
|
||||
placeWire rm (RoomWire p' _) (RoomWire q' _) w = w & foregroundShape %~ (thinHighBar 40 p q <>)
|
||||
where
|
||||
rs = _rmShift rm
|
||||
p = shiftPointBy rs p'
|
||||
q = shiftPointBy rs q'
|
||||
|
||||
doPartialPlacements :: ( (IM.IntMap [Placement],World) , [Room] ) -> (World,[Room])
|
||||
doPartialPlacements ((im,w),rms) = mapAccumR (doPartialPlacement im) w rms
|
||||
|
||||
Reference in New Issue
Block a user