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

22 lines
585 B
Haskell

module Dodge.WorldEvent.Damage
( damThingHitWith
) where
import Dodge.Data
import Dodge.Creature.State.Data
import Geometry
import Dodge.Wall.Damage
import Control.Lens
damThingHitWith
:: (Point2 -> Point2 -> Point2 -> DamageType)
-> 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