Refactor, try to limit dependencies
This commit is contained in:
+24
-16
@@ -1,17 +1,19 @@
|
||||
module Dodge.DamageCircle
|
||||
( damageCircle
|
||||
) where
|
||||
import Dodge.Data
|
||||
import Dodge.WorldEvent.ThingsHit
|
||||
import Geometry
|
||||
import LensHelp
|
||||
module Dodge.DamageCircle (
|
||||
damageCircle,
|
||||
) where
|
||||
|
||||
import Data.Foldable
|
||||
import Dodge.Data.World
|
||||
import Dodge.WorldEvent.ThingsHit
|
||||
import Geometry
|
||||
import qualified IntMapHelp as IM
|
||||
import LensHelp
|
||||
|
||||
damageCircle :: Float -> Point2 -> DamageType -> Int -> World -> World
|
||||
damageCircle r sp dt da w = w
|
||||
& cWorld . wallDamages %~ addwalldamages
|
||||
& cWorld . creatures %~ addcreaturedamages
|
||||
damageCircle r sp dt da w =
|
||||
w
|
||||
& cWorld . wallDamages %~ addwalldamages
|
||||
& cWorld . creatures %~ addcreaturedamages
|
||||
where
|
||||
--addwalldamages wlds = runIdentity $ S.fold_ (damageWlCircle wldam) wlds id wlstodam
|
||||
addwalldamages wlds = foldl' (damageWlCircle wldam) wlds wlstodam
|
||||
@@ -21,10 +23,16 @@ damageCircle r sp dt da w = w
|
||||
crdam p cr = Damage dt da sp p (_crPos cr) NoDamageEffect
|
||||
crstodam = crsHitRadial sp r w
|
||||
|
||||
damageWlCircle :: (Point2 -> Damage)
|
||||
-> IM.IntMap [Damage] -> (Point2,Wall) -> IM.IntMap [Damage]
|
||||
damageWlCircle f wldams (p,wl) = IM.insertWith (++) (_wlID wl) [f p] wldams
|
||||
damageWlCircle ::
|
||||
(Point2 -> Damage) ->
|
||||
IM.IntMap [Damage] ->
|
||||
(Point2, Wall) ->
|
||||
IM.IntMap [Damage]
|
||||
damageWlCircle f wldams (p, wl) = IM.insertWith (++) (_wlID wl) [f p] wldams
|
||||
|
||||
damageCrCircle :: (Point2 -> Creature -> Damage)
|
||||
-> IM.IntMap Creature -> (Point2,Creature) -> IM.IntMap Creature
|
||||
damageCrCircle crdam crs (p,cr) = crs & ix (_crID cr) . crState . csDamage .:~ crdam p cr
|
||||
damageCrCircle ::
|
||||
(Point2 -> Creature -> Damage) ->
|
||||
IM.IntMap Creature ->
|
||||
(Point2, Creature) ->
|
||||
IM.IntMap Creature
|
||||
damageCrCircle crdam crs (p, cr) = crs & ix (_crID cr) . crState . csDamage .:~ crdam p cr
|
||||
|
||||
Reference in New Issue
Block a user