Cleanup
This commit is contained in:
@@ -8,11 +8,7 @@ module Dodge.Room.Link
|
||||
, moveRoomBy
|
||||
, shiftLinkBy
|
||||
, doRoomShift
|
||||
, sortOutLinksOn
|
||||
, filterSortOutLinksOn
|
||||
, randomiseAllLinks
|
||||
, shuffleLinks
|
||||
, filterLinks
|
||||
, chooseOneInLink
|
||||
, restrictRMInLinksPD
|
||||
) where
|
||||
@@ -27,7 +23,6 @@ import Data.Tile
|
||||
import Dodge.RoomLink
|
||||
|
||||
import Control.Lens
|
||||
import Data.List
|
||||
import qualified Data.Set as S
|
||||
|
||||
chooseOneInLink :: RandomGen g => Room -> State g Room
|
||||
@@ -43,32 +38,11 @@ restrictToFstInLink = rmLinks %~ f
|
||||
| otherwise = rl : f xs
|
||||
f [] = []
|
||||
|
||||
sortOutLinksOn :: Ord b => ((Point2,Float) -> b) -> Room -> Room
|
||||
sortOutLinksOn f = overLnkType OutLink $ sortOn (f . lnkPosDir)
|
||||
|
||||
filterSortOutLinksOn :: Ord b => ((Point2,Float) -> Bool) -> ((Point2,Float) -> b) -> Room -> Room
|
||||
filterSortOutLinksOn test f = overLnkType OutLink dosort
|
||||
where
|
||||
dosort [] = []
|
||||
dosort xs = let (ys,zs) = partition (test . lnkPosDir) xs
|
||||
in sortOn (f . lnkPosDir) ys ++ zs
|
||||
|
||||
{- Shuffle the order of all links of a room randomly.
|
||||
- Note this does not change their types. -}
|
||||
randomiseAllLinks :: RandomGen g => Room -> State g Room
|
||||
randomiseAllLinks r = do
|
||||
newLinks <- shuffle $ _rmLinks r
|
||||
return $ r {_rmLinks = newLinks }
|
||||
{- Shuffle the order of all links of a room randomly.
|
||||
- Note this does not change their types. -}
|
||||
shuffleLinks :: RandomGen g => Room -> State g Room
|
||||
shuffleLinks = rmLinks %%~ shuffle
|
||||
|
||||
filterLinks :: RandomGen g => ((Point2,Float) -> Bool) -> Room -> State g Room
|
||||
filterLinks cond r = do
|
||||
newLinks <- shuffle $ filter (cond . lnkPosDir) $ _rmLinks r
|
||||
return $ r {_rmLinks = newLinks}
|
||||
|
||||
doRoomShift :: Room -> Room
|
||||
doRoomShift rm = shiftRoomBy (_rmShift rm) rm & rmShift .~ _rmShift rm
|
||||
|
||||
|
||||
Reference in New Issue
Block a user