Refactor wall zoning, remove streaming

This commit is contained in:
2022-07-23 12:29:29 +01:00
parent 39f4555697
commit 39778f46fb
30 changed files with 396 additions and 163 deletions
+4 -5
View File
@@ -4,6 +4,7 @@ module Dodge.WorldEvent.Shockwave
, drawShockwave
, mvShockwave
) where
import Dodge.Zoning.Wall
import Dodge.Data
import Dodge.Wall.Damage
import Dodge.Base
@@ -12,7 +13,7 @@ import Geometry
import Picture
import LensHelp
--import Data.Foldable
import Data.Foldable
import qualified IntMapHelp as IM
import qualified Streaming.Prelude as S
-- currently very effective against walls
@@ -63,13 +64,11 @@ mvShockwave is w pt
tFraction = fromIntegral t / fromIntegral (_ptMaxTime pt)
rad = r - (3/4) * r * tFraction
doDams w' = over creatures (IM.map damCr)
. runIdentity
$ S.fold_
$ foldl'
(flip $ damageWall (Damage EXPLOSIVE 10000 p p p NoDamageEffect))
w'
id
hitBlocks
hitBlocks = S.map snd . overlapCircWalls p rad $ wlsInsideCirc p rad w
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 = cr