Randomize spark movement

This commit is contained in:
2025-06-08 21:15:05 +01:00
parent feb9ce08cc
commit 7e8eaaa34e
4 changed files with 7 additions and 12 deletions
+6 -2
View File
@@ -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