Minor cleanup

This commit is contained in:
2021-11-15 02:16:17 +00:00
parent e93fa10a97
commit 59dc24aff6
5 changed files with 21 additions and 17 deletions
+1 -2
View File
@@ -36,8 +36,7 @@ initialAnoTree = padSucWithCorridors $ treeFromTrunk
[[SetLabel 0 $ return $ roomRectAutoLinks 100 100 [[SetLabel 0 $ return $ roomRectAutoLinks 100 100
& rmExtPmnt ?~ externalButton red & rmExtPmnt ?~ externalButton red
(anyLnkInPS 5 & psLnkRoomEff .~ (putWireStart 0 . extractRoomPos) ) (anyLnkInPS 5 & psLnkRoomEff .~ (putWireStart 0 . extractRoomPos) )
-- & rmStartWires .~ IM.fromList [(0,RoomWire 0 0)] & rmLinkEff .~ [putWireEnd 0]
& rmLinkEff .~ [putWireEndInvRmShift 0]
] ]
,[UseLabel 0 $ return switchDoorRoom] ,[UseLabel 0 $ return switchDoorRoom]
] ]
+8 -1
View File
@@ -16,6 +16,7 @@ import Dodge.Room.Link
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import Tile import Tile
import Dodge.RandomHelp
import Data.List (nubBy) import Data.List (nubBy)
import Data.Traversable import Data.Traversable
@@ -25,6 +26,7 @@ import Data.Foldable
import qualified Control.Foldl as L import qualified Control.Foldl as L
import Data.Maybe import Data.Maybe
import Data.Function import Data.Function
import Control.Monad.State
generateLevelFromRoomList :: [Room] -> World -> World generateLevelFromRoomList :: [Room] -> World -> World
generateLevelFromRoomList gr' w generateLevelFromRoomList gr' w
@@ -45,7 +47,12 @@ generateLevelFromRoomList gr' w
pairPath = concatMap _rmPath rs pairPath = concatMap _rmPath rs
zs = map fromIntegral $ randomRs (0,63::Int) $ _randGen w zs = map fromIntegral $ randomRs (0,63::Int) $ _randGen w
rs = map doRoomShift rs' rs = map doRoomShift rs'
rs' = zipWith addTile zs gr' rs' = mapM shuffleRoomPos (zipWith addTile zs gr') & evalState $ _randGen w
shuffleRoomPos :: RandomGen g => Room -> State g Room
shuffleRoomPos rm = do
newPos <- shuffle $ _rmPos rm
return $ rm & rmPos .~ newPos
placeWires :: (World,[Room])-> World placeWires :: (World,[Room])-> World
placeWires (w,rms) = foldr placeRoomWires w rms placeWires (w,rms) = foldr placeRoomWires w rms
+7 -5
View File
@@ -29,9 +29,10 @@ posRms :: [ConvexPoly]
posRms _ _ [] Empty = return $ Just [] posRms _ _ [] Empty = return $ Just []
posRms bounds (rtoadd,_) [] (Node (r,i) ts :<| tseq) posRms bounds (rtoadd,_) [] (Node (r,i) ts :<| tseq)
= fmap (finalLinksUpdate rtoadd:) <$> posRms bounds (r,i) ts tseq = fmap (finalLinksUpdate rtoadd:) <$> posRms bounds (r,i) ts tseq
posRms bounds (r,i) (t@(Node (_,i') _):ts) tseq = do posRms bounds (parent,i) (t@(Node (_,i') _):ts) tseq = do
putStr $ "Trying to place room " ++ show i' ++ ": " putStr $ "Trying to place room " ++ show i' ++ ": "
tryLinks (0::Int) (_rmLinks $ doRoomShift r) --tryLinks (0::Int) (_rmLinks $ doRoomShift parent)
tryLinks (0::Int) (_rmLinks parent)
where where
tryLinks _ [] = do tryLinks _ [] = do
putStrLn "all links tried" putStrLn "all links tried"
@@ -47,10 +48,11 @@ posRms bounds (r,i) (t@(Node (_,i') _):ts) tseq = do
where where
convexBounds = map pointsToPoly $ _rmBound r' convexBounds = map pointsToPoly $ _rmBound r'
clipping = or (convexPolysOverlap <$> convexBounds <*> bounds) clipping = or (convexPolysOverlap <$> convexBounds <*> bounds)
newr = (lnkEff l $ r & rmLinks %~ delete l & rmPos %~ (uncurry (OutLink j) l :) newr = (lnkEff l $ parent & rmLinks %~ delete l & rmPos %~ (uncurry (OutLink j) l :)
, i) , i)
(Node (r',_) _) = applyToRoot (first $ shiftRoomToLink l) t l' = shiftLinkBy (_rmShift parent) l
shiftedt' = applyToRoot (first $ shiftRoomShiftToLink l) t (Node (r',_) _) = applyToRoot (first $ shiftRoomToLink l') t
shiftedt' = applyToRoot (first $ shiftRoomShiftToLink l') t
lnkEff :: (Point2,Float) -> Room -> Room lnkEff :: (Point2,Float) -> Room -> Room
lnkEff x rm = case _rmLinkEff rm of lnkEff x rm = case _rmLinkEff rm of
+1
View File
@@ -7,6 +7,7 @@ module Dodge.Room.Link
( shiftRoomToLink ( shiftRoomToLink
, shiftRoomShiftToLink , shiftRoomShiftToLink
, shiftRoomBy , shiftRoomBy
, shiftLinkBy
, doRoomShift , doRoomShift
, randomiseAllLinks , randomiseAllLinks
, filterLinks , filterLinks
+3 -8
View File
@@ -1,17 +1,12 @@
module Dodge.Wire where module Dodge.Wire where
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.Room.Link
import Geometry import Geometry
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import Control.Lens import Control.Lens
putWireEndInvRmShift :: Int -> (Point2,Float) -> Room -> Room putWireEnd :: Int -> (Point2,Float) -> Room -> Room
putWireEndInvRmShift i pos rm = putWireEnd i pos = rmEndWires %~ IM.insert i (uncurry RoomWire pos)
rm & rmEndWires %~ IM.insert i (uncurry RoomWire $ invShiftLinkBy (_rmShift rm) pos)
putWireStart :: Int -> (Point2,Float) -> Room -> Room putWireStart :: Int -> (Point2,Float) -> Room -> Room
putWireStart i pos rm = rm putWireStart i pos = rmStartWires %~ IM.insert i (uncurry RoomWire pos)
& rmStartWires %~ IM.insert i (uncurry RoomWire pos)