Add basic vocalizations to chase creatures

This commit is contained in:
2021-11-18 01:46:37 +00:00
parent 5949ad2b3d
commit f6d5d5a201
34 changed files with 525 additions and 329 deletions
+78
View File
@@ -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])