From 5d9ea4b7330e70688a517566b40816ce369bc917 Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 22 Nov 2021 16:42:19 +0000 Subject: [PATCH] Correct room link position numbering --- data/sound/seagullChatter.CHUGUGUG.10000.wav | Bin 71150 -> 55502 bytes src/Dodge/Creature.hs | 3 +- src/Dodge/Floor.hs | 2 + src/Dodge/Item/Data.hs | 1 + src/Dodge/Item/Equipment.hs | 1 + src/Dodge/Item/Weapon/Drone.hs | 2 +- src/Dodge/Layout.hs | 7 +- src/Dodge/LevelGen/Data.hs | 6 ++ src/Dodge/LockAndKey.hs | 18 +++++ src/Dodge/Placement/Instance/Sensor.hs | 14 ++-- src/Dodge/Placement/Instance/Wall.hs | 11 +++ src/Dodge/Placement/PlaceSpot.hs | 2 +- src/Dodge/PlacementSpot.hs | 15 ++-- src/Dodge/Room.hs | 10 +-- src/Dodge/Room/Corridor.hs | 1 + src/Dodge/Room/LasTurret.hs | 81 +++++++++++++++++++ src/Dodge/Room/LockAndKeyList.hs | 19 ----- src/Dodge/Room/Room.hs | 3 +- src/Dodge/Room/Start.hs | 39 +++------ src/Dodge/RoomComplex.hs | 1 + src/Dodge/Tree/Compose.hs | 4 +- src/Dodge/Tree/Shift.hs | 24 +++--- src/Padding.hs | 5 ++ 23 files changed, 184 insertions(+), 85 deletions(-) create mode 100644 src/Dodge/LockAndKey.hs create mode 100644 src/Dodge/Room/LasTurret.hs delete mode 100644 src/Dodge/Room/LockAndKeyList.hs create mode 100644 src/Dodge/RoomComplex.hs diff --git a/data/sound/seagullChatter.CHUGUGUG.10000.wav b/data/sound/seagullChatter.CHUGUGUG.10000.wav index 8fcb5ab1b9841cb12257b4bab4745b376030e48c..bb1437637af802a5a7bd85e144a8c55f87ec3c5b 100644 GIT binary patch literal 55502 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

