Add basic booster
This commit is contained in:
@@ -10,26 +10,26 @@ import qualified IntMapHelp as IM
|
||||
import Control.Lens
|
||||
|
||||
makeCloudAt :: Float -> Int -> (Cloud -> Picture) -> Point2 -> World -> World
|
||||
makeCloudAt rad t drawFunc p w
|
||||
= w & clouds %~ IM.insert i theCloud
|
||||
where i = IM.newKey $ _clouds w
|
||||
theCloud = Cloud { _clID = i
|
||||
, _clPos = p
|
||||
, _clVel = (0,0)
|
||||
, _clPict = drawFunc
|
||||
, _clRad = rad
|
||||
, _clTimer = t
|
||||
, _clEffect = const id
|
||||
}
|
||||
makeCloudAt rad t drawFunc p w = w & clouds %~ IM.insert i theCloud
|
||||
where
|
||||
i = IM.newKey $ _clouds w
|
||||
theCloud = Cloud
|
||||
{ _clID = i
|
||||
, _clPos = p
|
||||
, _clVel = (0,0)
|
||||
, _clPict = drawFunc
|
||||
, _clRad = rad
|
||||
, _clTimer = t
|
||||
, _clEffect = const id
|
||||
}
|
||||
|
||||
drawCloudWith :: Float -> Float -> Color -> Cloud -> Picture
|
||||
drawCloudWith radMult fadet col cl
|
||||
= setLayer 2
|
||||
. setDepth (-0.5)
|
||||
$ circleSolidCol (withAlpha 0 col) (withAlpha a col) (radMult * _clRad cl)
|
||||
-- . color (withAlpha a col)
|
||||
-- $ circleSolid (radMult * _clRad cl)
|
||||
where a = min 1 $ fromIntegral (_clTimer cl) / fadet
|
||||
. setDepth (-0.5)
|
||||
$ circleSolidCol (withAlpha 0 col) (withAlpha a col) (radMult * _clRad cl)
|
||||
where
|
||||
a = min 1 $ fromIntegral (_clTimer cl) / fadet
|
||||
|
||||
makeThickSmokeAt :: Point2 -> World -> World
|
||||
makeThickSmokeAt = makeCloudAt 3 50 (drawCloudWith 4 50 black)
|
||||
@@ -41,8 +41,8 @@ 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))
|
||||
|
||||
makeFlamerSmokeAt :: Point2 -> World -> World
|
||||
makeFlamerSmokeAt = makeCloudAt 3 200 (drawCloudWith 4 200 (greyN 0.5))
|
||||
makeFlamerSmokeAt :: Float -> Point2 -> World -> World
|
||||
makeFlamerSmokeAt x = makeCloudAt 6 200 (drawCloudWith 4 300 (greyN x))
|
||||
|
||||
spawnSmokeAtCursor :: World -> World
|
||||
spawnSmokeAtCursor w = makeSmokeCloudAt (mouseWorldPos w) w
|
||||
|
||||
Reference in New Issue
Block a user