Simplify shockwave damages

This commit is contained in:
2025-06-23 18:15:28 +01:00
parent 4e008366f4
commit 54eab6dd9e
12 changed files with 468 additions and 457 deletions
+14 -16
View File
@@ -1,11 +1,8 @@
module Dodge.Shockwave.Update (updateShockwave) where
import Data.Foldable
import Dodge.Base.Collide
import Dodge.Damage
import Dodge.Creature.Radius
import Dodge.Data.World
import Dodge.Wall.Damage
import Dodge.Zoning.Wall
import Geometry.Vector
import qualified IntMapHelp as IM
import LensHelp
@@ -20,24 +17,25 @@ moveShockwave w sw
| _swTimer sw <= 0 = (w, Nothing)
| otherwise = (doDams w, Just $ sw & swTimer -~ 1)
where
is = _swInvulnerableCrs sw
-- is = _swInvulnerableCrs sw
r = _swRad sw
p = _swPos sw
dam = _swDam sw
t = _swTimer sw
tFraction = fromIntegral t / fromIntegral (_swMaxTime sw)
rad = r - (3 / 4) * r * tFraction
doDams w' =
over (cWorld . lWorld . creatures) (IM.map damCr) $
foldl'
(flip $ damageWall (Explosive 1000 p))
w'
hitBlocks
hitBlocks = map snd . overlapCircWalls p rad $ wlsNearCirc p rad w
-- this is not expansive enough
damCr cr
| _crID cr `elem` is || dist (_crPos cr) p >= rad + crRad (cr ^. crType) = cr
| otherwise = cr & crDamage .:~ Explosive dam p
doDams = damageInCircle (Explosive dam) p rad
-- doDams w' =
-- over (cWorld . lWorld . creatures) (IM.map damCr) $
-- foldl'
-- (flip $ damageWall (Explosive 1000 p))
-- w'
-- hitBlocks
-- hitBlocks = map snd . overlapCircWalls p rad $ wlsNearCirc p rad w
-- -- this is not expansive enough
-- damCr cr
-- | _crID cr `elem` is || dist (_crPos cr) p >= rad + crRad (cr ^. crType) = cr
-- | otherwise = cr & crDamage .:~ Explosive dam p
--where
-- cpos = _crPos cr