Files
loop/src/Dodge/WorldEvent/Damage.hs
T

20 lines
539 B
Haskell

module Dodge.WorldEvent.Damage
( damThingHitWith
) where
import Dodge.Data
import Geometry
import Dodge.Wall.Damage
import LensHelp
damThingHitWith
:: (Point2 -> Point2 -> Point2 -> Damage)
-> Point2
-> Point2
-> Maybe (Point2, Either Creature Wall)
-> World
-> World
damThingHitWith partDT sp ep mayEiCrWl = case mayEiCrWl of
Just (hitp,Left cr) -> creatures . ix (_crID cr) . crState . crDamage .:~ partDT sp hitp ep
Just (hitp,Right wl) -> damageWall (partDT sp hitp ep) wl
Nothing -> id