diff --git a/app/Main.hs b/app/Main.hs index 819fd4267..32a3b7a5f 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -10,7 +10,7 @@ import Dodge.Config.Data import Dodge.Config.KeyConfig import Dodge.Config.Load import Dodge.Config.Update -import Dodge.LoadSound +import Dodge.SoundLogic.LoadSound import Dodge.Debug.Flag.Data import Picture import Picture.Render diff --git a/data/sound/foamSprayFadeOut.wav b/data/sound/foamSprayFadeOut.wav new file mode 100644 index 000000000..58ffce40f Binary files /dev/null and b/data/sound/foamSprayFadeOut.wav differ diff --git a/data/sound/sineRaisePitchOneSec.wav b/data/sound/sineRaisePitchOneSec.wav new file mode 100644 index 000000000..68619c995 Binary files /dev/null and b/data/sound/sineRaisePitchOneSec.wav differ diff --git a/data/sound/sineRaisePitchTwoSec.wav b/data/sound/sineRaisePitchTwoSec.wav new file mode 100644 index 000000000..478fcfe94 Binary files /dev/null and b/data/sound/sineRaisePitchTwoSec.wav differ diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 9c5873aaf..d7085bc04 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -142,7 +142,8 @@ startCr :: Creature startCr = defaultCreature { _crPos = (0,0) , _crOldPos = (0,0) - , _crDir = 0 + , _crDir = (pi/2) + , _crMvDir = (pi/2) , _crID = 0 , _crPict = basicCrPict black , _crUpdate = stateUpdate yourControl diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 271512773..8b14409de 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -14,6 +14,7 @@ import Dodge.WorldEvent.Shockwave import Dodge.Data import Dodge.Base import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms --import Dodge.WorldEvent import Dodge.Inventory --import Dodge.LightSources diff --git a/src/Dodge/Creature/Rationality.hs b/src/Dodge/Creature/Rationality.hs index e01b1ad82..ac4d84f23 100644 --- a/src/Dodge/Creature/Rationality.hs +++ b/src/Dodge/Creature/Rationality.hs @@ -7,6 +7,7 @@ import Dodge.Creature.Action import Dodge.Creature.State.Data import Dodge.Creature.Stance.Data import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Geometry import Data.Maybe diff --git a/src/Dodge/Creature/State.hs b/src/Dodge/Creature/State.hs index ace4be45c..445d03547 100644 --- a/src/Dodge/Creature/State.hs +++ b/src/Dodge/Creature/State.hs @@ -7,6 +7,7 @@ import Dodge.Creature.Stance.Data --import Dodge.Creature.Test import Dodge.Base import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Dodge.RandomHelp import Dodge.WorldEvent --import Dodge.WallCreatureCollisions @@ -122,6 +123,9 @@ invSideEff cr w = weaponReloadSounds cr $ IM.foldrWithKey f w (_crInv cr) weaponReloadSounds :: Creature -> World -> World weaponReloadSounds cr w = case _crInv cr IM.!? _crInvSel cr of + Just Weapon{_wpReloadType = PassiveReload stype,_wpReloadTime=rt,_wpReloadState=rs} + | rt == rs -> soundOncePos stype (_crPos cr) w + | otherwise -> w Just Weapon{_wpReloadState = 0} -> w Just Weapon{_wpReloadState = 1} -> stopSoundFrom (CrReloadSound cid) w Just Weapon{} -> soundFrom (CrReloadSound cid) reloadSound 1 0 w diff --git a/src/Dodge/Data.hs b/src/Dodge/Data.hs index fe784b895..1dde79e20 100644 --- a/src/Dodge/Data.hs +++ b/src/Dodge/Data.hs @@ -209,6 +209,7 @@ data Item , _wpAmmo :: Ammo , _wpReloadTime :: Int , _wpReloadState :: Int + , _wpReloadType :: ReloadType , _itUseRate :: Int , _itUseTime :: Int , _itUse :: Item -> Creature -> World -> World @@ -305,6 +306,9 @@ data Item , _itAimStance :: AimStance } | NoItem + +data ReloadType = ActiveReload | PassiveReload Int + data ItEffect = NoItEffect | ItInvEffect {_itInvEffect :: ItEffect -> Creature -> Int -> World -> World diff --git a/src/Dodge/Data/Menu.hs b/src/Dodge/Data/Menu.hs index c5cb9898a..d3cf28bdc 100644 --- a/src/Dodge/Data/Menu.hs +++ b/src/Dodge/Data/Menu.hs @@ -11,4 +11,5 @@ data MenuLayer | ControlList | WaitMessage String Int | Terminal String + | TerminalMessage Int [(Int,String)] deriving (Eq,Ord) diff --git a/src/Dodge/Default/Weapon.hs b/src/Dodge/Default/Weapon.hs index a2251dc94..765a05330 100644 --- a/src/Dodge/Default/Weapon.hs +++ b/src/Dodge/Default/Weapon.hs @@ -14,6 +14,7 @@ defaultGun = Weapon , _wpAmmo = GenericAmmo , _wpReloadTime = 40 , _wpReloadState = 0 + , _wpReloadType = ActiveReload , _itUseRate = 8 , _itUseTime = 0 , _itUse = \_ _ -> id diff --git a/src/Dodge/Event/Menu.hs b/src/Dodge/Event/Menu.hs index 36bc11fb1..f9f76c184 100644 --- a/src/Dodge/Event/Menu.hs +++ b/src/Dodge/Event/Menu.hs @@ -21,6 +21,8 @@ import SDL.Internal.Numbered handlePressedKeyInMenu :: MenuLayer -> Scancode -> World -> Maybe World handlePressedKeyInMenu mState scode w = case mState of + TerminalMessage 0 _ -> popMenu w + TerminalMessage _ m -> Just $ w & menuLayers %~ ((TerminalMessage 0 m : ) . tail) Terminal s -> case scode of ScancodeEscape -> popMenu w ScancodeReturn -> popMenu $ applyTerminalString s w diff --git a/src/Dodge/Initialisation.hs b/src/Dodge/Initialisation.hs index 434e8214d..22ad214fa 100644 --- a/src/Dodge/Initialisation.hs +++ b/src/Dodge/Initialisation.hs @@ -6,6 +6,10 @@ import Dodge.Creature --import Dodge.Base import Dodge.Floor import Dodge.Layout +import Dodge.Story +import Dodge.WorldEvent.Cloud +import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import System.Random import qualified Data.Set as S @@ -17,35 +21,33 @@ initializeWorld w = w firstWorld :: IO World firstWorld = do --- i <- randomRIO (0,5000) - let i = 2 + i <- randomRIO (0,5000) +-- let i = 2 putStrLn $ "Seed for level generation: " ++ show ( i :: Int) return $ generateLevelFromRoomList levx $ initialWorld {_randGen = mkStdGen i} initialWorld :: World initialWorld = defaultWorld - { _keys = S.empty - , _cameraCenter = (0,0) - , _cameraRot = 0 - , _cameraZoom = 1 - , _creatures = IM.fromList [(0,startCr)] - , _projectiles = IM.empty - , _walls = IM.empty - , _forceFields = IM.empty - , _floorItems = IM.empty - , _randGen = mkStdGen 2 - , _mousePos = (0,0) - , _testString = [] - , _yourID = 0 - , _worldEvents = id - , _pressPlates = IM.empty - , _buttons = IM.empty - , _soundQueue = [] - , _sounds = M.empty - , _decorations = IM.empty - , _storedLevel = Nothing - , _menuLayers = [LevelMenu 1] - , _worldState = M.empty - } - - + { _keys = S.empty + , _cameraCenter = (0,0) + , _cameraRot = 0 + , _cameraZoom = 10 + , _creatures = IM.fromList [(0,startCr)] + , _projectiles = IM.empty + , _walls = IM.empty + , _forceFields = IM.empty + , _floorItems = IM.empty + , _randGen = mkStdGen 2 + , _mousePos = (0,0) + , _testString = [] + , _yourID = 0 + , _worldEvents = soundOncePos foamSprayFadeOutSound (0,0) . foldr ((.) . makeStartCloudAt) id [(x,y) | x <- [-5,-3..5] , y <- [-5,-3..5]] + , _pressPlates = IM.empty + , _buttons = IM.empty + , _soundQueue = [] + , _sounds = M.empty + , _decorations = IM.empty + , _storedLevel = Nothing + , _menuLayers = [TerminalMessage 300 rezText'] + , _worldState = M.empty + } diff --git a/src/Dodge/Item/Consumable.hs b/src/Dodge/Item/Consumable.hs index 2a2f4bc99..645579f7f 100644 --- a/src/Dodge/Item/Consumable.hs +++ b/src/Dodge/Item/Consumable.hs @@ -5,6 +5,7 @@ import Dodge.Item.Data import Dodge.Picture.Layer import Dodge.Default import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Dodge.Item.Draw diff --git a/src/Dodge/Item/Weapon.hs b/src/Dodge/Item/Weapon.hs index a1df46b04..29cc879b7 100644 --- a/src/Dodge/Item/Weapon.hs +++ b/src/Dodge/Item/Weapon.hs @@ -6,6 +6,7 @@ import Dodge.Data import Dodge.Base import Dodge.Picture.Layer import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Dodge.Creature.Action import Dodge.RandomHelp import Dodge.WorldEvent @@ -397,6 +398,7 @@ longGun = defaultGun , _wpLoadedAmmo = 1 , _wpReloadTime = 80 , _wpReloadState = 0 + , _wpReloadType = PassiveReload sineRaisePitchOneSecSound , _itUseRate = 100 , _itUseTime = 0 , _itUse = shootWithSound (fromIntegral longGunSound) diff --git a/src/Dodge/Item/Weapon/Grenade.hs b/src/Dodge/Item/Weapon/Grenade.hs index 31c33ab1c..4c66c30b9 100644 --- a/src/Dodge/Item/Weapon/Grenade.hs +++ b/src/Dodge/Item/Weapon/Grenade.hs @@ -5,6 +5,7 @@ import Dodge.Item.Data import Dodge.Base import Dodge.Picture.Layer import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Dodge.Item.Attachment.Data import Dodge.Item.Draw import Dodge.Default.Shell diff --git a/src/Dodge/Item/Weapon/Launcher.hs b/src/Dodge/Item/Weapon/Launcher.hs index abe62e65e..3ffe2ce25 100644 --- a/src/Dodge/Item/Weapon/Launcher.hs +++ b/src/Dodge/Item/Weapon/Launcher.hs @@ -110,8 +110,6 @@ doThrust pj w = w (sparkD,_) = randomR (-0.2,0.2) $ _randGen w r1 = randInCirc 10 & evalState $ _randGen w smokeGen = makeSmokeCloudAt (oldPos +.+ r1 +.+ 30 *.* normalizeV (oldPos -.- newPos)) - - flameLauncher :: Item flameLauncher = launcher & wpAmmo . amPayload .~ makeFlameExplosionAt diff --git a/src/Dodge/LevelGen/AutoDoor.hs b/src/Dodge/LevelGen/AutoDoor.hs index e03688f91..5a8025231 100644 --- a/src/Dodge/LevelGen/AutoDoor.hs +++ b/src/Dodge/LevelGen/AutoDoor.hs @@ -8,6 +8,7 @@ import Dodge.Data --import Dodge.Creature.State.Data import Dodge.Base import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Dodge.Creature.Property import Geometry import Picture diff --git a/src/Dodge/LevelGen/TriggerDoor.hs b/src/Dodge/LevelGen/TriggerDoor.hs index 2c5762c54..361430b78 100644 --- a/src/Dodge/LevelGen/TriggerDoor.hs +++ b/src/Dodge/LevelGen/TriggerDoor.hs @@ -4,6 +4,7 @@ module Dodge.LevelGen.TriggerDoor import Dodge.Data import Dodge.Base import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Dodge.LevelGen.Switch import Dodge.LevelGen.Pathing import Picture diff --git a/src/Dodge/Render/MenuScreen.hs b/src/Dodge/Render/MenuScreen.hs index d948bf5fa..384a12622 100644 --- a/src/Dodge/Render/MenuScreen.hs +++ b/src/Dodge/Render/MenuScreen.hs @@ -10,6 +10,7 @@ import Dodge.Data.Menu import Dodge.Config.Data --import Dodge.Base (halfWidth,halfHeight) import Picture +import Geometry menuScreen :: Configuration @@ -51,6 +52,7 @@ menuScreen cfig hw hh mLays = case mLays of ] (WaitMessage s _ : _) -> optionsList hw hh s [] (Terminal s : _) -> optionsList hw hh "SCANCODE INPUT" ['>':s ++ "_"] + (TerminalMessage t xs : _) -> displayStringList hw hh $ map snd $ filter (( > t) . fst) xs _ -> blank where tst x y sc t = translate x y $ scale sc sc $ color white $ text t @@ -60,6 +62,16 @@ menuScreen cfig hw hh mLays = case mLays of f x = show (round $ 10 * x :: Int) showShadRes i = "1/"++ show i +displayStringList :: Float -> Float -> [String] -> Picture +displayStringList hw hh ss = pictures + ( polygon (rectNSEW hh (-hh) hw (-hw)) + : zipWith f ys ss + ) + where + ys = [0,22..] + f y s = translate (10-hw) y . scale 0.15 0.15 $ text s + + optionsList :: Float -- ^ Half screen width -> Float -- ^ Half screen height diff --git a/src/Dodge/Render/Picture.hs b/src/Dodge/Render/Picture.hs index cf40e872d..f72c2a23a 100644 --- a/src/Dodge/Render/Picture.hs +++ b/src/Dodge/Render/Picture.hs @@ -50,10 +50,10 @@ customMouseCursor w = $ pictures [ line [(-5,0),(5,0)] , line [(0,-5),(0,5)] ] testPic :: World -> [Picture] -testPic w = - [ setDepth (-1) . translate 0 0.8 - . scale 0.001 0.001 . text . show $ _crMvDir $ you w - ] +testPic _ = [blank] +-- [ setDepth (-1) . translate 0 0.8 +-- . scale 0.001 0.001 . text . show $ _crMvDir $ you w +-- ] crDraw :: World -> Creature -> Picture crDraw w c = _crPict c c w diff --git a/src/Dodge/Room/Foreground.hs b/src/Dodge/Room/Foreground.hs index ff1e75263..6d1aa6c3b 100644 --- a/src/Dodge/Room/Foreground.hs +++ b/src/Dodge/Room/Foreground.hs @@ -69,8 +69,8 @@ girderZ w x y = setDepth (-0.1) $ color red $ pictures $ dia = rotateV (pi/4) n ps' = map (\p -> intersectSegLine' xt yt p (p +.+ dia)) ps ls = catMaybes $ zipWith (fmap . (,)) ps ps' -girderV :: Float -> Point2 -> Point2 -> Picture -girderV w x y = setDepth (-0.1) $ color red $ pictures $ +girderV :: Color -> Float -> Point2 -> Point2 -> Picture +girderV col w x y = setDepth (-0.1) $ color col $ pictures $ [ thickLine [xt,yt] 3 , thickLine [xb,yb] 3 ] @@ -83,16 +83,19 @@ girderV w x y = setDepth (-0.1) $ color red $ pictures $ xt = x -.- n yt = y -.- n ps = divideLineExact (w*2) xb yb - (as,bs) = evenOddSplit ps + (as,_) = evenOddSplit ps f a = map (\p -> intersectSegLine' xt yt p (p +.+ (rotateV a n))) as' = catMaybes $ zipWith (fmap . (,)) as $ f (pi/4) as bs' = catMaybes $ zipWith (fmap . (,)) as $ f (3*pi/4) as -girder :: Float -> Point2 -> Point2 -> Picture -girder w x y = setDepth (-0.1) $ color red $ pictures $ - [ thickLine [xt,yt] 3 - , thickLine [xb,yb] 3 +girder :: Color -> Float -> Point2 -> Point2 -> Picture +girder col w x y = pictures $ + [ setDepth (-0.1) $ color col $ pictures $ + [ thickLine [xt,yt] 3 + , thickLine [xb,yb] 3 + ] + ++ map (flip thickLine 3 . flat2) ls ] - ++ map (flip thickLine 3 . flat2) ls + ++ map (\p -> verticalPipe 1.5 col p 0 (-0.1)) [xb,xt,yb,yt] where n = w *.* (normalizeV $ vNormal $ y -.- x) xb = x +.+ n diff --git a/src/Dodge/Room/Start.hs b/src/Dodge/Room/Start.hs index 15dd59d03..29e7185ec 100644 --- a/src/Dodge/Room/Start.hs +++ b/src/Dodge/Room/Start.hs @@ -1,9 +1,11 @@ module Dodge.Room.Start where import Dodge.Room.Data +import Dodge.Room.Door import Dodge.Room.Link import Dodge.Room.Procedural import Dodge.Room.Foreground +import Dodge.Layout.Tree.Polymorphic import Dodge.LevelGen.Data import Picture --import Geometry @@ -13,19 +15,19 @@ import Control.Monad.State import Control.Lens import System.Random +rezBox :: Room +rezBox = shiftRoomBy ((-20,-10),0) $ roomRect 40 20 1 1 & rmPS .~ [] + startRoom :: RandomGen g => State g (Tree (Either Room Room)) startRoom = do w <- state $ randomR (100,400) h <- state $ randomR (200,400) let fground = sPS (0,0) 0 $ PutForeground $ pictures - --[ highDiagonalMesh (0,0) (0,h) w 50 - ----, setDepth (-0.1) $ color orange $ pictures - ---- [ polygon $ rectNSEW 50 40 140 (-20) - ---- , translate 60 45 $ scale 0.5 1 $ thickArc 0 pi 75 10 - ---- , translate (-20) 300 $ polygon $ rectNSEW 10 0 40 0 - ---- ] - --, highDiagonalMesh (w,0) (0,0) h 50 [ highPipe (0,h/2) (w, h/2) - , girderV 10 (0,3*h/4) (w, 3*h/4) + , girderV cola 10 (0,3*h/4) (w, 3*h/4) + , girder colb 5 (0,5*h/8) (w, 5*h/8) ] - pure . Right <$> randomiseOutLinks (shiftRoomBy ((-20,-20),0) $ roomRectAutoLinks w h & rmPS %~ (fground :)) + treeFromPost [Left rezBox, Left door] . Right <$> randomiseOutLinks (shiftRoomBy ((-20,-20),0) $ roomRectAutoLinks w h & rmPS %~ (fground :)) + where + cola = dark . dark . light . light $ light red + colb = dark . dark . light . light $ light blue diff --git a/src/Dodge/SoundLogic.hs b/src/Dodge/SoundLogic.hs index cb1f008ac..f41706347 100644 --- a/src/Dodge/SoundLogic.hs +++ b/src/Dodge/SoundLogic.hs @@ -19,12 +19,8 @@ module Dodge.SoundLogic ( , haltSound , resumeSound , pauseSound - - -- * Synonyms for sound identifiers - , module Dodge.SoundLogic.Synonyms ) where import Dodge.Data -import Dodge.SoundLogic.Synonyms import Sound.Data (SoundStatus (..)) import Geometry.Vector import Geometry (dist) diff --git a/src/Dodge/LoadSound.hs b/src/Dodge/SoundLogic/LoadSound.hs similarity index 91% rename from src/Dodge/LoadSound.hs rename to src/Dodge/SoundLogic/LoadSound.hs index 2304c2c4f..fae84aca4 100644 --- a/src/Dodge/LoadSound.hs +++ b/src/Dodge/SoundLogic/LoadSound.hs @@ -1,4 +1,4 @@ -module Dodge.LoadSound where +module Dodge.SoundLogic.LoadSound where import qualified Data.IntMap.Strict as IM import qualified SDL.Mixer as Mix @@ -47,6 +47,9 @@ loadSounds = do glass3' <- Mix.load "./data/sound/Small-Piece-Of-Glass-Shattering-A3.wav" glass4' <- Mix.load "./data/sound/Small-Piece-Of-Glass-Shattering-A4.wav" foamSpray' <- Mix.load "./data/sound/foamSprayLoop.wav" + foamSprayFadeOut <- Mix.load "./data/sound/foamSprayFadeOut.wav" + sineRaisePitchOneSec <- Mix.load "./data/sound/sineRaisePitchOneSec.wav" + sineRaisePitchTwoSec <- Mix.load "./data/sound/sineRaisePitchTwoSec.wav" return $ IM.fromList $ zip [0..] [ pFireSound , click @@ -90,6 +93,9 @@ loadSounds = do , glass3' , glass4' --40 , foamSpray' + , foamSprayFadeOut + , sineRaisePitchOneSec + , sineRaisePitchTwoSec ] loadMusic :: IO (IM.IntMap Mix.Music) diff --git a/src/Dodge/SoundLogic/Synonyms.hs b/src/Dodge/SoundLogic/Synonyms.hs index ff7de2688..8fab99a3e 100644 --- a/src/Dodge/SoundLogic/Synonyms.hs +++ b/src/Dodge/SoundLogic/Synonyms.hs @@ -24,6 +24,12 @@ launcherSound = 20 smokeTrailSound = 21 foot1Sound = 22 foot2Sound = 23 +foamSprayFadeOutSound :: Int +foamSprayFadeOutSound = 42 +sineRaisePitchOneSecSound :: Int +sineRaisePitchOneSecSound = 43 +sineRaisePitchTwoSecSound :: Int +sineRaisePitchTwoSecSound = 44 drawWeaponSound = 4 holsterWeaponSound = 5 diff --git a/src/Dodge/Story.hs b/src/Dodge/Story.hs new file mode 100644 index 000000000..46e9dc9fa --- /dev/null +++ b/src/Dodge/Story.hs @@ -0,0 +1,18 @@ +module Dodge.Story + where + +rezText :: [String] +rezText = + ["INITIALIZING..." + ,"COMPLETE" + ,"LOADING SUBJECT 288307..." + ,"COMPLETE" + ,"INITIALIZING RECONSTRUCTION..." + ,"WARNING 56684 PARAHIPPOCAMPAL GYRUS" + ,"WARNING 57810 DIENCEPHALON" + ,"RECONSTRUCTION TERMINATED 1527" + ,"PRESS ANY KEY TO CONTINUE" + ,">" + ] +rezText' :: [(Int,String)] +rezText' = reverse $ zip [300,250,248,200,198,100,80,10,1,999] rezText diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index c6da89af8..da21c7eb0 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -41,6 +41,7 @@ pushSideEffects w = w For most menus the only way to change the world is using event handling. -} update' :: World -> World update' w = case _menuLayers w of + (TerminalMessage t xs:mls) -> w & menuLayers .~ (TerminalMessage (max (t-1) 0) xs:mls) (WaitMessage s i: _) | i < 1 -> w & dbArg _worldEvents | otherwise -> w & menuLayers %~ ( (WaitMessage s (i-1) :) . tail ) diff --git a/src/Dodge/WorldEvent/Cloud.hs b/src/Dodge/WorldEvent/Cloud.hs index 4179688c1..bba1f232d 100644 --- a/src/Dodge/WorldEvent/Cloud.hs +++ b/src/Dodge/WorldEvent/Cloud.hs @@ -37,6 +37,10 @@ makeThickSmokeAt = makeCloudAt 3 50 (drawCloudWith 4 50 black) makeThinSmokeAt :: Point2 -> World -> World makeThinSmokeAt = makeCloudAt 5 400 (drawCloudWith 4 400 (withAlpha 0.05 black)) +makeStartCloudAt :: Point2 -> World -> World +--makeSmokeCloudAt = makeCloudAt 10 200 (drawCloudWith 2 200 (greyN 0.5)) +makeStartCloudAt = makeCloudAt 10 400 (drawCloudWith (2) 800 white) + makeSmokeCloudAt :: Point2 -> World -> World --makeSmokeCloudAt = makeCloudAt 10 200 (drawCloudWith 2 200 (greyN 0.5)) makeSmokeCloudAt = makeCloudAt 15 400 (drawCloudWith (4/3) 800 (greyN 0.5)) diff --git a/src/Dodge/WorldEvent/Explosion.hs b/src/Dodge/WorldEvent/Explosion.hs index 713b82eb5..adcda728c 100644 --- a/src/Dodge/WorldEvent/Explosion.hs +++ b/src/Dodge/WorldEvent/Explosion.hs @@ -9,6 +9,7 @@ import Dodge.WorldEvent.SpawnParticle import Dodge.WorldEvent.Flash import Dodge.RandomHelp import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Dodge.WorldEvent.Shockwave import Geometry import Picture diff --git a/src/Dodge/WorldEvent/SpawnParticle.hs b/src/Dodge/WorldEvent/SpawnParticle.hs index 51c6dadde..61e6d3541 100644 --- a/src/Dodge/WorldEvent/SpawnParticle.hs +++ b/src/Dodge/WorldEvent/SpawnParticle.hs @@ -15,6 +15,7 @@ import Dodge.WorldEvent.Flash import Dodge.Particle.Bullet.Draw import Dodge.Particle.Bullet.Update import Dodge.SoundLogic +import Dodge.SoundLogic.Synonyms import Dodge.RandomHelp --import Dodge.Debug import Picture