Randomize spark movement
This commit is contained in:
+6
-2
@@ -18,17 +18,21 @@ updateSpark :: World -> Spark -> (World, Maybe Spark)
|
||||
updateSpark w sk
|
||||
| magV (_skVel sk) < 1 = (w, Nothing)
|
||||
| otherwise = case thingHit sp ep w of
|
||||
Nothing -> (w, Just $ sk & skPos .~ ep & skVel *~ 0.9 & skOldPos .~ sp)
|
||||
Nothing -> (w & randGen .~ g, Just $ sk & skPos .~ ep & skVel *~ 0.9
|
||||
& skVel %~ rotateV a
|
||||
& skOldPos .~ sp)
|
||||
Just (hp, hthing) ->
|
||||
( sparkDam sk hthing w
|
||||
, Just $ sk & skPos .~ hp & skOldPos .~ sp & skVel .~ 0
|
||||
)
|
||||
where
|
||||
(a,g) = randomR (-x,x) (_randGen w)
|
||||
x = 1
|
||||
sp = _skPos sk
|
||||
ep = sp + _skVel sk
|
||||
|
||||
sparkDam :: Spark -> Either Creature Wall -> World -> World
|
||||
sparkDam sk = damageCrWl (sparkToDamage sk)
|
||||
sparkDam = damageCrWl . sparkToDamage
|
||||
|
||||
sparkToDamage :: Spark -> Damage
|
||||
sparkToDamage sp = case _skType sp of
|
||||
|
||||
Reference in New Issue
Block a user