21 lines
551 B
Haskell
21 lines
551 B
Haskell
module Dodge.WorldEvent.Damage (
|
|
damThingHitWith,
|
|
) where
|
|
|
|
import Dodge.Data.World
|
|
import Dodge.Wall.Damage
|
|
import Geometry
|
|
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) -> cWorld . creatures . ix (_crID cr) . crState . csDamage .:~ partDT sp hitp ep
|
|
Just (hitp, Right wl) -> damageWall (partDT sp hitp ep) wl
|
|
Nothing -> id
|