!!G8oLY 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 LnpEqiw$uIx0_!@p diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 5eceec7f9..41faa3678 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -163,7 +163,7 @@ startCr = defaultCreature {- | Items you start with. -} startInvList :: [Item] startInvList = - [ lasDrones + [ ] startInventory :: IM.IntMap Item startInventory = IM.fromList $ zip [0..defaultInvSize -1] $ startInvList ++ repeat NoItem @@ -191,6 +191,7 @@ stackedInventory = IM.fromList (zip [0..25] ,flamer ,poisonSprayer ,launcher + ,lasDrones --,lasGun --,grenade --,ltAutoGun,flamer,multGun,spreadGun,remoteLauncher diff --git a/src/Dodge/Floor.hs b/src/Dodge/Floor.hs index 9d84d15bd..60d74d718 100644 --- a/src/Dodge/Floor.hs +++ b/src/Dodge/Floor.hs @@ -7,6 +7,7 @@ import Geometry.Data import Dodge.Data import Dodge.Creature.State.Data import Dodge.Room +import Dodge.Room import Dodge.Placement.Instance.Button import Dodge.Tree import Dodge.Annotation @@ -34,6 +35,7 @@ import qualified Data.IntMap.Strict as IM initialAnoTree :: RandomGen g => Tree [Annotation g] initialAnoTree = padSucWithCorridors $ treeFromTrunk [[AnoApplyInt 0 startRoom] + , [AnoApplyInt 2 room2] , [AnoApplyInt 1 lasSensorTurretTest] -- ,[ChainAnos -- [[SetLabel 0 $ return $ roomRectAutoLinks 200 200 diff --git a/src/Dodge/Item/Data.hs b/src/Dodge/Item/Data.hs index 275cf59c1..801028e9f 100644 --- a/src/Dodge/Item/Data.hs +++ b/src/Dodge/Item/Data.hs @@ -38,6 +38,7 @@ data ItemIdentity | RemoteLauncher | LightningGun | PoisonSprayer + | FlatShield deriving (Eq,Show,Ord,Enum) data AimStance diff --git a/src/Dodge/Item/Equipment.hs b/src/Dodge/Item/Equipment.hs index cbddf029f..ba0b88d06 100644 --- a/src/Dodge/Item/Equipment.hs +++ b/src/Dodge/Item/Equipment.hs @@ -54,6 +54,7 @@ flatShield = defaultEquipment , _itAimStance = TwoHandFlat , _itEffect = effectOnOffEquip createShieldWall removeShieldWall , _itName = "SHIELD" + , _itIdentity = FlatShield } flatShieldEquipSPic :: Item -> SPic flatShieldEquipSPic _ = diff --git a/src/Dodge/Item/Weapon/Drone.hs b/src/Dodge/Item/Weapon/Drone.hs index 31602e7f4..e36ab9253 100644 --- a/src/Dodge/Item/Weapon/Drone.hs +++ b/src/Dodge/Item/Weapon/Drone.hs @@ -73,5 +73,5 @@ aDroneWithItemParams it cr w = over props (IM.insert i theShell) w , _pjVel = rotateV dir (V2 1 0) , _prDraw = _amPjDraw am , _pjID = i - , _pjUpdate = \_ -> id + , _pjUpdate = const id } diff --git a/src/Dodge/Layout.hs b/src/Dodge/Layout.hs index 3270beae5..d90964383 100644 --- a/src/Dodge/Layout.hs +++ b/src/Dodge/Layout.hs @@ -69,9 +69,10 @@ placeRoomWires rm w = IM.foldr ($) w placeWire :: Room -> RoomWire -> RoomWire -> World -> World placeWire rm (WallWire p _ h1) (WallWire q _ h2) = foregroundShape - %~ (col ( (thinHighBarChain h2 $ map (shiftPointBy rs) doOrdering) <> - (barPP 1.5 (addZ h1 p) (addZ h2 p)) - ) <> + %~ (col ( thinHighBarChain h2 (map (shiftPointBy rs) doOrdering) + <> barPP 1.5 (addZ h1 p) (addZ h2 p) + ) + <> ) where --TODO use rmWalls for non convex rooms diff --git a/src/Dodge/LevelGen/Data.hs b/src/Dodge/LevelGen/Data.hs index a73707331..174c05b78 100644 --- a/src/Dodge/LevelGen/Data.hs +++ b/src/Dodge/LevelGen/Data.hs @@ -113,6 +113,9 @@ psPt ps pt = Placement ps pt Nothing (const Nothing) sPS :: Point2 -> Float -> PSType -> Placement sPS p a pt = Placement (PS p a) pt Nothing (const Nothing) +sps :: PlacementSpot -> PSType -> Placement +sps ps pt = Placement ps pt Nothing (const Nothing) + plRRpt :: Int -> PSType -> Placement plRRpt i pt = Placement (PSRoomRand i) pt Nothing (const Nothing) @@ -153,6 +156,9 @@ jps0PushPS pst f = Just . Placement (PS (V2 0 0) 0) pst Nothing ps0j :: PSType -> Placement -> Placement ps0j pst plmnt = Placement (PS (V2 0 0) 0) pst Nothing (const $ Just plmnt) +psj :: PlacementSpot -> PSType -> Placement -> Placement +psj ps pst plmnt = Placement ps pst Nothing (const $ Just plmnt) + ps0jPushPS :: PSType -> Placement -> Placement ps0jPushPS pst plmnt = Placement (PS (V2 0 0) 0) pst Nothing (\p -> Just $ plmnt & plSpot .~ _plSpot p) diff --git a/src/Dodge/LockAndKey.hs b/src/Dodge/LockAndKey.hs new file mode 100644 index 000000000..9ff36904b --- /dev/null +++ b/src/Dodge/LockAndKey.hs @@ -0,0 +1,18 @@ +module Dodge.LockAndKey where +import Dodge.Data +import Dodge.Tree +import Dodge.LevelGen.Data +import Dodge.Room +--import Dodge.Item.Equipment + +import System.Random +import Control.Monad.State + +lockRoomKeyItems :: RandomGen g => [ (Int -> State g (SubCompTree Room) , [ItemIdentity] ) ] +lockRoomKeyItems = + [ (const $ return $ chainUses $ map singleUseAll [door,lasTunnel,door] , [FlatShield] ) + , (lasCenSensEdge, [FlatShield,Launcher,TeslaGun] ) + ] + +itemRooms :: [(ItemIdentity, Room)] +itemRooms = [] diff --git a/src/Dodge/Placement/Instance/Sensor.hs b/src/Dodge/Placement/Instance/Sensor.hs index a7aaa7d01..83be85628 100644 --- a/src/Dodge/Placement/Instance/Sensor.hs +++ b/src/Dodge/Placement/Instance/Sensor.hs @@ -14,18 +14,19 @@ import Data.Either damageSensor :: (DamageType -> Either Int Int) -- Left gets sensed, Right does damage + -> Float -> (Machine -> World -> World) -> PlacementSpot -> Placement -damageSensor damF upf ps = pContID ps ( PutLS theLS) +damageSensor damF wdth upf ps = pContID ps ( PutLS theLS) $ \lsid -> Just $ spNoID ps $ PutMachine yellow (reverse $ square wdth) defaultMachine - { _mcDraw = sensorSPic + { _mcDraw = sensorSPic wdth , _mcUpdate = \mc w -> upf mc $ sensorUpdate damF mc w , _mcLSs = [lsid] } where theLS = defaultLS { _lsPos = V3 0 0 30 , _lsIntensity = 0.1 } -lightSensor :: (Machine -> World -> World) -> PlacementSpot -> Placement +lightSensor :: Float -> (Machine -> World -> World) -> PlacementSpot -> Placement lightSensor = damageSensor senseLasering senseLasering :: DamageType -> Either Int Int @@ -47,9 +48,6 @@ sensorUpdate damF mc w = w & machines . ix mcid %~ upmc ni = fromIntegral x / 1000 upls = lsIntensity .~ V3 ni ni ni -sensorSPic :: Machine -> SPic -sensorSPic _ = ( colorSH yellow $ upperPrismPoly 25 (square wdth) +sensorSPic :: Float -> Machine -> SPic +sensorSPic wdth _ = ( colorSH yellow $ upperPrismPoly 25 (square wdth) , mempty ) - -wdth :: Float -wdth = 10 diff --git a/src/Dodge/Placement/Instance/Wall.hs b/src/Dodge/Placement/Instance/Wall.hs index d2955de7c..71db3d0ef 100644 --- a/src/Dodge/Placement/Instance/Wall.hs +++ b/src/Dodge/Placement/Instance/Wall.hs @@ -10,6 +10,17 @@ import Color import Data.List import Control.Lens +heightWallPS :: PlacementSpot -> Float -> [Point2] -> Placement +heightWallPS spot h ps = psj spot (PutForeground . colorSH col $ upperPrismPoly h ps) + $ sps spot $ PutWall ps theWall + where + col = _wlColor defaultWall + theWall = defaultWall + { _wlOpacity = SeeAbove + , _wlDraw = False + , _wlHeight = h + } + heightWall :: Float -> [Point2] -> Placement heightWall h ps = ps0j (PutForeground . colorSH col $ upperPrismPoly h ps) $ sps0 $ PutWall ps theWall diff --git a/src/Dodge/Placement/PlaceSpot.hs b/src/Dodge/Placement/PlaceSpot.hs index b196fa1ec..8171cbb10 100644 --- a/src/Dodge/Placement/PlaceSpot.hs +++ b/src/Dodge/Placement/PlaceSpot.hs @@ -62,7 +62,7 @@ placeSpotUsingLink w rm plmnt extract eff fallback = case searchedPoss (_rmPos r Nothing -> ((w,rm),[plmnt]) Just plmnt' -> placeSpot (w,rm) plmnt' where - searchedPoss [] = error "no correct pos type for lnk placement" + searchedPoss [] = Nothing searchedPoss (pos:poss) = case extract pos of Nothing -> second (pos:) <$> searchedPoss poss Just (ps,rmpos) -> Just ( ps,rmpos:poss) diff --git a/src/Dodge/PlacementSpot.hs b/src/Dodge/PlacementSpot.hs index c8993dd76..3b761353c 100644 --- a/src/Dodge/PlacementSpot.hs +++ b/src/Dodge/PlacementSpot.hs @@ -18,17 +18,22 @@ atFstLnkOut = PSPos f (const id) Nothing f (OutLink 0 p a) = Just (PS p a, OutLink 0 p a) f _ = Nothing -atFstLnkOutShiftBy :: ((Point2,Float) -> (Point2,Float)) - -> PlacementSpot -atFstLnkOutShiftBy theshift = PSPos f (const id) Nothing +atNthLnkOutShiftBy :: Int -> ((Point2,Float) -> (Point2,Float)) -> PlacementSpot +atNthLnkOutShiftBy n theshift = PSPos f (const id) Nothing where - f (OutLink 0 p a) = Just (PS p' a', OutLink 0 p a) + f (OutLink i p a) | n == i = Just (PS p' a', OutLink n p a) where (p',a') = theshift (p,a) f _ = Nothing +atFstLnkOutShiftBy :: ((Point2,Float) -> (Point2,Float)) -> PlacementSpot +atFstLnkOutShiftBy = atNthLnkOutShiftBy 0 + atFstLnkOutShiftInward :: Float -> PlacementSpot -atFstLnkOutShiftInward x = atFstLnkOutShiftBy f +atFstLnkOutShiftInward = atNthLnkOutShiftInward 0 + +atNthLnkOutShiftInward ::Int -> Float -> PlacementSpot +atNthLnkOutShiftInward n x = atNthLnkOutShiftBy n f where f (p,a) = (p +.+ rotateV a (V2 0 (negate x)),a) diff --git a/src/Dodge/Room.hs b/src/Dodge/Room.hs index a028afe83..51f0beca8 100644 --- a/src/Dodge/Room.hs +++ b/src/Dodge/Room.hs @@ -1,8 +1,8 @@ -{- -Specification of individual rooms. --} +{- Specification of individual rooms. -} module Dodge.Room ( module Dodge.Room.Room + , module Dodge.Room.RoadBlock + , module Dodge.Room.LasTurret , module Dodge.Room.Foreground , module Dodge.LevelGen.Data , module Dodge.Room.Procedural @@ -12,17 +12,17 @@ module Dodge.Room , module Dodge.Room.Airlock , module Dodge.Room.LongDoor , module Dodge.Room.Branch - , module Dodge.Room.RoadBlock , module Dodge.Room.Teleport , module Dodge.Room.Start , module Dodge.Room.Boss , module Dodge.Room.Treasure ) where import Dodge.Room.Room +import Dodge.Room.RoadBlock +import Dodge.Room.LasTurret import Dodge.Room.Treasure import Dodge.Room.Boss import Dodge.Room.Start -import Dodge.Room.RoadBlock import Dodge.Room.Teleport import Dodge.Room.Branch import Dodge.Room.Foreground diff --git a/src/Dodge/Room/Corridor.hs b/src/Dodge/Room/Corridor.hs index e44da9729..b65cf0d44 100644 --- a/src/Dodge/Room/Corridor.hs +++ b/src/Dodge/Room/Corridor.hs @@ -22,6 +22,7 @@ corridor = defaultRoom , _rmBound = [ rectNSWE 50 30 0 40 ] , _rmFloor = [makeTileFromPoly poly 2] , _rmRandPSs = [psRandRanges (10,30) (30,60) (0,2*pi)] + , _rmName = "Corridor" } where poly = rectNSWE 80 0 0 40 diff --git a/src/Dodge/Room/LasTurret.hs b/src/Dodge/Room/LasTurret.hs new file mode 100644 index 000000000..58d98c906 --- /dev/null +++ b/src/Dodge/Room/LasTurret.hs @@ -0,0 +1,81 @@ +module Dodge.Room.LasTurret where +import Dodge.LevelGen.Data +import Dodge.PlacementSpot +import Dodge.Data +import Dodge.Tree +import Dodge.Room.Door +import Dodge.Room.Room +import Dodge.Room.Corridor +import Dodge.Room.Link +--import Dodge.Room.Procedural +import Dodge.Room.Foreground +--import Dodge.Room.RoadBlock +import Dodge.Placement.Instance +--import Dodge.Item.Random +--import Dodge.Item.Weapon.BulletGuns +--import Dodge.Item.Weapon.Utility +--import Dodge.LevelGen.Data +--import Geometry.Data +import Geometry +--import Padding +import Color +import Shape + +import Data.Maybe +import Data.Tree +import Control.Monad.State +import Control.Lens +import System.Random + +cenLasTur :: Room +cenLasTur = roomNgon 8 200 & rmPmnts .~ + [ putLasTurret 0.02 + , heightWall 30 (rectNSEW (-90) (-110) 20 (-20)) + , mntLightLnkCond unusedLnkToPS + ] + +lightSensInsideDoor :: Room -> Room +lightSensInsideDoor rm = rm + & rmPmnts %~ ( (psPt atFstLnkOut $ PutForeground $ colorSH yellow $ + thinHighBar 0 (V2 20 (-1)) (V2 20 (-100)) + <> thinHighBar 0 (V2 0 (-100)) (V2 20 (-100)) + <> barPP 1.5 (V3 20 (-1) 0) (V3 20 (-1) 80)) : ) + & rmExtPmnt ?~ + extTrigLitPos (atFstLnkOutShiftBy (\(p,a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a))) + ( \tp -> Just $ lightSensor 10 (upf $ fromJust $ _plMID tp) (atFstLnkOutShiftInward 100) + ) + where + upf trid mc w | _mcSensor mc > 900 = w & triggers . ix trid .~ const True + | otherwise = w + +lightSensByDoor :: Room -> Room +lightSensByDoor rm = rm + & rmPmnts %~ ( + [ psPt atFstLnkOut $ PutForeground $ colorSH yellow + $ barPP 1.5 (V3 20 (-1) 0) (V3 20 (-1) 80) + , heightWallPS (atNthLnkOutShiftInward 1 50) 30 (rectNSEW (10) (-10) 20 (-20)) + , heightWallPS (atFstLnkOutShiftInward 100) 30 (rectNSEW (10) (-10) 20 (-20)) + ] ++ ) + & rmExtPmnt ?~ + extTrigLitPos (atFstLnkOutShiftBy (\(p,a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a))) + ( \tp -> Just $ lightSensor 20 (upf $ fromJust $ _plMID tp) (atFstLnkOutShiftBy sensorshift) + ) + where + sensorshift (p,a) = (p +.+ rotateV a (V2 60 (-20)), a) + upf trid mc w | _mcSensor mc > 900 = w & triggers . ix trid .~ const True + | otherwise = w + +lasSensorTurretTest :: RandomGen g => Int -> State g (SubCompTree Room) +lasSensorTurretTest n = do + cenroom <- randomiseOutLinks $ (lightSensInsideDoor cenLasTur) {_rmLabel = Just n} + let doorroom = switchDoorRoom {_rmTakeFrom = Just n} + return $ treeFromPost [PassDown door,PassDown cenroom,PassDown doorroom] (UseAll door) + +lasCenSensEdge :: RandomGen g => Int -> State g (SubCompTree Room) +lasCenSensEdge n = do + cenroom <- randomiseOutLinks $ (lightSensByDoor cenLasTur) {_rmLabel = Just n} + let doorroom = switchDoorRoom {_rmTakeFrom = Just n} + return $ treeFromTrunk [PassDown door] (Node (PassDown cenroom) + [treeFromPost [PassDown doorroom] (UseAll door), treeFromPost [UseNone door] (UseNone corridor) + ] + ) diff --git a/src/Dodge/Room/LockAndKeyList.hs b/src/Dodge/Room/LockAndKeyList.hs deleted file mode 100644 index 33cef4b8b..000000000 --- a/src/Dodge/Room/LockAndKeyList.hs +++ /dev/null @@ -1,19 +0,0 @@ -module Dodge.Room.LockAndKeyList - where -import Dodge.LevelGen.Data -import Dodge.Room.RoadBlock -import Dodge.Room.Boss - -import Control.Monad.State -import System.Random -import Data.Tree - -lockAndKeyRoomList :: RandomGen g => - [ (State g (Tree (Either Room Room)) - ,State g (Tree (Either Room Room)) - ) ] -lockAndKeyRoomList = - [ ( fmap (pure . Right) armouredCorridor - , fmap (fmap Left) armouredChasers - ) - ] diff --git a/src/Dodge/Room/Room.hs b/src/Dodge/Room/Room.hs index f1598d7bb..7326e764b 100644 --- a/src/Dodge/Room/Room.hs +++ b/src/Dodge/Room/Room.hs @@ -181,7 +181,7 @@ rot90Around cen p = cen +.+ vNormal (p -.- cen) roomMiniIntro :: RandomGen g => State g (SubCompTree Room) roomMiniIntro = do midroom <- join $ takeOne [miniTree2,glassLesson] - return $ chainUses $ [return $ UseAll door, midroom,return $ UseAll corridor] + return $ chainUses [return $ UseAll door, midroom,return $ UseAll corridor] roomCenterPillar :: RandomGen g => State g Room roomCenterPillar = changeLinkTo ((\p -> dist p (V2 120 0) < 10) . fst) @@ -226,6 +226,7 @@ roomNgon n x = defaultRoom , _rmPmnts = [] , _rmBound = [poly] , _rmFloor = [makeTileFromPoly poly 9] + , _rmName = show n ++ "gon" } where rot = 2*pi / fromIntegral n diff --git a/src/Dodge/Room/Start.hs b/src/Dodge/Room/Start.hs index 587de0867..feb5c094b 100644 --- a/src/Dodge/Room/Start.hs +++ b/src/Dodge/Room/Start.hs @@ -1,8 +1,8 @@ -module Dodge.Room.Start - where +module Dodge.Room.Start where import Dodge.LevelGen.Data import Dodge.PlacementSpot import Dodge.Room.RunPast +import Dodge.Room.LasTurret import Dodge.Data import Dodge.Default import Dodge.Tree @@ -49,44 +49,23 @@ minigunfakeout = do ,PassDown keyholeCorridor,PassDown corridor]) `treeFromPost` UseAll door -centralLasTurret :: Room -centralLasTurret = roomNgon 8 200 & rmPmnts .~ - [ putLasTurret 0.02 - , heightWall 30 (rectNSEW (-90) (-110) 20 (-20)) - , mntLightLnkCond unusedLnkToPS - --, spanColLightI 0.5 98 (V2 0 (-5)) (V2 0 5) - , psPt atFstLnkOut $ PutForeground $ colorSH yellow $ - thinHighBar 0 (V2 20 (-1)) (V2 20 (-100)) - <> thinHighBar 0 (V2 0 (-100)) (V2 20 (-100)) - <> barPP 1.5 (V3 20 (-1) 0) (V3 20 (-1) 80) - ] - & rmExtPmnt ?~ - extTrigLitPos (atFstLnkOutShiftBy (\(p,a) -> (p +.+ rotateV a (V2 18.5 (-2.5)), a))) - ( \tp -> Just $ lightSensor (upf $ fromJust $ _plMID tp) (atFstLnkOutShiftInward 100) - ) - where - upf trid mc w | _mcSensor mc > 900 = w & triggers . ix trid .~ const True - | otherwise = w - -lasSensorTurretTest :: RandomGen g => Int -> State g (SubCompTree Room) -lasSensorTurretTest n = do - cenroom <- randomiseOutLinks $ centralLasTurret {_rmLabel = Just n} - let doorroom = switchDoorRoom {_rmTakeFrom = Just n} - return $ treeFromPost [PassDown door,PassDown cenroom,PassDown doorroom] (UseAll door) rezThenLasTurret :: RandomGen g => State g (SubCompTree Room) rezThenLasTurret = do rbox <- rezBoxStart - cenroom <- randomiseOutLinks $ centralLasTurret {_rmLabel = Just 0} + cenroom <- randomiseOutLinks $ (lightSensInsideDoor cenLasTur) {_rmLabel = Just 0} let doorroom = switchDoorRoom {_rmTakeFrom = Just 0} contTree = treeFromPost [PassDown cenroom,PassDown doorroom] (UseAll door) return $ rbox `passUntilUseAll` [contTree] +room2 :: RandomGen g => Int -> State g (SubCompTree Room) +room2 = lasCenSensEdge + startRoom :: RandomGen g => Int -> State g (SubCompTree Room) startRoom i = join $ takeOne [-- roomMiniIntro - minigunfakeout - , rezBoxesWp + --minigunfakeout + rezBoxesWp , rezBoxesThenWeaponRoom , rezBoxThenWeaponRoom , rezBoxesWpCrit @@ -220,7 +199,7 @@ startRoom' = do , tankSquareEmboss4 (dim orange) 50 (h-60) , tankSquare (dim orange) 50 50 , tankSquare (dim orange) 50 120 - , lightSensor (const id) (PS (V2 (0.8*w) (0.25*h)) 0) + , lightSensor 10 (const id) (PS (V2 (0.8*w) (0.25*h)) 0) , putLasTurret 0.005 & plSpot .~ PS (V2 (0.8*w) (0.8*h)) 0 , sps0 $ PutForeground $ colorSH orange $ pipePP 2 (V3 50 50 25) (V3 50 120 25) ] diff --git a/src/Dodge/RoomComplex.hs b/src/Dodge/RoomComplex.hs new file mode 100644 index 000000000..8e0a76296 --- /dev/null +++ b/src/Dodge/RoomComplex.hs @@ -0,0 +1 @@ +module Dodge.RoomComplex where diff --git a/src/Dodge/Tree/Compose.hs b/src/Dodge/Tree/Compose.hs index b51946313..e675dc3d5 100644 --- a/src/Dodge/Tree/Compose.hs +++ b/src/Dodge/Tree/Compose.hs @@ -14,9 +14,9 @@ import Data.Tree expandTree :: CompTree a -> Tree a expandTree (Node root extChildren) = case root of Node (UseAll x) _ -> Node x (map expandTree extChildren) - Node (UseSome is x) _ -> Node x (map expandTree $ map (\i -> extChildren !! i) is) + Node (UseSome is x) _ -> Node x (map (expandTree . \i -> extChildren !! i) is) Node (UseNone _) _ -> fmap _unCompose root - Node (PassDown x) xs -> Node x $ map (expandTree . (\ct -> Node ct extChildren)) xs + Node (PassDown x) xs -> Node x $ map (expandTree . (`Node` extChildren)) xs Node (SplitDown x) xs -> Node x $ map expandTree $ zipWith Node xs $ map (:[]) extChildren ++ repeat [] diff --git a/src/Dodge/Tree/Shift.hs b/src/Dodge/Tree/Shift.hs index d669679bd..4f2eeaa8b 100644 --- a/src/Dodge/Tree/Shift.hs +++ b/src/Dodge/Tree/Shift.hs @@ -9,6 +9,7 @@ import Dodge.Room.Link import Dodge.Tree.Polymorphic import Geometry.ConvexPoly import Geometry.Data +import Padding import Data.Tree import Data.Sequence hiding (zipWith) @@ -19,35 +20,40 @@ import Control.Lens hiding (Empty, (<|) , (|>)) type RoomInt = (Room,Int) positionRoomsFromTree :: Tree RoomInt -> IO (Maybe [Room]) -positionRoomsFromTree (Node (r,i) ts) = posRms (map pointsToPoly $ _rmBound r) (r,i) ts Empty +positionRoomsFromTree (Node (r,i) ts) = posRms (map pointsToPoly $ _rmBound r) (r,i) 0 ts Empty posRms :: [ConvexPoly] -> RoomInt + -> Int -- ^ the number of children already placed -> [Tree RoomInt] -> Seq (Tree RoomInt) -> IO (Maybe [Room]) -posRms bounds (parent,_) [] st = case st of +posRms bounds (parent,_) _ [] st = case st of Empty -> return $ Just [] Node childi ts :<| tseq - -> fmap (finalLinksUpdate parent:) <$> posRms bounds childi ts tseq -posRms bounds parenti (t@(Node (_,i') _):ts) tseq = do - putStr $ "Trying to place room " ++ show i' ++ ": " - tryLinks 0 (_rmLinks parent) + -> fmap (finalLinksUpdate parent:) <$> posRms bounds childi 0 ts tseq +posRms bounds parenti@(pr,i) numChild (t@(Node (cr,i') _):ts) tseq = do + putStr $ (rpns 20 (_rmName cr ++ "-" ++ show i')) + ++ (rpns 9 (" child " ++ show numChild )) + ++ (rpns 25 (" of " ++ _rmName pr ++ "-" ++ show i )) + tryLinks (0::Int) (_rmLinks parent) where + rpns x s = rightPadNoSquash x ' ' s parent = fst parenti tryLinks _ [] = putStrLn "all links tried" >> return Nothing tryLinks j (l:ls) | clipping = tryLinks (j+1) ls | otherwise = do - putStrLn $ "placing at link " ++ show j - mayrs <- posRms (convexBounds ++ bounds) (first upr parenti) ts (tseq |> shiftedt) + putStrLn $ "placed at link " ++ show j + mayrs <- posRms (convexBounds ++ bounds) + (first upr parenti) (numChild + 1) ts (tseq |> shiftedt) case mayrs of Nothing -> putStr ("Backtracking to room " ++ show i' ++ ": ") >> tryLinks (j+1) ls Just rs -> return (Just rs) where convexBounds = map pointsToPoly $ _rmBound r' clipping = or (convexPolysOverlap <$> convexBounds <*> bounds) - upr rm = doLnkEff l $ rm & rmLinks %~ delete l & rmPos %~ (uncurry (OutLink j) l :) + upr rm = doLnkEff l $ rm & rmLinks %~ delete l & rmPos %~ (uncurry (OutLink numChild) l :) l' = shiftLinkBy (_rmShift parent) l r' = doRoomShift . fst $ rootLabel shiftedt shiftedt = applyToRoot (first $ shiftRoomShiftToLink l') t diff --git a/src/Padding.hs b/src/Padding.hs index 81b6110d3..16bd84bbf 100644 --- a/src/Padding.hs +++ b/src/Padding.hs @@ -2,6 +2,7 @@ module Padding ( leftPad , rightPad + , rightPadNoSquash , midPad , midPadL , rotU @@ -18,6 +19,10 @@ rightPad :: Int -> a -> [a] -> [a] {-# INLINE rightPad #-} rightPad i x xs = take i $ xs ++ repeat x +rightPadNoSquash :: Int -> a -> [a] -> [a] +{-# INLINE rightPadNoSquash #-} +rightPadNoSquash i x xs = take (max i $ length xs) $ xs ++ repeat x + midPad :: Int -> a -> [a] -> [a] -> [a] {-# INLINE midPad #-} midPad i x xs ys = xs ++ replicate j x ++ ys