Add basic vocalizations to chase creatures
This commit is contained in:
@@ -42,6 +42,19 @@ corridorN = defaultRoom
|
||||
,(V2 20 10 ,pi)
|
||||
]
|
||||
pth = doublePair (V2 20 70,V2 20 10)
|
||||
corridorWallN :: Room
|
||||
corridorWallN = defaultRoom
|
||||
{ _rmPolys = [rectNSWE 70 0 0 40
|
||||
]
|
||||
, _rmLinks = lnks
|
||||
, _rmPath = pth
|
||||
, _rmPmnts = []
|
||||
, _rmBound = [ rectNSWE 50 30 0 40 ]
|
||||
}
|
||||
where lnks = [(V2 20 70 ,0)
|
||||
,(V2 20 10 ,pi)
|
||||
]
|
||||
pth = doublePair (V2 20 70,V2 20 10)
|
||||
|
||||
tEast :: Room
|
||||
tEast = defaultRoom
|
||||
|
||||
@@ -11,6 +11,7 @@ module Dodge.Room.Procedural
|
||||
) where
|
||||
import Dodge.Data
|
||||
import Dodge.Default.Wall
|
||||
import Dodge.PlacementSpot
|
||||
import Dodge.Placement.Instance
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Path
|
||||
@@ -55,6 +56,7 @@ roomRect x y xn yn = defaultRoom
|
||||
, _tileX = V2 1 0
|
||||
, _tileZ = 16
|
||||
} ]
|
||||
, _rmRandPSs = [psRandRanges (10,x-10) (10,y-10) (0,2*pi)]
|
||||
}
|
||||
where
|
||||
yd = (y - 40) / fromIntegral yn
|
||||
|
||||
@@ -1 +1,79 @@
|
||||
module Dodge.Room.RunPast where
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Data
|
||||
import Dodge.Default
|
||||
--import Dodge.Layout.Tree.Either
|
||||
import Dodge.RandomHelp
|
||||
import Dodge.Room.Door
|
||||
--import Dodge.Room.Room
|
||||
import Dodge.Room.Link
|
||||
import Dodge.Room.Procedural
|
||||
import Dodge.Room.Corridor
|
||||
--import Dodge.Room.Foreground
|
||||
--import Dodge.Room.RoadBlock
|
||||
import Dodge.PlacementSpot
|
||||
import Dodge.Placement.Instance
|
||||
import Dodge.Layout.Tree.Polymorphic
|
||||
import Dodge.Item.Random
|
||||
--import Dodge.Item.Weapon.SprayGuns
|
||||
--import Dodge.Item.Weapon.Grenade
|
||||
--import Dodge.LevelGen.Data
|
||||
import Geometry.Data
|
||||
--import Padding
|
||||
import Color
|
||||
--import Shape
|
||||
|
||||
import Data.Tree
|
||||
import Control.Monad.State
|
||||
import Control.Lens
|
||||
import System.Random
|
||||
--import qualified Data.IntMap.Strict as IM
|
||||
|
||||
horEdgeTest :: (Float -> Bool) -> ((Point2,Float) -> Bool)
|
||||
horEdgeTest t (V2 x _,_) = t x
|
||||
|
||||
|
||||
roomCritLS :: RandomGen g => State g LightSource
|
||||
roomCritLS = do
|
||||
col <- takeOne [0.5, 0.6]
|
||||
h <- takeOne [30,35]
|
||||
rad <- takeOne [300]
|
||||
return defaultLS
|
||||
{ _lsPos = V3 0 0 h
|
||||
, _lsIntensity = col
|
||||
, _lsRad = rad
|
||||
}
|
||||
|
||||
critRoom :: Room
|
||||
critRoom = corridorWallN
|
||||
{ _rmRandPSs = [psRandRanges (15,25) (30,45) (pi,2*pi)]
|
||||
}
|
||||
|
||||
runPastRoom :: RandomGen g => State g (Tree (Either Room Room))
|
||||
runPastRoom = do
|
||||
h <- state $ randomR (200,400::Float)
|
||||
theedgetest <- takeOne [horEdgeTest (<1), horEdgeTest (>39)]
|
||||
thels <- roomCritLS
|
||||
--theweapon <- join $ takeOne [randBlockBreakWeapon,return grenade]
|
||||
theweapon <- randBlockBreakWeapon
|
||||
cenroom <- changeLinkFrom theedgetest
|
||||
$ roomRectAutoLinks 40 h & rmPmnts .~ [plRRpt 0 (PutFlIt theweapon)]
|
||||
--let cenroom = filterSortOutLinksOn theedgetest ((\(V2 a b) -> (a,b)) . fst)
|
||||
let linkcor = critRoom {_rmPmnts =
|
||||
[ spanLS thels (V2 0 65) (V2 40 65)
|
||||
]
|
||||
}
|
||||
critroom = linkcor & rmPmnts %~ ( plRRpt 0 randC1 :)
|
||||
aswitchroom = corridorWallN
|
||||
{_rmExtPmnt = Just $ putLitButOnPosExtTrig red useLnkRoomPos
|
||||
,_rmLabel = Just 0
|
||||
,_rmPmnts = []
|
||||
}
|
||||
switchdoor = switchDoorRoom & rmTakeFrom ?~ 0
|
||||
n = length $ filter theedgetest $ _rmLinks cenroom
|
||||
controom = treeFromPost [Left switchdoor,Left linkcor] (Right door)
|
||||
critrooms :: [Tree (Either Room Room)]
|
||||
critrooms = treeFromPost [Left switchdoor] (Left critroom) :
|
||||
replicate (n-2) (treeFromPost [Left switchdoor] (Left linkcor))
|
||||
return $ treeFromTrunk [Left door]
|
||||
$ Node (Left cenroom) (controom : critrooms ++ [return $ Left aswitchroom])
|
||||
|
||||
+19
-5
@@ -1,5 +1,7 @@
|
||||
module Dodge.Room.Start where
|
||||
module Dodge.Room.Start
|
||||
where
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Room.RunPast
|
||||
import Dodge.Data
|
||||
import Dodge.Default
|
||||
import Dodge.Layout.Tree.Either
|
||||
@@ -27,12 +29,24 @@ import System.Random
|
||||
|
||||
startRoom :: RandomGen g => State g (Tree (Either Room Room))
|
||||
startRoom = join $ takeOne
|
||||
[ rezBoxesWp
|
||||
, rezBoxesThenWeaponRoom
|
||||
, rezBoxThenWeaponRoom
|
||||
, rezBoxesWpCrit
|
||||
[ -- rezBoxesWp
|
||||
-- , rezBoxesThenWeaponRoom
|
||||
-- , rezBoxThenWeaponRoom
|
||||
-- , rezBoxesWpCrit
|
||||
runPastStart
|
||||
]
|
||||
|
||||
runPastStart :: RandomGen g => State g (Tree (Either Room Room))
|
||||
runPastStart = do
|
||||
s <- rezBoxStart
|
||||
rp <- runPastRoom
|
||||
return $ s `appendEitherTree` [rp]
|
||||
|
||||
rezBoxStart :: RandomGen g => State g (Tree (Either Room Room))
|
||||
rezBoxStart = do
|
||||
ls <- rezColor
|
||||
return $ treeFromPost [Left $ rezBox ls] (Right door)
|
||||
|
||||
rezBox :: LightSource -> Room
|
||||
rezBox ls = roomRect 40 60 1 1
|
||||
& rmPmnts .~ [ sPS (V2 20 1) 0 $ PutLS ls]
|
||||
|
||||
Reference in New Issue
Block a user