22 lines
585 B
Haskell
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
|