Add more procedural girders
This commit is contained in:
@@ -28,10 +28,8 @@ import LensHelp
|
||||
import Control.Monad.State
|
||||
--import Control.Monad.Loops
|
||||
import System.Random
|
||||
import Data.Maybe
|
||||
import Data.Tree
|
||||
import Data.Bifunctor
|
||||
import Data.List
|
||||
|
||||
roomC :: RandomGen g => Float -> Float -> State g Room
|
||||
roomC w h = do
|
||||
@@ -182,26 +180,6 @@ roomOctogon = defaultRoom
|
||||
,( (0,40),pi)
|
||||
]
|
||||
|
||||
roomNgon :: Int -> Float -> Room
|
||||
roomNgon n x = defaultRoom
|
||||
{ _rmPolys = [poly]
|
||||
, _rmLinks = map toBothLnk lnks -- muout (init lnks) ++ muin[last lnks]
|
||||
, _rmPath = [] -- TODO
|
||||
, _rmPmnts = [mntLightLnkCond $ resetPLUse $ rprBool $ const . isInLnk]
|
||||
, _rmBound = [poly]
|
||||
, _rmFloor = Tiled [makeTileFromPoly poly 9]
|
||||
, _rmName = show n ++ "gon"
|
||||
}
|
||||
where
|
||||
rot = 2*pi / fromIntegral n
|
||||
rots = map ((rot *) . fromIntegral) [0..n-1]
|
||||
poly = mapMaybe
|
||||
(\(ra,rb) -> intersectLineLine' (rotateV ra bl) (rotateV ra br) (rotateV rb bl) (rotateV rb br))
|
||||
$ loopPairs rots
|
||||
bl = V2 x x
|
||||
br = V2 (-x) x
|
||||
lnks = sortOn ((\(V2 a b) -> (negate b,a)) . fst) $ map (\r -> (rotateV r (V2 0 x),r)) rots
|
||||
|
||||
allPairs :: Eq a => [a] -> [(a,a)]
|
||||
allPairs xs = [(x,y) | x <- xs, y <- xs, x /= y]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user