25 lines
631 B
Haskell
25 lines
631 B
Haskell
module Dodge.Wall.Dust where
|
|
|
|
import Data.Foldable
|
|
import Control.Lens
|
|
import Dodge.Data.World
|
|
import Dodge.WorldEvent.Cloud
|
|
import Geometry
|
|
import RandomHelp
|
|
|
|
wlDustAt :: Wall -> Point2 -> World -> World
|
|
wlDustAt wl = smokeCloudAt dustcol 20 200 1 . addZ 20
|
|
where
|
|
dustcol = _wlColor wl & _4 .~ 1
|
|
|
|
muchWlDustAt :: Wall -> Point2 -> World -> World
|
|
muchWlDustAt wl p = flip (foldl' f) [10, 20 .. 100]
|
|
where
|
|
f w h =
|
|
w
|
|
& smokeCloudAt dustcol 20 200 1 (addZ h (p +.+ off))
|
|
& randGen .~ g
|
|
where
|
|
(off, g) = runState (randInCirc 1) (_randGen w)
|
|
dustcol = _wlColor wl & _4 .~ 1
|