diff --git a/src/Dodge/Data/GenWorld.hs b/src/Dodge/Data/GenWorld.hs index 3a1456c1d..b067dabae 100644 --- a/src/Dodge/Data/GenWorld.hs +++ b/src/Dodge/Data/GenWorld.hs @@ -86,9 +86,7 @@ data Placement , _plMID :: Maybe Int , _plIDCont :: World -> Placement -> Maybe Placement } - | PlacementUsingPos Point3 (Point3 -> Placement) -- allows a placement to use a shifted position | RandomPlacement {_unRandomPlacement :: State StdGen Placement} - | PickOnePlacement Int Placement {- The '_rmPolys' lists which polygons should be cut out to form the indestructible walls of the room. Link pairs contain a position and rotation to attach to another room; diff --git a/src/Dodge/LevelGen/PlacementHelper.hs b/src/Dodge/LevelGen/PlacementHelper.hs index 32de27f72..07691aefd 100644 --- a/src/Dodge/LevelGen/PlacementHelper.hs +++ b/src/Dodge/LevelGen/PlacementHelper.hs @@ -86,10 +86,8 @@ ps0PushPSw pst f = Placement 10 (PSNoShiftCont (V2 0 0) 0) pst Nothing $ addPlmnt :: Placement -> Placement -> Placement addPlmnt pl pl2 = case pl2 of - (PlacementUsingPos p f) -> PlacementUsingPos p (fmap (addPlmnt pl) f) (RandomPlacement rp) -> RandomPlacement $ fmap (addPlmnt pl) rp (Placement i ps pt mi f) -> Placement i ps pt mi (fmap (fmap g) f) - PickOnePlacement{} -> error "not written how to combine PickOnePlacement with others yet" where g Nothing = Just pl g (Just pl') = Just $ addPlmnt pl pl' diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index f2b412cd5..459f1da93 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -11,7 +11,6 @@ import Control.Monad.State import Data.Bifunctor import Data.Foldable import qualified Data.IntSet as IS -import Data.Maybe import Dodge.Base.NewID import Dodge.Data.GenWorld import Dodge.Path @@ -34,15 +33,10 @@ placeSpot (w, rm) plmnt = case plmnt of Placement{_plSpot = PSPos extract eff fallback} -> placeSpotUsingLink w rm plmnt extract eff fallback Placement{} -> placePlainPSSpot w rm plmnt shift - PlacementUsingPos p subpl -> placeSpot (w, rm) (subpl (shiftPoint3By shift p)) RandomPlacement rplmnt -> placeRandomPlacement rplmnt w rm - PickOnePlacement i pl -> ((placePickOne i pl rm w, rm), []) where shift = _rmShift rm -placePickOne :: Int -> Placement -> Room -> GenWorld -> GenWorld -placePickOne i pl rm = genPlacements %~ IM.insertWith (++) i [(pl, fromJust (_rmMID rm))] - placeRandomPlacement :: State StdGen Placement -> GenWorld -> diff --git a/src/Dodge/Placement/Random.hs b/src/Dodge/Placement/Random.hs index 0e0fbd20c..8fff6c8e7 100644 --- a/src/Dodge/Placement/Random.hs +++ b/src/Dodge/Placement/Random.hs @@ -5,7 +5,7 @@ import Dodge.Item import RandomHelp {- Probabilites of the type of the first floor weapon. -} -randFirstWeapon :: State StdGen Item +randFirstWeapon :: RandomGen g => State g Item randFirstWeapon = takeOne $ replicate 10 pistol diff --git a/src/Dodge/Placement/Shift.hs b/src/Dodge/Placement/Shift.hs index cce4d993d..222480780 100644 --- a/src/Dodge/Placement/Shift.hs +++ b/src/Dodge/Placement/Shift.hs @@ -25,9 +25,4 @@ shiftPlacement shift plmnt = case plmnt of Placement{} -> plmnt & plSpot %~ shiftPSBy shift & plIDCont %~ fmap (fmap (fmap $ shiftPlacement shift)) - PlacementUsingPos p f -> - PlacementUsingPos - (shiftPoint3By shift p) - (fmap (shiftPlacement shift) f) RandomPlacement rpl -> RandomPlacement $ fmap (shiftPlacement shift) rpl - PickOnePlacement i pl -> PickOnePlacement i (shiftPlacement shift pl) diff --git a/src/Dodge/Room/Room.hs b/src/Dodge/Room/Room.hs index c2b14f04f..49cff11b1 100644 --- a/src/Dodge/Room/Room.hs +++ b/src/Dodge/Room/Room.hs @@ -151,9 +151,9 @@ weaponEmptyRoom = do restrictRMInLinksPD f (roomRect w h 2 2 & rmPmnts .~ plmnts) return $ treePost [corridor, cleatSide $ cleatOnward rm] -weaponUnderCrits :: RandomGen g => Int -> State g (MetaTree Room String) -weaponUnderCrits i = do - let addwpat p = rmPmnts .:~ PickOnePlacement i (sPS p 0 $ RandPS $ fmap PutFlIt randFirstWeapon) +weaponUnderCrits :: RandomGen g => State g (MetaTree Room String) +weaponUnderCrits = do + let addwpat p = rmPmnts .:~(sPS p 0 $ RandPS $ fmap PutFlIt randFirstWeapon) continuationRoom = treePost [ addwpat (V2 20 0) corridorN @@ -246,12 +246,12 @@ deadEndRoom = lnks = [(V2 0 30, 0)] {- A random Either tree with a weapon and melee monster challenge. -} -weaponRoom :: Int -> State StdGen (MetaTree Room String) -weaponRoom i = +weaponRoom :: State StdGen (MetaTree Room String) +weaponRoom = join $ takeOne [ weaponEmptyRoom >>= rToOnward "weaponEmptyRoom" - , weaponUnderCrits i -- this int is used for PickOnePlacement + , weaponUnderCrits , weaponBehindPillar >>= rToOnward "weaponBehindPillar" , weaponBetweenPillars -- >>= rToOnward "weaponBetweenPillars" , weaponLongCorridor >>= rToOnward "weaponLongCorridor" diff --git a/src/Dodge/Room/Start.hs b/src/Dodge/Room/Start.hs index 02fc0ffc3..d79367d4a 100644 --- a/src/Dodge/Room/Start.hs +++ b/src/Dodge/Room/Start.hs @@ -54,7 +54,7 @@ startRoom :: Int -> State StdGen (MetaTree Room String) startRoom i = join $ takeOne - [ attachOnward "startThenWeaponRoom" <$> preCritStart <*> weaponRoom i + [ attachOnward "startThenWeaponRoom" <$> preCritStart <*> weaponRoom , rezBoxesWpCrit >>= rToOnward "rezBoxesWpCrit" , runPastStart i >>= rToOnward ("runPastStart " ++ show i) , attachOnward "startThenCraft" <$> preCritStart <*> (startCrafts >>= roomsContaining [])