Add basic vocalizations to chase creatures
This commit is contained in:
@@ -19,7 +19,6 @@ import Dodge.Base
|
|||||||
import Dodge.Zone
|
import Dodge.Zone
|
||||||
import Dodge.Base.Collide
|
import Dodge.Base.Collide
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
--import Dodge.WorldEvent
|
--import Dodge.WorldEvent
|
||||||
import Dodge.Inventory
|
import Dodge.Inventory
|
||||||
--import Dodge.LightSources
|
--import Dodge.LightSources
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import Dodge.Creature.State
|
|||||||
import Dodge.Creature.State.Data
|
import Dodge.Creature.State.Data
|
||||||
import Dodge.Item.Consumable
|
import Dodge.Item.Consumable
|
||||||
import Dodge.Picture.Layer
|
import Dodge.Picture.Layer
|
||||||
|
import Dodge.SoundLogic
|
||||||
--import Geometry
|
--import Geometry
|
||||||
import Picture
|
import Picture
|
||||||
--import Dodge.RandomHelp
|
--import Dodge.RandomHelp
|
||||||
@@ -40,7 +41,6 @@ chaseCrit = defaultCreature
|
|||||||
overrideMeleeCloseTargetR >=>
|
overrideMeleeCloseTargetR >=>
|
||||||
setViewPos >=>
|
setViewPos >=>
|
||||||
setMvPos >=>
|
setMvPos >=>
|
||||||
-- setTargetMv (pure . _crTarget) >=>
|
|
||||||
goToTarget >=>
|
goToTarget >=>
|
||||||
perceptionUpdate [0] >=>
|
perceptionUpdate [0] >=>
|
||||||
targetYouWhenCognizantR >=>
|
targetYouWhenCognizantR >=>
|
||||||
@@ -50,6 +50,7 @@ chaseCrit = defaultCreature
|
|||||||
, _crInv = IM.fromList [(0,medkit 200)]
|
, _crInv = IM.fromList [(0,medkit 200)]
|
||||||
, _crMeleeCooldown = 0
|
, _crMeleeCooldown = 0
|
||||||
, _crFaction = ColorFaction green
|
, _crFaction = ColorFaction green
|
||||||
|
, _crVocalization = Vocalization seagullBarkS 50 0
|
||||||
, _crMvType = ChaseMvType
|
, _crMvType = ChaseMvType
|
||||||
{ _mvSpeed = 3
|
{ _mvSpeed = 3
|
||||||
, _mvTurnRad = f
|
, _mvTurnRad = f
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import Dodge.Creature.Impulse.UseItem
|
|||||||
import Dodge.Creature.State.Data
|
import Dodge.Creature.State.Data
|
||||||
import Dodge.Creature.Stance.Data
|
import Dodge.Creature.Stance.Data
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Geometry
|
import Geometry
|
||||||
|
|
||||||
import qualified Data.IntMap.Strict as IM
|
import qualified Data.IntMap.Strict as IM
|
||||||
@@ -45,6 +44,7 @@ followImpulse
|
|||||||
-> Impulse
|
-> Impulse
|
||||||
-> (World -> World , Creature)
|
-> (World -> World , Creature)
|
||||||
followImpulse cr w imp = case imp of
|
followImpulse cr w imp = case imp of
|
||||||
|
Bark sid -> (soundStart (CrMouth cid) cpos sid Nothing, resetCrVocCoolDown cr)
|
||||||
Move p -> (id, crMvBy p cr)
|
Move p -> (id, crMvBy p cr)
|
||||||
MoveForward x -> (id, crMvForward x cr)
|
MoveForward x -> (id, crMvForward x cr)
|
||||||
Turn a -> (id, creatureTurn a cr)
|
Turn a -> (id, creatureTurn a cr)
|
||||||
@@ -85,3 +85,8 @@ followImpulse cr w imp = case imp of
|
|||||||
hitCr i = over (creatures . ix i . crState . crDamage) (addDam i)
|
hitCr i = over (creatures . ix i . crState . crDamage) (addDam i)
|
||||||
. soundStart (CrSound cid) cpos hitS Nothing
|
. soundStart (CrSound cid) cpos hitS Nothing
|
||||||
addDam i dams = Blunt 100 cpos (posFromID i) (posFromID i) : dams
|
addDam i dams = Blunt 100 cpos (posFromID i) (posFromID i) : dams
|
||||||
|
|
||||||
|
resetCrVocCoolDown :: Creature -> Creature
|
||||||
|
resetCrVocCoolDown cr = case cr ^? crVocalization . vcMaxCoolDown of
|
||||||
|
Just i -> cr & crVocalization . vcCoolDown .~ i
|
||||||
|
Nothing -> cr
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import Shape
|
|||||||
import Dodge.WorldEvent
|
import Dodge.WorldEvent
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.Data.SoundOrigin
|
import Dodge.Data.SoundOrigin
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
|
|
||||||
import System.Random
|
import System.Random
|
||||||
import Data.List
|
import Data.List
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import Dodge.Data
|
|||||||
import Dodge.Creature.Perception.Data
|
import Dodge.Creature.Perception.Data
|
||||||
import Dodge.Creature.Memory.Data
|
import Dodge.Creature.Memory.Data
|
||||||
import Dodge.Base.Collide
|
import Dodge.Base.Collide
|
||||||
|
import Dodge.SoundLogic
|
||||||
import Geometry.Vector
|
import Geometry.Vector
|
||||||
--import Geometry.Data
|
--import Geometry.Data
|
||||||
import Geometry.Data
|
import Geometry.Data
|
||||||
@@ -25,7 +26,8 @@ perceptionUpdate
|
|||||||
:: [Int] -- ^ List of creature ids that may direct attention and awareness
|
:: [Int] -- ^ List of creature ids that may direct attention and awareness
|
||||||
-> Creature
|
-> Creature
|
||||||
-> Reader World Creature
|
-> Reader World Creature
|
||||||
perceptionUpdate is cr = basicAttentionUpdate is cr >>= basicAwarenessUpdate
|
perceptionUpdate is cr = basicAttentionUpdate is cr
|
||||||
|
>>= basicAwarenessUpdate
|
||||||
>>= rememberSounds
|
>>= rememberSounds
|
||||||
|
|
||||||
{- | Update a creatures awareness based upon the creatures' current direction
|
{- | Update a creatures awareness based upon the creatures' current direction
|
||||||
@@ -33,11 +35,34 @@ perceptionUpdate is cr = basicAttentionUpdate is cr >>= basicAwarenessUpdate
|
|||||||
basicAwarenessUpdate
|
basicAwarenessUpdate
|
||||||
:: Creature -> Reader World Creature
|
:: Creature -> Reader World Creature
|
||||||
basicAwarenessUpdate cr = case _crAttentionDir $ _crPerception cr of
|
basicAwarenessUpdate cr = case _crAttentionDir $ _crPerception cr of
|
||||||
AttentiveTo is -> pure $ cr & crPerception . crAwarenessLevel
|
AttentiveTo is -> pure $ cr
|
||||||
%~ (IM.mapMaybe decreaseAwareness . IM.unionWith combineAwareness is)
|
& crPerception . crAwarenessLevel
|
||||||
|
%~ (IM.mapMaybe decreaseAwareness . IM.unionWith combineAwareness is)
|
||||||
|
& maybeBark
|
||||||
|
where
|
||||||
|
oldAwareness = _crAwarenessLevel $ _crPerception cr
|
||||||
|
newAwareness = (IM.mapMaybe decreaseAwareness . IM.unionWith combineAwareness is) oldAwareness
|
||||||
|
becomesCognizant = any isCognizant $ IM.unionWith cogRaised oldAwareness newAwareness
|
||||||
|
maybeBark | becomesCognizant = case vocalizationTest cr of
|
||||||
|
Just sid -> crActionPlan . crImpulse .~ [Bark sid]
|
||||||
|
Nothing -> id
|
||||||
|
| otherwise = id
|
||||||
Fixated i -> pure $ cr & crPerception . crAwarenessLevel
|
Fixated i -> pure $ cr & crPerception . crAwarenessLevel
|
||||||
%~ ( IM.insert i (Cognizant 10000) . IM.mapMaybe decreaseAwareness)
|
%~ ( IM.insert i (Cognizant 10000) . IM.mapMaybe decreaseAwareness)
|
||||||
|
|
||||||
|
vocalizationTest :: Creature -> Maybe SoundID
|
||||||
|
vocalizationTest cr = case cr ^? crVocalization . vcCoolDown of
|
||||||
|
Just 0 -> Just $ _vcSound $ _crVocalization cr
|
||||||
|
Nothing -> Nothing
|
||||||
|
|
||||||
|
cogRaised :: AwarenessLevel -> AwarenessLevel -> AwarenessLevel
|
||||||
|
cogRaised Suspicious{} Cognizant{} = Cognizant 100
|
||||||
|
cogRaised _ _ = Suspicious 0
|
||||||
|
|
||||||
|
isCognizant :: AwarenessLevel -> Bool
|
||||||
|
isCognizant Cognizant {} = True
|
||||||
|
isCognizant _ = False
|
||||||
|
|
||||||
combineAwareness :: AwarenessLevel -> AwarenessLevel -> AwarenessLevel
|
combineAwareness :: AwarenessLevel -> AwarenessLevel -> AwarenessLevel
|
||||||
combineAwareness (Suspicious x) (Suspicious y)
|
combineAwareness (Suspicious x) (Suspicious y)
|
||||||
| x + y < 10000 = Suspicious $ x + y
|
| x + y < 10000 = Suspicious $ x + y
|
||||||
|
|||||||
@@ -153,7 +153,6 @@ watchUpdateStratR fs cr = reader $ \w -> case cr ^? crActionPlan . crStrategy of
|
|||||||
& crActionPlan . crStrategy .~ listGuard (fs, \_ _ -> WatchAndWait) (w, cr) w cr
|
& crActionPlan . crStrategy .~ listGuard (fs, \_ _ -> WatchAndWait) (w, cr) w cr
|
||||||
_ -> cr
|
_ -> cr
|
||||||
|
|
||||||
|
|
||||||
listGuard :: ([(a -> Bool, b)] , b) -> a -> b
|
listGuard :: ([(a -> Bool, b)] , b) -> a -> b
|
||||||
listGuard ( (test,y):ps, z ) x
|
listGuard ( (test,y):ps, z ) x
|
||||||
| test x = y
|
| test x = y
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import Dodge.Creature.Stance.Data
|
|||||||
--import Dodge.Creature.Test
|
--import Dodge.Creature.Test
|
||||||
--import Dodge.Base
|
--import Dodge.Base
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Dodge.RandomHelp
|
import Dodge.RandomHelp
|
||||||
import Dodge.WorldEvent
|
import Dodge.WorldEvent
|
||||||
--import Dodge.WallCreatureCollisions
|
--import Dodge.WallCreatureCollisions
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import Dodge.Data
|
|||||||
import Dodge.Data.SoundOrigin
|
import Dodge.Data.SoundOrigin
|
||||||
import Dodge.Creature.Stance.Data
|
import Dodge.Creature.Stance.Data
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Geometry.Data
|
import Geometry.Data
|
||||||
import Sound.Data
|
import Sound.Data
|
||||||
|
|
||||||
|
|||||||
+10
-1
@@ -218,11 +218,19 @@ data Creature = Creature
|
|||||||
, _crMeleeCooldown :: !Int
|
, _crMeleeCooldown :: !Int
|
||||||
, _crPerception :: PerceptionState
|
, _crPerception :: PerceptionState
|
||||||
, _crMemory :: MemoryState
|
, _crMemory :: MemoryState
|
||||||
|
, _crVocalization :: Vocalization
|
||||||
, _crFaction :: Faction
|
, _crFaction :: Faction
|
||||||
, _crGroup :: CrGroup
|
, _crGroup :: CrGroup
|
||||||
, _crIntention :: Intention
|
, _crIntention :: Intention
|
||||||
, _crMvType :: CrMvType
|
, _crMvType :: CrMvType
|
||||||
}
|
}
|
||||||
|
data Vocalization
|
||||||
|
= Mute
|
||||||
|
| Vocalization
|
||||||
|
{_vcSound :: SoundID
|
||||||
|
,_vcMaxCoolDown :: Int
|
||||||
|
,_vcCoolDown :: Int
|
||||||
|
}
|
||||||
data Intention = Intention
|
data Intention = Intention
|
||||||
{ _targetCr :: Maybe Creature
|
{ _targetCr :: Maybe Creature
|
||||||
, _mvToPoint :: Maybe Point2
|
, _mvToPoint :: Maybe Point2
|
||||||
@@ -649,7 +657,7 @@ data Impulse
|
|||||||
| DropItem
|
| DropItem
|
||||||
-- | PickupNearby Int
|
-- | PickupNearby Int
|
||||||
-- | UseWorldObject Int
|
-- | UseWorldObject Int
|
||||||
-- | Bark -- placeholder for various communication types
|
| Bark SoundID -- placeholder for various communication types
|
||||||
-- | UseIntrinsicAbility
|
-- | UseIntrinsicAbility
|
||||||
| Melee Int
|
| Melee Int
|
||||||
| ChangePosture Posture
|
| ChangePosture Posture
|
||||||
@@ -820,3 +828,4 @@ makeLenses ''Machine
|
|||||||
makeLenses ''MachineType
|
makeLenses ''MachineType
|
||||||
makeLenses ''Zone
|
makeLenses ''Zone
|
||||||
makeLenses ''ItemDimension
|
makeLenses ''ItemDimension
|
||||||
|
makeLenses ''Vocalization
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ data SoundOrigin = InventorySound
|
|||||||
| BackgroundSound
|
| BackgroundSound
|
||||||
| OnceSound
|
| OnceSound
|
||||||
| CrSound Int
|
| CrSound Int
|
||||||
|
| CrMouth Int
|
||||||
| CrWeaponSound Int Int
|
| CrWeaponSound Int Int
|
||||||
| MachineSound Int
|
| MachineSound Int
|
||||||
| WallSound Int
|
| WallSound Int
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import Dodge.Creature.State.Data
|
|||||||
import Dodge.Creature.Perception.Data
|
import Dodge.Creature.Perception.Data
|
||||||
import Dodge.Creature.Memory.Data
|
import Dodge.Creature.Memory.Data
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Dodge.Picture.Layer
|
import Dodge.Picture.Layer
|
||||||
import Dodge.Wall.Delete
|
import Dodge.Wall.Delete
|
||||||
import Geometry
|
import Geometry
|
||||||
@@ -53,6 +52,7 @@ defaultCreature = Creature
|
|||||||
,_posture=AtEase
|
,_posture=AtEase
|
||||||
,_strideLength = 40
|
,_strideLength = 40
|
||||||
}
|
}
|
||||||
|
, _crVocalization = Mute
|
||||||
, _crActionPlan = ActionPlan [] [] WatchAndWait [LiveLongAndProsper]
|
, _crActionPlan = ActionPlan [] [] WatchAndWait [LiveLongAndProsper]
|
||||||
, _crPerception = defaultPerceptionState
|
, _crPerception = defaultPerceptionState
|
||||||
, _crMemory = defaultCreatureMemory
|
, _crMemory = defaultCreatureMemory
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import Dodge.LevelGen.Switch
|
|||||||
import Dodge.Item.Weapon.Launcher
|
import Dodge.Item.Weapon.Launcher
|
||||||
import Dodge.PlacementSpot
|
import Dodge.PlacementSpot
|
||||||
import Dodge.RoomPos
|
import Dodge.RoomPos
|
||||||
|
import Dodge.Room.RunPast
|
||||||
import MonadHelp
|
import MonadHelp
|
||||||
import Data.Tree
|
import Data.Tree
|
||||||
import Color
|
import Color
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import Dodge.Creature
|
|||||||
import Dodge.Story
|
import Dodge.Story
|
||||||
import Dodge.WorldEvent.Cloud
|
import Dodge.WorldEvent.Cloud
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Geometry.Data
|
import Geometry.Data
|
||||||
|
|
||||||
import System.Random
|
import System.Random
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import Dodge.Item.Data
|
|||||||
import Dodge.Picture.Layer
|
import Dodge.Picture.Layer
|
||||||
import Dodge.Default
|
import Dodge.Default
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Shape
|
import Shape
|
||||||
--import ShapePicture
|
--import ShapePicture
|
||||||
import Dodge.Item.Draw
|
import Dodge.Item.Draw
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import Dodge.Base
|
|||||||
import Dodge.Zone
|
import Dodge.Zone
|
||||||
import Dodge.Picture.Layer
|
import Dodge.Picture.Layer
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Dodge.Creature.Action
|
import Dodge.Creature.Action
|
||||||
import Dodge.WorldEvent
|
import Dodge.WorldEvent
|
||||||
import Dodge.Default
|
import Dodge.Default
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ autoGun = defaultAutoGun
|
|||||||
,('S', torqueBefore 0.05)
|
,('S', torqueBefore 0.05)
|
||||||
]
|
]
|
||||||
, withSoundForI autoBS 5
|
, withSoundForI autoBS 5
|
||||||
|
--, withSoundForI seagullChatterS 5
|
||||||
, useAmmo 1
|
, useAmmo 1
|
||||||
, withRandomDirI (autogunSpread/2)
|
, withRandomDirI (autogunSpread/2)
|
||||||
, withMuzFlareI
|
, withMuzFlareI
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import Dodge.Default
|
|||||||
import Dodge.Base
|
import Dodge.Base
|
||||||
import Dodge.Zone
|
import Dodge.Zone
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Dodge.Item.Attachment.Data
|
import Dodge.Item.Attachment.Data
|
||||||
import Dodge.Item.Draw
|
import Dodge.Item.Draw
|
||||||
import Dodge.Item.Weapon.InventoryDisplay
|
import Dodge.Item.Weapon.InventoryDisplay
|
||||||
|
|||||||
@@ -111,6 +111,9 @@ psPtCont ps pt = Placement ps pt Nothing
|
|||||||
sPS :: Point2 -> Float -> PSType -> Placement
|
sPS :: Point2 -> Float -> PSType -> Placement
|
||||||
sPS p a pt = Placement (PS p a) pt Nothing (const Nothing)
|
sPS p a pt = Placement (PS p a) pt Nothing (const Nothing)
|
||||||
|
|
||||||
|
plRRpt :: Int -> PSType -> Placement
|
||||||
|
plRRpt i pt = Placement (PSRoomRand i) pt Nothing (const Nothing)
|
||||||
|
|
||||||
jsps :: Point2 -> Float -> PSType -> Maybe Placement
|
jsps :: Point2 -> Float -> PSType -> Maybe Placement
|
||||||
jsps p a pst = Just $ Placement (PS p a) pst Nothing $ const Nothing
|
jsps p a pst = Just $ Placement (PS p a) pst Nothing $ const Nothing
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import Dodge.Data
|
|||||||
import Dodge.Default
|
import Dodge.Default
|
||||||
import Dodge.Data.SoundOrigin
|
import Dodge.Data.SoundOrigin
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Picture
|
import Picture
|
||||||
import ShapePicture
|
import ShapePicture
|
||||||
import Shape
|
import Shape
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import Dodge.Wall.Damage
|
|||||||
import Dodge.WorldEvent
|
import Dodge.WorldEvent
|
||||||
import Dodge.Particle.Bullet.Spawn
|
import Dodge.Particle.Bullet.Spawn
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Dodge.RandomHelp
|
import Dodge.RandomHelp
|
||||||
import Dodge.WorldEvent.Shockwave
|
import Dodge.WorldEvent.Shockwave
|
||||||
import Dodge.Creature.State.Data
|
import Dodge.Creature.State.Data
|
||||||
|
|||||||
@@ -66,3 +66,18 @@ putLitButOnPos col f subpl
|
|||||||
changeLight lsid = lightSources . ix lsid . lsIntensity .~ V3 0 0.5 0
|
changeLight lsid = lightSources . ix lsid . lsIntensity .~ V3 0 0.5 0
|
||||||
ls = defaultLS { _lsRad = 75 , _lsIntensity = V3 0.5 0 0 }
|
ls = defaultLS { _lsRad = 75 , _lsIntensity = V3 0.5 0 0 }
|
||||||
thePS = PSLnk f (const id) Nothing
|
thePS = PSLnk f (const id) Nothing
|
||||||
|
|
||||||
|
putLitButOnPosExtTrig :: Color -> (RoomPos -> Maybe PlacementSpot) -> Placement
|
||||||
|
putLitButOnPosExtTrig col f
|
||||||
|
= psPtCont thePS (PutTrigger (const False))
|
||||||
|
$ \tp -> Just $ plSpot .~ _plSpot tp $ mntLSOn aShape (Just col) ls 0 (V3 0 (-40) 40)
|
||||||
|
$ \plmnt -> let lsid = fromJust $ _plMID plmnt
|
||||||
|
in jps0 (PutButton (makeButton col (changeLight lsid . oneff (trigid tp)))
|
||||||
|
{_btPos = V2 0 (-1), _btRot = pi})
|
||||||
|
(const Nothing) <&> plSpot .~ _plSpot plmnt
|
||||||
|
where
|
||||||
|
trigid tp = fromJust $ _plMID tp
|
||||||
|
oneff tid = triggers . ix tid .~ const True
|
||||||
|
changeLight lsid = lightSources . ix lsid . lsIntensity .~ V3 0 0.5 0
|
||||||
|
ls = defaultLS { _lsRad = 75 , _lsIntensity = V3 0.5 0 0 }
|
||||||
|
thePS = PSLnk f (const id) Nothing
|
||||||
|
|||||||
@@ -107,6 +107,13 @@ spanLSLightI ls h a b = ps0j (PutLS ls {_lsPos = V3 x y h})
|
|||||||
where
|
where
|
||||||
V2 x y = 0.5 *.* (a +.+ b)
|
V2 x y = 0.5 *.* (a +.+ b)
|
||||||
|
|
||||||
|
spanLS :: LightSource -> Point2 -> Point2 -> Placement
|
||||||
|
spanLS ls a b = Placement (PS (V2 x y) 0) (PutLS ls) Nothing
|
||||||
|
$ const $ Just $ sps0 $ PutForeground $ thinHighBar h a b
|
||||||
|
where
|
||||||
|
V3 _ _ h = _lsPos ls + 5
|
||||||
|
V2 x y = 0.5 *.* (a +.+ b)
|
||||||
|
|
||||||
spanColLightI :: Point3 -> Float -> Point2 -> Point2 -> Placement
|
spanColLightI :: Point3 -> Float -> Point2 -> Point2 -> Placement
|
||||||
spanColLightI col h a b = ps0j (PutLS $ colorLightAt col (V3 x y (h-5)) 0)
|
spanColLightI col h a b = ps0j (PutLS $ colorLightAt col (V3 x y (h-5)) 0)
|
||||||
$ sps0 $ PutForeground $ thinHighBar h a b
|
$ sps0 $ PutForeground $ thinHighBar h a b
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import Picture
|
|||||||
import Geometry
|
import Geometry
|
||||||
import qualified IntMapHelp as IM
|
import qualified IntMapHelp as IM
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Dodge.Data.SoundOrigin
|
import Dodge.Data.SoundOrigin
|
||||||
|
|
||||||
import Data.List
|
import Data.List
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ module Dodge.PlacementSpot where
|
|||||||
import Dodge.LevelGen.Data
|
import Dodge.LevelGen.Data
|
||||||
import Geometry
|
import Geometry
|
||||||
|
|
||||||
|
import Control.Monad.State
|
||||||
|
import System.Random
|
||||||
|
|
||||||
-- TODO rename to any unused link facing out
|
-- TODO rename to any unused link facing out
|
||||||
anyLnkOutPS :: PlacementSpot
|
anyLnkOutPS :: PlacementSpot
|
||||||
anyLnkOutPS = PSLnk f (const id) Nothing
|
anyLnkOutPS = PSLnk f (const id) Nothing
|
||||||
@@ -21,3 +24,15 @@ anyLnkInPS x = PSLnk f (const id) Nothing
|
|||||||
where
|
where
|
||||||
f (UnusedLink v a) = Just $ PS (v -.- x *.* unitVectorAtAngle (a + 0.5 * pi)) (a+ pi)
|
f (UnusedLink v a) = Just $ PS (v -.- x *.* unitVectorAtAngle (a + 0.5 * pi)) (a+ pi)
|
||||||
f _ = Nothing
|
f _ = Nothing
|
||||||
|
|
||||||
|
useLnkRoomPos :: RoomPos -> Maybe PlacementSpot
|
||||||
|
useLnkRoomPos rp = case rp of
|
||||||
|
(UnusedLink (V2 x y) a) -> Just $ PS (V2 x y) a
|
||||||
|
_ -> Nothing
|
||||||
|
|
||||||
|
psRandRanges :: (Float,Float) -> (Float,Float) -> (Float,Float) -> State StdGen (Point2,Float)
|
||||||
|
psRandRanges xranges yranges aranges = do
|
||||||
|
x <- state $ randomR xranges
|
||||||
|
y <- state $ randomR yranges
|
||||||
|
a <- state $ randomR aranges
|
||||||
|
return (V2 x y,a)
|
||||||
|
|||||||
@@ -42,6 +42,19 @@ corridorN = defaultRoom
|
|||||||
,(V2 20 10 ,pi)
|
,(V2 20 10 ,pi)
|
||||||
]
|
]
|
||||||
pth = doublePair (V2 20 70,V2 20 10)
|
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 :: Room
|
||||||
tEast = defaultRoom
|
tEast = defaultRoom
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ module Dodge.Room.Procedural
|
|||||||
) where
|
) where
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.Default.Wall
|
import Dodge.Default.Wall
|
||||||
|
import Dodge.PlacementSpot
|
||||||
import Dodge.Placement.Instance
|
import Dodge.Placement.Instance
|
||||||
import Dodge.Room.Link
|
import Dodge.Room.Link
|
||||||
import Dodge.Room.Path
|
import Dodge.Room.Path
|
||||||
@@ -55,6 +56,7 @@ roomRect x y xn yn = defaultRoom
|
|||||||
, _tileX = V2 1 0
|
, _tileX = V2 1 0
|
||||||
, _tileZ = 16
|
, _tileZ = 16
|
||||||
} ]
|
} ]
|
||||||
|
, _rmRandPSs = [psRandRanges (10,x-10) (10,y-10) (0,2*pi)]
|
||||||
}
|
}
|
||||||
where
|
where
|
||||||
yd = (y - 40) / fromIntegral yn
|
yd = (y - 40) / fromIntegral yn
|
||||||
|
|||||||
@@ -1 +1,79 @@
|
|||||||
module Dodge.Room.RunPast where
|
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.LevelGen.Data
|
||||||
|
import Dodge.Room.RunPast
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.Default
|
import Dodge.Default
|
||||||
import Dodge.Layout.Tree.Either
|
import Dodge.Layout.Tree.Either
|
||||||
@@ -27,12 +29,24 @@ import System.Random
|
|||||||
|
|
||||||
startRoom :: RandomGen g => State g (Tree (Either Room Room))
|
startRoom :: RandomGen g => State g (Tree (Either Room Room))
|
||||||
startRoom = join $ takeOne
|
startRoom = join $ takeOne
|
||||||
[ rezBoxesWp
|
[ -- rezBoxesWp
|
||||||
, rezBoxesThenWeaponRoom
|
-- , rezBoxesThenWeaponRoom
|
||||||
, rezBoxThenWeaponRoom
|
-- , rezBoxThenWeaponRoom
|
||||||
, rezBoxesWpCrit
|
-- , 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 :: LightSource -> Room
|
||||||
rezBox ls = roomRect 40 60 1 1
|
rezBox ls = roomRect 40 60 1 1
|
||||||
& rmPmnts .~ [ sPS (V2 20 1) 0 $ PutLS ls]
|
& rmPmnts .~ [ sPS (V2 20 1) 0 $ PutLS ls]
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ module Dodge.SoundLogic (
|
|||||||
, haltSound
|
, haltSound
|
||||||
, resumeSound
|
, resumeSound
|
||||||
, pauseSound
|
, pauseSound
|
||||||
|
, module Dodge.SoundLogic.LoadSound
|
||||||
) where
|
) where
|
||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.Data.SoundOrigin
|
import Dodge.Data.SoundOrigin
|
||||||
|
|||||||
@@ -0,0 +1,317 @@
|
|||||||
|
-- generated at 2021-11-18 01:13:04.234031373 UTC
|
||||||
|
module Dodge.SoundLogic.ExternallyGeneratedSounds where
|
||||||
|
import Sound.Data
|
||||||
|
soundToVol :: SoundID -> Float
|
||||||
|
soundToVol v = case _getSoundID v of
|
||||||
|
0 -> 5000
|
||||||
|
1 -> 8000
|
||||||
|
2 -> 8000
|
||||||
|
3 -> 5000
|
||||||
|
4 -> 5000
|
||||||
|
5 -> 5000
|
||||||
|
6 -> 3000
|
||||||
|
7 -> 3000
|
||||||
|
8 -> 4000
|
||||||
|
9 -> 5000
|
||||||
|
10 -> 10000
|
||||||
|
11 -> 8000
|
||||||
|
12 -> 8000
|
||||||
|
13 -> 8000
|
||||||
|
14 -> 8000
|
||||||
|
15 -> 10000
|
||||||
|
16 -> 3000
|
||||||
|
17 -> 4000
|
||||||
|
18 -> 5000
|
||||||
|
19 -> 5000
|
||||||
|
20 -> 20000
|
||||||
|
21 -> 4000
|
||||||
|
22 -> 10000
|
||||||
|
23 -> 8000
|
||||||
|
24 -> 4000
|
||||||
|
25 -> 2000
|
||||||
|
26 -> 6000
|
||||||
|
27 -> 500
|
||||||
|
28 -> 5000
|
||||||
|
29 -> 8000
|
||||||
|
30 -> 8000
|
||||||
|
31 -> 8000
|
||||||
|
32 -> 5000
|
||||||
|
33 -> 8000
|
||||||
|
34 -> 4000
|
||||||
|
35 -> 3000
|
||||||
|
36 -> 8000
|
||||||
|
37 -> 2000
|
||||||
|
38 -> 10000
|
||||||
|
39 -> 5000
|
||||||
|
40 -> 2000
|
||||||
|
41 -> 3000
|
||||||
|
42 -> 12000
|
||||||
|
43 -> 5000
|
||||||
|
44 -> 10000
|
||||||
|
45 -> 12000
|
||||||
|
46 -> 2000
|
||||||
|
47 -> 3000
|
||||||
|
48 -> 8000
|
||||||
|
49 -> 5000
|
||||||
|
50 -> 2000
|
||||||
|
51 -> 3000
|
||||||
|
52 -> 10000
|
||||||
|
53 -> 10000
|
||||||
|
54 -> 3000
|
||||||
|
55 -> 15000
|
||||||
|
56 -> 10000
|
||||||
|
57 -> 3000
|
||||||
|
58 -> 15000
|
||||||
|
59 -> 10000
|
||||||
|
60 -> 8000
|
||||||
|
_ -> 50
|
||||||
|
soundToOnomato :: SoundID -> String
|
||||||
|
soundToOnomato v = case _getSoundID v of
|
||||||
|
0 -> "HNH"
|
||||||
|
1 -> "CRNKL"
|
||||||
|
2 -> "ZMM"
|
||||||
|
3 -> "WE-OH"
|
||||||
|
4 -> "UGGAUGGA"
|
||||||
|
5 -> "KRTNKL"
|
||||||
|
6 -> "DWAAH"
|
||||||
|
7 -> "BWAH"
|
||||||
|
8 -> "TIPTOP"
|
||||||
|
9 -> "TINKLE"
|
||||||
|
10 -> "TATATA"
|
||||||
|
11 -> "CRSK"
|
||||||
|
12 -> "CRNK"
|
||||||
|
13 -> "TAKH"
|
||||||
|
14 -> "CRUNK"
|
||||||
|
15 -> "SCREE"
|
||||||
|
16 -> "TNKTNKTNK"
|
||||||
|
17 -> "TIPTAP"
|
||||||
|
18 -> "WRR"
|
||||||
|
19 -> "HSS"
|
||||||
|
20 -> "BOOM"
|
||||||
|
21 -> "CLNK"
|
||||||
|
22 -> "BRAP"
|
||||||
|
23 -> "CRSNK"
|
||||||
|
24 -> "TAPP"
|
||||||
|
25 -> "BLIH"
|
||||||
|
26 -> "TAPTIP"
|
||||||
|
27 -> "CLICK"
|
||||||
|
28 -> "FWUMP"
|
||||||
|
29 -> "RINGGG"
|
||||||
|
30 -> "BRAP"
|
||||||
|
31 -> "CRUMPLE"
|
||||||
|
32 -> "TRINKL"
|
||||||
|
33 -> "TAK"
|
||||||
|
34 -> "SMACK"
|
||||||
|
35 -> "DRR"
|
||||||
|
36 -> "CRASH"
|
||||||
|
37 -> "SWSH"
|
||||||
|
38 -> "CRAKLE"
|
||||||
|
39 -> "CRTINK"
|
||||||
|
40 -> "FHP"
|
||||||
|
41 -> "CHPCHPCHP"
|
||||||
|
42 -> "BRPBRPBRP"
|
||||||
|
43 -> "CHNKCHNKCHUNK"
|
||||||
|
44 -> "WRRR"
|
||||||
|
45 -> "BRDBRDBRD"
|
||||||
|
46 -> "PHF"
|
||||||
|
47 -> "BWAAH"
|
||||||
|
48 -> "BEP"
|
||||||
|
49 -> "HSSS"
|
||||||
|
50 -> "SHUHP"
|
||||||
|
51 -> "THUD"
|
||||||
|
52 -> "WHSSH"
|
||||||
|
53 -> "BRAHCHCH"
|
||||||
|
54 -> "TIP"
|
||||||
|
55 -> "BANGG"
|
||||||
|
56 -> "ZHM"
|
||||||
|
57 -> "TAP"
|
||||||
|
58 -> "BANG"
|
||||||
|
59 -> "CHUGUGUG"
|
||||||
|
60 -> "CRISH"
|
||||||
|
_ -> error "unitialised sound"
|
||||||
|
soundPathList :: [String]
|
||||||
|
soundPathList =
|
||||||
|
[ "grunt.HNH.5000.wav"
|
||||||
|
, "glassShat2.CRNKL.8000.wav"
|
||||||
|
, "buzz.ZMM.8000.wav"
|
||||||
|
, "seagullWhistle.WE-OH.5000.wav"
|
||||||
|
, "seagullBark.UGGAUGGA.5000.wav"
|
||||||
|
, "smallGlass2.KRTNKL.5000.wav"
|
||||||
|
, "skwareFadeTwoSec.DWAAH.3000.wav"
|
||||||
|
, "sineRaisePitchOneSec.BWAH.3000.wav"
|
||||||
|
, "twoStepSlow.TIPTOP.4000.wav"
|
||||||
|
, "smallGlass4.TINKLE.5000.wav"
|
||||||
|
, "autoB.TATATA.10000.wav"
|
||||||
|
, "glassShat4.CRSK.8000.wav"
|
||||||
|
, "glassShat3.CRNK.8000.wav"
|
||||||
|
, "tap2.TAKH.8000.wav"
|
||||||
|
, "impact2.CRUNK.8000.wav"
|
||||||
|
, "tone440sawtooth.SCREE.10000.wav"
|
||||||
|
, "reload.TNKTNKTNK.3000.wav"
|
||||||
|
, "twoStep.TIPTAP.4000.wav"
|
||||||
|
, "fire.WRR.5000.wav"
|
||||||
|
, "foamSprayFadeOut.HSS.5000.wav"
|
||||||
|
, "explosion.BOOM.20000.wav"
|
||||||
|
, "tapQuiet.CLNK.4000.wav"
|
||||||
|
, "autoGun.BRAP.10000.wav"
|
||||||
|
, "glassShat1.CRSNK.8000.wav"
|
||||||
|
, "foot3.TAPP.4000.wav"
|
||||||
|
, "heal.BLIH.2000.wav"
|
||||||
|
, "twoStep1.TAPTIP.6000.wav"
|
||||||
|
, "click1.CLICK.500.wav"
|
||||||
|
, "tap4.FWUMP.5000.wav"
|
||||||
|
, "tinitus.RINGGG.8000.wav"
|
||||||
|
, "tap3.BRAP.8000.wav"
|
||||||
|
, "impact3.CRUMPLE.8000.wav"
|
||||||
|
, "smallGlass1.TRINKL.5000.wav"
|
||||||
|
, "tap1.TAK.8000.wav"
|
||||||
|
, "hit1.SMACK.4000.wav"
|
||||||
|
, "slideDoor.DRR.3000.wav"
|
||||||
|
, "impact1.CRASH.8000.wav"
|
||||||
|
, "knife.SWSH.2000.wav"
|
||||||
|
, "elecCrackle.CRAKLE.10000.wav"
|
||||||
|
, "smallGlass3.CRTINK.5000.wav"
|
||||||
|
, "whiteNoiseFadeIn.FHP.2000.wav"
|
||||||
|
, "reload1.CHPCHPCHP.3000.wav"
|
||||||
|
, "mini.BRPBRPBRP.12000.wav"
|
||||||
|
, "crankSlow.CHNKCHNKCHUNK.5000.wav"
|
||||||
|
, "fireLoud.WRRR.10000.wav"
|
||||||
|
, "mini1.BRDBRDBRD.12000.wav"
|
||||||
|
, "whiteNoiseFadeOut.PHF.2000.wav"
|
||||||
|
, "sineRaisePitchTwoSec.BWAAH.3000.wav"
|
||||||
|
, "tone440.BEP.8000.wav"
|
||||||
|
, "foamSprayLoop.HSSS.5000.wav"
|
||||||
|
, "pickUp.SHUHP.2000.wav"
|
||||||
|
, "hit.THUD.3000.wav"
|
||||||
|
, "missileLaunch.WHSSH.10000.wav"
|
||||||
|
, "shotgun.BRAHCHCH.10000.wav"
|
||||||
|
, "foot1.TIP.3000.wav"
|
||||||
|
, "bangEcho.BANGG.15000.wav"
|
||||||
|
, "tele.ZHM.10000.wav"
|
||||||
|
, "foot2.TAP.3000.wav"
|
||||||
|
, "bang.BANG.15000.wav"
|
||||||
|
, "seagullChatter.CHUGUGUG.10000.wav"
|
||||||
|
, "impact4.CRISH.8000.wav"
|
||||||
|
]
|
||||||
|
gruntS :: SoundID
|
||||||
|
gruntS = SoundID 0
|
||||||
|
glassShat2S :: SoundID
|
||||||
|
glassShat2S = SoundID 1
|
||||||
|
buzzS :: SoundID
|
||||||
|
buzzS = SoundID 2
|
||||||
|
seagullWhistleS :: SoundID
|
||||||
|
seagullWhistleS = SoundID 3
|
||||||
|
seagullBarkS :: SoundID
|
||||||
|
seagullBarkS = SoundID 4
|
||||||
|
smallGlass2S :: SoundID
|
||||||
|
smallGlass2S = SoundID 5
|
||||||
|
skwareFadeTwoSecS :: SoundID
|
||||||
|
skwareFadeTwoSecS = SoundID 6
|
||||||
|
sineRaisePitchOneSecS :: SoundID
|
||||||
|
sineRaisePitchOneSecS = SoundID 7
|
||||||
|
twoStepSlowS :: SoundID
|
||||||
|
twoStepSlowS = SoundID 8
|
||||||
|
smallGlass4S :: SoundID
|
||||||
|
smallGlass4S = SoundID 9
|
||||||
|
autoBS :: SoundID
|
||||||
|
autoBS = SoundID 10
|
||||||
|
glassShat4S :: SoundID
|
||||||
|
glassShat4S = SoundID 11
|
||||||
|
glassShat3S :: SoundID
|
||||||
|
glassShat3S = SoundID 12
|
||||||
|
tap2S :: SoundID
|
||||||
|
tap2S = SoundID 13
|
||||||
|
impact2S :: SoundID
|
||||||
|
impact2S = SoundID 14
|
||||||
|
tone440sawtoothS :: SoundID
|
||||||
|
tone440sawtoothS = SoundID 15
|
||||||
|
reloadS :: SoundID
|
||||||
|
reloadS = SoundID 16
|
||||||
|
twoStepS :: SoundID
|
||||||
|
twoStepS = SoundID 17
|
||||||
|
fireS :: SoundID
|
||||||
|
fireS = SoundID 18
|
||||||
|
foamSprayFadeOutS :: SoundID
|
||||||
|
foamSprayFadeOutS = SoundID 19
|
||||||
|
explosionS :: SoundID
|
||||||
|
explosionS = SoundID 20
|
||||||
|
tapQuietS :: SoundID
|
||||||
|
tapQuietS = SoundID 21
|
||||||
|
autoGunS :: SoundID
|
||||||
|
autoGunS = SoundID 22
|
||||||
|
glassShat1S :: SoundID
|
||||||
|
glassShat1S = SoundID 23
|
||||||
|
foot3S :: SoundID
|
||||||
|
foot3S = SoundID 24
|
||||||
|
healS :: SoundID
|
||||||
|
healS = SoundID 25
|
||||||
|
twoStep1S :: SoundID
|
||||||
|
twoStep1S = SoundID 26
|
||||||
|
click1S :: SoundID
|
||||||
|
click1S = SoundID 27
|
||||||
|
tap4S :: SoundID
|
||||||
|
tap4S = SoundID 28
|
||||||
|
tinitusS :: SoundID
|
||||||
|
tinitusS = SoundID 29
|
||||||
|
tap3S :: SoundID
|
||||||
|
tap3S = SoundID 30
|
||||||
|
impact3S :: SoundID
|
||||||
|
impact3S = SoundID 31
|
||||||
|
smallGlass1S :: SoundID
|
||||||
|
smallGlass1S = SoundID 32
|
||||||
|
tap1S :: SoundID
|
||||||
|
tap1S = SoundID 33
|
||||||
|
hit1S :: SoundID
|
||||||
|
hit1S = SoundID 34
|
||||||
|
slideDoorS :: SoundID
|
||||||
|
slideDoorS = SoundID 35
|
||||||
|
impact1S :: SoundID
|
||||||
|
impact1S = SoundID 36
|
||||||
|
knifeS :: SoundID
|
||||||
|
knifeS = SoundID 37
|
||||||
|
elecCrackleS :: SoundID
|
||||||
|
elecCrackleS = SoundID 38
|
||||||
|
smallGlass3S :: SoundID
|
||||||
|
smallGlass3S = SoundID 39
|
||||||
|
whiteNoiseFadeInS :: SoundID
|
||||||
|
whiteNoiseFadeInS = SoundID 40
|
||||||
|
reload1S :: SoundID
|
||||||
|
reload1S = SoundID 41
|
||||||
|
miniS :: SoundID
|
||||||
|
miniS = SoundID 42
|
||||||
|
crankSlowS :: SoundID
|
||||||
|
crankSlowS = SoundID 43
|
||||||
|
fireLoudS :: SoundID
|
||||||
|
fireLoudS = SoundID 44
|
||||||
|
mini1S :: SoundID
|
||||||
|
mini1S = SoundID 45
|
||||||
|
whiteNoiseFadeOutS :: SoundID
|
||||||
|
whiteNoiseFadeOutS = SoundID 46
|
||||||
|
sineRaisePitchTwoSecS :: SoundID
|
||||||
|
sineRaisePitchTwoSecS = SoundID 47
|
||||||
|
tone440S :: SoundID
|
||||||
|
tone440S = SoundID 48
|
||||||
|
foamSprayLoopS :: SoundID
|
||||||
|
foamSprayLoopS = SoundID 49
|
||||||
|
pickUpS :: SoundID
|
||||||
|
pickUpS = SoundID 50
|
||||||
|
hitS :: SoundID
|
||||||
|
hitS = SoundID 51
|
||||||
|
missileLaunchS :: SoundID
|
||||||
|
missileLaunchS = SoundID 52
|
||||||
|
shotgunS :: SoundID
|
||||||
|
shotgunS = SoundID 53
|
||||||
|
foot1S :: SoundID
|
||||||
|
foot1S = SoundID 54
|
||||||
|
bangEchoS :: SoundID
|
||||||
|
bangEchoS = SoundID 55
|
||||||
|
teleS :: SoundID
|
||||||
|
teleS = SoundID 56
|
||||||
|
foot2S :: SoundID
|
||||||
|
foot2S = SoundID 57
|
||||||
|
bangS :: SoundID
|
||||||
|
bangS = SoundID 58
|
||||||
|
seagullChatterS :: SoundID
|
||||||
|
seagullChatterS = SoundID 59
|
||||||
|
impact4S :: SoundID
|
||||||
|
impact4S = SoundID 60
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
module Dodge.SoundLogic.LoadSound
|
module Dodge.SoundLogic.LoadSound
|
||||||
where
|
( module Dodge.SoundLogic.LoadSound
|
||||||
import Sound.Data
|
, module Dodge.SoundLogic.ExternallyGeneratedSounds
|
||||||
|
) where
|
||||||
|
--import Sound.Data
|
||||||
|
import Dodge.SoundLogic.ExternallyGeneratedSounds
|
||||||
|
|
||||||
import qualified Data.IntMap.Strict as IM
|
import qualified Data.IntMap.Strict as IM
|
||||||
import qualified SDL.Mixer as Mix
|
import qualified SDL.Mixer as Mix
|
||||||
@@ -15,306 +18,6 @@ loadSounds = do
|
|||||||
Mix.openAudio Mix.defaultAudio 128
|
Mix.openAudio Mix.defaultAudio 128
|
||||||
fmap IM.fromList $ mapM loadSound $ zip [0..] soundPathList
|
fmap IM.fromList $ mapM loadSound $ zip [0..] soundPathList
|
||||||
|
|
||||||
soundToVol :: SoundID -> Float
|
|
||||||
soundToVol v = case _getSoundID v of
|
|
||||||
0 -> 5000
|
|
||||||
1 -> 8000
|
|
||||||
2 -> 8000
|
|
||||||
3 -> 5000
|
|
||||||
4 -> 3000
|
|
||||||
5 -> 3000
|
|
||||||
6 -> 4000
|
|
||||||
7 -> 5000
|
|
||||||
8 -> 10000
|
|
||||||
9 -> 8000
|
|
||||||
10 -> 8000
|
|
||||||
11 -> 8000
|
|
||||||
12 -> 8000
|
|
||||||
13 -> 10000
|
|
||||||
14 -> 3000
|
|
||||||
15 -> 4000
|
|
||||||
16 -> 5000
|
|
||||||
17 -> 5000
|
|
||||||
18 -> 20000
|
|
||||||
19 -> 4000
|
|
||||||
20 -> 10000
|
|
||||||
21 -> 8000
|
|
||||||
22 -> 4000
|
|
||||||
23 -> 2000
|
|
||||||
24 -> 6000
|
|
||||||
25 -> 500
|
|
||||||
26 -> 5000
|
|
||||||
27 -> 8000
|
|
||||||
28 -> 8000
|
|
||||||
29 -> 8000
|
|
||||||
30 -> 5000
|
|
||||||
31 -> 8000
|
|
||||||
32 -> 4000
|
|
||||||
33 -> 3000
|
|
||||||
34 -> 8000
|
|
||||||
35 -> 2000
|
|
||||||
36 -> 10000
|
|
||||||
37 -> 5000
|
|
||||||
38 -> 2000
|
|
||||||
39 -> 3000
|
|
||||||
40 -> 12000
|
|
||||||
41 -> 5000
|
|
||||||
42 -> 10000
|
|
||||||
43 -> 12000
|
|
||||||
44 -> 2000
|
|
||||||
45 -> 3000
|
|
||||||
46 -> 8000
|
|
||||||
47 -> 5000
|
|
||||||
48 -> 2000
|
|
||||||
49 -> 3000
|
|
||||||
50 -> 10000
|
|
||||||
51 -> 10000
|
|
||||||
52 -> 3000
|
|
||||||
53 -> 15000
|
|
||||||
54 -> 10000
|
|
||||||
55 -> 3000
|
|
||||||
56 -> 15000
|
|
||||||
57 -> 8000
|
|
||||||
_ -> 50
|
|
||||||
soundToOnomato :: SoundID -> String
|
|
||||||
soundToOnomato v = case _getSoundID v of
|
|
||||||
0 -> "HNH"
|
|
||||||
1 -> "CRNKL"
|
|
||||||
2 -> "ZMM"
|
|
||||||
3 -> "KRTNKL"
|
|
||||||
4 -> "DWAAH"
|
|
||||||
5 -> "BWAH"
|
|
||||||
6 -> "TIPTOP"
|
|
||||||
7 -> "TINKLE"
|
|
||||||
8 -> "TATATA"
|
|
||||||
9 -> "CRSK"
|
|
||||||
10 -> "CRNK"
|
|
||||||
11 -> "TAKH"
|
|
||||||
12 -> "CRUNK"
|
|
||||||
13 -> "SCREE"
|
|
||||||
14 -> "TNKTNKTNK"
|
|
||||||
15 -> "TIPTAP"
|
|
||||||
16 -> "WRR"
|
|
||||||
17 -> "HSS"
|
|
||||||
18 -> "BOOM"
|
|
||||||
19 -> "CLNK"
|
|
||||||
20 -> "BRAP"
|
|
||||||
21 -> "CRSNK"
|
|
||||||
22 -> "TAPP"
|
|
||||||
23 -> "BLIH"
|
|
||||||
24 -> "TAPTIP"
|
|
||||||
25 -> "CLICK"
|
|
||||||
26 -> "FWUMP"
|
|
||||||
27 -> "RINGGG"
|
|
||||||
28 -> "BRAP"
|
|
||||||
29 -> "CRUMPLE"
|
|
||||||
30 -> "TRINKL"
|
|
||||||
31 -> "TAK"
|
|
||||||
32 -> "SMACK"
|
|
||||||
33 -> "DRR"
|
|
||||||
34 -> "CRASH"
|
|
||||||
35 -> "SWSH"
|
|
||||||
36 -> "CRAKLE"
|
|
||||||
37 -> "CRTINK"
|
|
||||||
38 -> "FHP"
|
|
||||||
39 -> "CHPCHPCHP"
|
|
||||||
40 -> "BRPBRPBRP"
|
|
||||||
41 -> "CHNKCHNKCHUNK"
|
|
||||||
42 -> "WRRR"
|
|
||||||
43 -> "BRDBRDBRD"
|
|
||||||
44 -> "PHF"
|
|
||||||
45 -> "BWAAH"
|
|
||||||
46 -> "BEP"
|
|
||||||
47 -> "HSSS"
|
|
||||||
48 -> "SHUHP"
|
|
||||||
49 -> "THUD"
|
|
||||||
50 -> "WHSSH"
|
|
||||||
51 -> "BRAHCHCH"
|
|
||||||
52 -> "TIP"
|
|
||||||
53 -> "BANGG"
|
|
||||||
54 -> "ZHM"
|
|
||||||
55 -> "TAP"
|
|
||||||
56 -> "BANG"
|
|
||||||
57 -> "CRISH"
|
|
||||||
_ -> error "unitialised sound"
|
|
||||||
soundPathList :: [String]
|
|
||||||
soundPathList =
|
|
||||||
[ "grunt.HNH.5000.wav"
|
|
||||||
, "glassShat2.CRNKL.8000.wav"
|
|
||||||
, "buzz.ZMM.8000.wav"
|
|
||||||
, "smallGlass2.KRTNKL.5000.wav"
|
|
||||||
, "skwareFadeTwoSec.DWAAH.3000.wav"
|
|
||||||
, "sineRaisePitchOneSec.BWAH.3000.wav"
|
|
||||||
, "twoStepSlow.TIPTOP.4000.wav"
|
|
||||||
, "smallGlass4.TINKLE.5000.wav"
|
|
||||||
, "autoB.TATATA.10000.wav"
|
|
||||||
, "glassShat4.CRSK.8000.wav"
|
|
||||||
, "glassShat3.CRNK.8000.wav"
|
|
||||||
, "tap2.TAKH.8000.wav"
|
|
||||||
, "impact2.CRUNK.8000.wav"
|
|
||||||
, "tone440sawtooth.SCREE.10000.wav"
|
|
||||||
, "reload.TNKTNKTNK.3000.wav"
|
|
||||||
, "twoStep.TIPTAP.4000.wav"
|
|
||||||
, "fire.WRR.5000.wav"
|
|
||||||
, "foamSprayFadeOut.HSS.5000.wav"
|
|
||||||
, "explosion.BOOM.20000.wav"
|
|
||||||
, "tapQuiet.CLNK.4000.wav"
|
|
||||||
, "autoGun.BRAP.10000.wav"
|
|
||||||
, "glassShat1.CRSNK.8000.wav"
|
|
||||||
, "foot3.TAPP.4000.wav"
|
|
||||||
, "heal.BLIH.2000.wav"
|
|
||||||
, "twoStep1.TAPTIP.6000.wav"
|
|
||||||
, "click1.CLICK.500.wav"
|
|
||||||
, "tap4.FWUMP.5000.wav"
|
|
||||||
, "tinitus.RINGGG.8000.wav"
|
|
||||||
, "tap3.BRAP.8000.wav"
|
|
||||||
, "impact3.CRUMPLE.8000.wav"
|
|
||||||
, "smallGlass1.TRINKL.5000.wav"
|
|
||||||
, "tap1.TAK.8000.wav"
|
|
||||||
, "hit1.SMACK.4000.wav"
|
|
||||||
, "slideDoor.DRR.3000.wav"
|
|
||||||
, "impact1.CRASH.8000.wav"
|
|
||||||
, "knife.SWSH.2000.wav"
|
|
||||||
, "elecCrackle.CRAKLE.10000.wav"
|
|
||||||
, "smallGlass3.CRTINK.5000.wav"
|
|
||||||
, "whiteNoiseFadeIn.FHP.2000.wav"
|
|
||||||
, "reload1.CHPCHPCHP.3000.wav"
|
|
||||||
, "mini.BRPBRPBRP.12000.wav"
|
|
||||||
, "crankSlow.CHNKCHNKCHUNK.5000.wav"
|
|
||||||
, "fireLoud.WRRR.10000.wav"
|
|
||||||
, "mini1.BRDBRDBRD.12000.wav"
|
|
||||||
, "whiteNoiseFadeOut.PHF.2000.wav"
|
|
||||||
, "sineRaisePitchTwoSec.BWAAH.3000.wav"
|
|
||||||
, "tone440.BEP.8000.wav"
|
|
||||||
, "foamSprayLoop.HSSS.5000.wav"
|
|
||||||
, "pickUp.SHUHP.2000.wav"
|
|
||||||
, "hit.THUD.3000.wav"
|
|
||||||
, "missileLaunch.WHSSH.10000.wav"
|
|
||||||
, "shotgun.BRAHCHCH.10000.wav"
|
|
||||||
, "foot1.TIP.3000.wav"
|
|
||||||
, "bangEcho.BANGG.15000.wav"
|
|
||||||
, "tele.ZHM.10000.wav"
|
|
||||||
, "foot2.TAP.3000.wav"
|
|
||||||
, "bang.BANG.15000.wav"
|
|
||||||
, "impact4.CRISH.8000.wav"
|
|
||||||
]
|
|
||||||
gruntS :: SoundID
|
|
||||||
gruntS = SoundID 0
|
|
||||||
glassShat2S :: SoundID
|
|
||||||
glassShat2S = SoundID 1
|
|
||||||
buzzS :: SoundID
|
|
||||||
buzzS = SoundID 2
|
|
||||||
smallGlass2S :: SoundID
|
|
||||||
smallGlass2S = SoundID 3
|
|
||||||
skwareFadeTwoSecS :: SoundID
|
|
||||||
skwareFadeTwoSecS = SoundID 4
|
|
||||||
sineRaisePitchOneSecS :: SoundID
|
|
||||||
sineRaisePitchOneSecS = SoundID 5
|
|
||||||
twoStepSlowS :: SoundID
|
|
||||||
twoStepSlowS = SoundID 6
|
|
||||||
smallGlass4S :: SoundID
|
|
||||||
smallGlass4S = SoundID 7
|
|
||||||
autoBS :: SoundID
|
|
||||||
autoBS = SoundID 8
|
|
||||||
glassShat4S :: SoundID
|
|
||||||
glassShat4S = SoundID 9
|
|
||||||
glassShat3S :: SoundID
|
|
||||||
glassShat3S = SoundID 10
|
|
||||||
tap2S :: SoundID
|
|
||||||
tap2S = SoundID 11
|
|
||||||
impact2S :: SoundID
|
|
||||||
impact2S = SoundID 12
|
|
||||||
tone440sawtoothS :: SoundID
|
|
||||||
tone440sawtoothS = SoundID 13
|
|
||||||
reloadS :: SoundID
|
|
||||||
reloadS = SoundID 14
|
|
||||||
twoStepS :: SoundID
|
|
||||||
twoStepS = SoundID 15
|
|
||||||
fireS :: SoundID
|
|
||||||
fireS = SoundID 16
|
|
||||||
foamSprayFadeOutS :: SoundID
|
|
||||||
foamSprayFadeOutS = SoundID 17
|
|
||||||
explosionS :: SoundID
|
|
||||||
explosionS = SoundID 18
|
|
||||||
tapQuietS :: SoundID
|
|
||||||
tapQuietS = SoundID 19
|
|
||||||
autoGunS :: SoundID
|
|
||||||
autoGunS = SoundID 20
|
|
||||||
glassShat1S :: SoundID
|
|
||||||
glassShat1S = SoundID 21
|
|
||||||
foot3S :: SoundID
|
|
||||||
foot3S = SoundID 22
|
|
||||||
healS :: SoundID
|
|
||||||
healS = SoundID 23
|
|
||||||
twoStep1S :: SoundID
|
|
||||||
twoStep1S = SoundID 24
|
|
||||||
click1S :: SoundID
|
|
||||||
click1S = SoundID 25
|
|
||||||
tap4S :: SoundID
|
|
||||||
tap4S = SoundID 26
|
|
||||||
tinitusS :: SoundID
|
|
||||||
tinitusS = SoundID 27
|
|
||||||
tap3S :: SoundID
|
|
||||||
tap3S = SoundID 28
|
|
||||||
impact3S :: SoundID
|
|
||||||
impact3S = SoundID 29
|
|
||||||
smallGlass1S :: SoundID
|
|
||||||
smallGlass1S = SoundID 30
|
|
||||||
tap1S :: SoundID
|
|
||||||
tap1S = SoundID 31
|
|
||||||
hit1S :: SoundID
|
|
||||||
hit1S = SoundID 32
|
|
||||||
slideDoorS :: SoundID
|
|
||||||
slideDoorS = SoundID 33
|
|
||||||
impact1S :: SoundID
|
|
||||||
impact1S = SoundID 34
|
|
||||||
knifeS :: SoundID
|
|
||||||
knifeS = SoundID 35
|
|
||||||
elecCrackleS :: SoundID
|
|
||||||
elecCrackleS = SoundID 36
|
|
||||||
smallGlass3S :: SoundID
|
|
||||||
smallGlass3S = SoundID 37
|
|
||||||
whiteNoiseFadeInS :: SoundID
|
|
||||||
whiteNoiseFadeInS = SoundID 38
|
|
||||||
reload1S :: SoundID
|
|
||||||
reload1S = SoundID 39
|
|
||||||
miniS :: SoundID
|
|
||||||
miniS = SoundID 40
|
|
||||||
crankSlowS :: SoundID
|
|
||||||
crankSlowS = SoundID 41
|
|
||||||
fireLoudS :: SoundID
|
|
||||||
fireLoudS = SoundID 42
|
|
||||||
mini1S :: SoundID
|
|
||||||
mini1S = SoundID 43
|
|
||||||
whiteNoiseFadeOutS :: SoundID
|
|
||||||
whiteNoiseFadeOutS = SoundID 44
|
|
||||||
sineRaisePitchTwoSecS :: SoundID
|
|
||||||
sineRaisePitchTwoSecS = SoundID 45
|
|
||||||
tone440S :: SoundID
|
|
||||||
tone440S = SoundID 46
|
|
||||||
foamSprayLoopS :: SoundID
|
|
||||||
foamSprayLoopS = SoundID 47
|
|
||||||
pickUpS :: SoundID
|
|
||||||
pickUpS = SoundID 48
|
|
||||||
hitS :: SoundID
|
|
||||||
hitS = SoundID 49
|
|
||||||
missileLaunchS :: SoundID
|
|
||||||
missileLaunchS = SoundID 50
|
|
||||||
shotgunS :: SoundID
|
|
||||||
shotgunS = SoundID 51
|
|
||||||
foot1S :: SoundID
|
|
||||||
foot1S = SoundID 52
|
|
||||||
bangEchoS :: SoundID
|
|
||||||
bangEchoS = SoundID 53
|
|
||||||
teleS :: SoundID
|
|
||||||
teleS = SoundID 54
|
|
||||||
foot2S :: SoundID
|
|
||||||
foot2S = SoundID 55
|
|
||||||
bangS :: SoundID
|
|
||||||
bangS = SoundID 56
|
|
||||||
impact4S :: SoundID
|
|
||||||
impact4S = SoundID 57
|
|
||||||
|
|
||||||
loadMusic :: IO (IM.IntMap Mix.Music)
|
loadMusic :: IO (IM.IntMap Mix.Music)
|
||||||
loadMusic = do
|
loadMusic = do
|
||||||
undercity <- Mix.load "./data/music/firstCompo.mid"
|
undercity <- Mix.load "./data/music/firstCompo.mid"
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import Dodge.WorldEvent.SpawnParticle
|
|||||||
--import Dodge.WorldEvent.Flash
|
--import Dodge.WorldEvent.Flash
|
||||||
import Dodge.RandomHelp
|
import Dodge.RandomHelp
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Dodge.WorldEvent.Shockwave
|
import Dodge.WorldEvent.Shockwave
|
||||||
import Geometry
|
import Geometry
|
||||||
import Geometry.Vector3D
|
import Geometry.Vector3D
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ module Dodge.WorldEvent.Sound
|
|||||||
import Dodge.Data
|
import Dodge.Data
|
||||||
import Dodge.Data.SoundOrigin
|
import Dodge.Data.SoundOrigin
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Sound.Data
|
import Sound.Data
|
||||||
import Geometry.Data
|
import Geometry.Data
|
||||||
import Dodge.RandomHelp
|
import Dodge.RandomHelp
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import Dodge.WorldEvent.ThingsHit
|
|||||||
import Dodge.WorldEvent.Cloud
|
import Dodge.WorldEvent.Cloud
|
||||||
import Dodge.WorldEvent.Flash
|
import Dodge.WorldEvent.Flash
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.SoundLogic.LoadSound
|
|
||||||
import Dodge.RandomHelp
|
import Dodge.RandomHelp
|
||||||
--import Dodge.Debug
|
--import Dodge.Debug
|
||||||
import Picture
|
import Picture
|
||||||
|
|||||||
Reference in New Issue
Block a user