Work toward adding wiring
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
module Dodge.Room.AddTile
|
||||
where
|
||||
import Dodge.Room.Data
|
||||
import Tile
|
||||
import Geometry
|
||||
|
||||
import Control.Lens
|
||||
import Data.List
|
||||
import Data.Function
|
||||
|
||||
addTile :: Float -> Room -> Room
|
||||
addTile z r
|
||||
| not (null (_rmFloor r)) || null rp = r
|
||||
| otherwise = r & rmFloor .~ [makeTileFromPoly poly z]
|
||||
where
|
||||
rp = _rmPolys r
|
||||
poly = orderPolygon . convexHullSafe . nubBy ((==) `on` roundPoint2) $ concat rp
|
||||
@@ -1,7 +1,6 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
{- Rooms that contain two doors and a switch alternating both. -}
|
||||
module Dodge.Room.Airlock where
|
||||
import Dodge.Room.Data
|
||||
import Dodge.Placements
|
||||
import Dodge.Room.Foreground
|
||||
import Dodge.Default.Room
|
||||
|
||||
@@ -4,12 +4,12 @@ module Dodge.Room.Boss
|
||||
import Dodge.Data
|
||||
import Dodge.Default.Room
|
||||
import Dodge.Placements
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Room.Procedural
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Corridor
|
||||
import Dodge.Room.Path
|
||||
import Dodge.LevelGen.Data
|
||||
--import Dodge.LevelGen.Data
|
||||
import Dodge.Creature
|
||||
import Dodge.Creature.State.Data
|
||||
import Dodge.RandomHelp
|
||||
|
||||
@@ -4,7 +4,7 @@ Collections of rooms that branch into multiple paths.
|
||||
module Dodge.Room.Branch
|
||||
where
|
||||
--import Geometry
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Room.Door
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Procedural
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Dodge.Room.CheckConsistency
|
||||
where
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Graph
|
||||
|
||||
linksOnPath :: Room -> Bool
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module Dodge.Room.Corridor
|
||||
where
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
--import Dodge.Room.Foreground
|
||||
import Dodge.Default.Room
|
||||
--import Dodge.LevelGen.Data
|
||||
@@ -29,26 +29,6 @@ corridor = defaultRoom
|
||||
,((20,70), negate $ pi/6)
|
||||
,((20,10) ,pi)
|
||||
]
|
||||
{- | Debug drop-in copy of corridor -}
|
||||
corridorDebug :: Room
|
||||
corridorDebug = defaultRoom
|
||||
{ _rmPolys =
|
||||
[ rectNSWE 80 0 0 40
|
||||
--, [ (0,0), (0,200) , (200,100)]
|
||||
--, [ (0,0), (0,20) , (20,10)]
|
||||
]
|
||||
, _rmLinks = lnks
|
||||
, _rmPath = concatMap (doublePair . (,) (V2 20 60) . fst) lnks
|
||||
, _rmPmnts = []
|
||||
, _rmBound = [ rectNSWE 50 30 0 40 ]
|
||||
}
|
||||
where
|
||||
lnks = map (first toV2)
|
||||
[((20,70) ,0)
|
||||
,((20,70), pi/6)
|
||||
,((20,70), negate $ pi/6)
|
||||
,((20,10) ,pi)
|
||||
]
|
||||
corridorN :: Room
|
||||
corridorN = defaultRoom
|
||||
{ _rmPolys = [rectNSWE 80 0 0 40
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Room.Data
|
||||
where
|
||||
import Dodge.LevelGen.Data
|
||||
import Geometry.Data
|
||||
import Data.Tile
|
||||
|
||||
import Control.Monad.State
|
||||
import System.Random
|
||||
import Control.Lens
|
||||
--import qualified Data.IntMap.Strict as IM
|
||||
{-
|
||||
The '_rmPolys' list states 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;
|
||||
0 is for links going to another room to the north, pi/2 for links going to a room to the west, etc.
|
||||
TODO : Explain path, does it need both directions?
|
||||
Placement spots allow things to be put in the room during level generation.
|
||||
Room bounds between a new room and previously placed rooms are checked during level generation,
|
||||
assigning no bounds will allow rooms to overlap.
|
||||
-}
|
||||
data Room = Room
|
||||
{ _rmPolys :: [ [Point2] ]
|
||||
, _rmLinks :: [(Point2,Float)]
|
||||
, _rmPos :: [RoomPos]
|
||||
, _rmPath :: [(Point2, Point2)]
|
||||
, _rmPmnts :: [Placement]
|
||||
, _rmPartialPmnt :: Maybe ([Placement] -> Placement)
|
||||
, _rmExtendedPmnt :: Maybe Placement
|
||||
, _rmBound :: [ [Point2] ]
|
||||
, _rmFloor :: [Tile]
|
||||
, _rmName :: String
|
||||
, _rmShift :: (Point2, Float)
|
||||
, _rmViewpoints :: [Point2]
|
||||
, _rmRandPSs :: [State StdGen (Point2,Float)]
|
||||
, _rmLabel :: Maybe Int
|
||||
, _rmTakeFrom :: Maybe Int
|
||||
}
|
||||
data RoomPos
|
||||
= OutLink Int Point2 Float
|
||||
| InLink Point2 Float
|
||||
| PosInt Int Point2 Float
|
||||
| PosPl Point2 Float
|
||||
deriving (Eq,Ord,Show)
|
||||
makeLenses ''Room
|
||||
@@ -3,7 +3,6 @@ module Dodge.Room.Door
|
||||
where
|
||||
import Geometry
|
||||
import Dodge.Data
|
||||
import Dodge.Room.Data
|
||||
import Dodge.Default.Room
|
||||
import Dodge.Placements
|
||||
import Color
|
||||
@@ -32,7 +31,7 @@ switchDoorRoom = defaultRoom
|
||||
{ _rmPolys = [rectNSWE 40 0 0 40]
|
||||
, _rmLinks = lnks
|
||||
, _rmPath = [(V2 20 35,V2 20 5)]
|
||||
, _rmPartialPmnt = Just f
|
||||
, _rmPartPmnt = Just f
|
||||
-- door extends into side walls (for shadows as rendered 12/03)
|
||||
-- note no bounds
|
||||
}
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
--{-# LANGUAGE TupleSections #-}
|
||||
module Dodge.Room.Foreground
|
||||
where
|
||||
--import Dodge.Picture
|
||||
--import Dodge.Base
|
||||
import Picture
|
||||
import Geometry
|
||||
--import Geometry.Data
|
||||
import Geometry.Vector3D
|
||||
import Shape
|
||||
import Quaternion
|
||||
|
||||
@@ -16,7 +16,7 @@ module Dodge.Room.Link
|
||||
, setLastLinkToUsed
|
||||
) where
|
||||
import Dodge.LevelGen
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.RandomHelp
|
||||
import Geometry
|
||||
import Data.Tile
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
module Dodge.Room.Listed
|
||||
( roomList
|
||||
) where
|
||||
import Dodge.Room.Data
|
||||
|
||||
roomList :: [Room]
|
||||
roomList = []
|
||||
@@ -1,6 +1,6 @@
|
||||
module Dodge.Room.LockAndKeyList
|
||||
where
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Room.RoadBlock
|
||||
import Dodge.Room.Boss
|
||||
|
||||
|
||||
@@ -5,12 +5,12 @@ module Dodge.Room.LongDoor
|
||||
where
|
||||
import Dodge.Data
|
||||
import Dodge.Default.Room
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Placements
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Procedural
|
||||
--import Dodge.Layout.Tree.Either
|
||||
import Dodge.LevelGen.Data
|
||||
--import Dodge.LevelGen.Data
|
||||
import Dodge.LevelGen.Switch
|
||||
import Dodge.RandomHelp
|
||||
import Dodge.Creature.Inanimate
|
||||
|
||||
@@ -6,11 +6,11 @@ import Dodge.Data
|
||||
import Dodge.Creature
|
||||
import Dodge.Creature.State.Data
|
||||
--import Dodge.Creature.Inanimate
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Room.Procedural
|
||||
import Dodge.Room.Link
|
||||
import Dodge.RandomHelp
|
||||
import Dodge.LevelGen.Data
|
||||
--import Dodge.LevelGen.Data
|
||||
import Geometry.Data
|
||||
|
||||
import Control.Lens
|
||||
|
||||
@@ -5,7 +5,7 @@ module Dodge.Room.Path
|
||||
, createPathGrid
|
||||
)
|
||||
where
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.LevelGen.StaticWalls
|
||||
import Geometry
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ module Dodge.Room.Procedural
|
||||
) where
|
||||
import Dodge.Data
|
||||
import Dodge.Default.Wall
|
||||
import Dodge.Room.Data
|
||||
import Dodge.Placements
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Path
|
||||
|
||||
@@ -2,14 +2,13 @@
|
||||
module Dodge.Room.RoadBlock
|
||||
where
|
||||
import Geometry
|
||||
--import Dodge.Data
|
||||
import Dodge.Default.Room
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Placements
|
||||
import Dodge.Room.Corridor
|
||||
import Dodge.Room.Furniture
|
||||
import Dodge.LevelGen.Data
|
||||
--import Dodge.LevelGen.Data
|
||||
--import Dodge.Default.Wall
|
||||
--import Dodge.RandomHelp
|
||||
import Dodge.Creature
|
||||
|
||||
@@ -10,7 +10,7 @@ import Dodge.Default.Wall
|
||||
import Dodge.Layout.Tree.Polymorphic
|
||||
import Dodge.Layout.Tree.Either
|
||||
import Dodge.Placements
|
||||
import Dodge.Room.Data
|
||||
--import Dodge.LevelGen.Data
|
||||
import Dodge.Room.Procedural
|
||||
import Dodge.Room.Corridor
|
||||
import Dodge.Room.Link
|
||||
|
||||
+9
-11
@@ -1,5 +1,5 @@
|
||||
module Dodge.Room.Start where
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Room.Door
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Procedural
|
||||
@@ -7,7 +7,7 @@ import Dodge.Room.Foreground
|
||||
import Dodge.Room.Furniture
|
||||
import Dodge.Placements
|
||||
import Dodge.Layout.Tree.Polymorphic
|
||||
import Dodge.LevelGen.Data
|
||||
--import Dodge.LevelGen.Data
|
||||
import Geometry.Data
|
||||
import Color
|
||||
import Shape
|
||||
@@ -25,13 +25,8 @@ startRoom :: RandomGen g => State g (Tree (Either Room Room))
|
||||
startRoom = do
|
||||
w <- state $ randomR (100,400)
|
||||
h <- state $ randomR (200,400)
|
||||
let fground = sPS (V2 0 0) 0 $ PutForeground $
|
||||
girderV 40 20 10 (V2 0 (h/2)) (V2 w (h/2))
|
||||
treeFromPost [Left rezBox, Left door] . Right
|
||||
<$> randomiseOutLinks (shiftRoomBy (V2 (-20) (-20),0)
|
||||
$ roomRectAutoLinks w h & rmPmnts %~
|
||||
(
|
||||
[ fground
|
||||
let plmnts =
|
||||
[ sPS (V2 0 0) 0 $ PutForeground $ girderV 40 20 10 (V2 0 (h/2)) (V2 w (h/2))
|
||||
, mntLS jShape (V2 0 (h/3)) (V3 40 (h/3) 70)
|
||||
, tankSquareEmboss4 (dim orange) 50 (h-60)
|
||||
, tankSquare (dim orange) 50 50
|
||||
@@ -39,6 +34,9 @@ startRoom = do
|
||||
, lightSensor (V2 (0.8*w) (0.25*h)) 0
|
||||
, putLasTurret & plSpot .~ PS (V2 (0.8*w) (0.8*h)) 0
|
||||
, sps0 $ PutForeground $ colorSH orange $ pipePP 2 (V3 50 50 25) (V3 50 120 25)
|
||||
] ++
|
||||
)
|
||||
]
|
||||
treeFromPost [Left rezBox, Left door] . Right
|
||||
<$> randomiseOutLinks
|
||||
(shiftRoomBy (V2 (-20) (-20),0)
|
||||
$ roomRectAutoLinks w h & rmPmnts %~ (plmnts ++)
|
||||
)
|
||||
|
||||
@@ -3,10 +3,10 @@ module Dodge.Room.Teleport
|
||||
where
|
||||
import Dodge.Data
|
||||
import Dodge.Base
|
||||
import Dodge.Room.Data
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Room.Procedural
|
||||
import Dodge.Placements
|
||||
import Dodge.LevelGen.Data
|
||||
--import Dodge.LevelGen.Data
|
||||
import Geometry
|
||||
import Picture
|
||||
import Dodge.WorldEvent.Explosion
|
||||
|
||||
@@ -5,7 +5,6 @@ Typically dead ends.
|
||||
module Dodge.Room.Treasure
|
||||
where
|
||||
import Dodge.Data
|
||||
import Dodge.Room.Data
|
||||
import Dodge.Placements
|
||||
import Dodge.Default.Room
|
||||
import Dodge.LevelGen.Data
|
||||
|
||||
Reference in New Issue
Block a user