Fix bugs in zoning
This commit is contained in:
+11
-6
@@ -1,23 +1,28 @@
|
||||
module Dodge.Damage where
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
module Dodge.Damage
|
||||
( damageCrWl
|
||||
, damageDirection
|
||||
, damageCrWlID
|
||||
, maxDamageType
|
||||
) where
|
||||
|
||||
import qualified Data.Map.Strict as M
|
||||
import Dodge.Data.CrWlID
|
||||
import Dodge.Data.World
|
||||
import Dodge.Wall.Damage
|
||||
import FoldableHelp
|
||||
import Geometry.Vector
|
||||
import LensHelp
|
||||
import qualified IntMapHelp as IM
|
||||
|
||||
damageCrWlID :: Damage -> CrWlID -> World -> World
|
||||
damageCrWlID dam crwl = case crwl of
|
||||
damageCrWlID dam = \case
|
||||
NothingID -> id
|
||||
CrID cid -> cWorld . creatures . ix cid . crState . csDamage .:~ dam
|
||||
WlID wlid -> cWorld . wallDamages %~ IM.insertWith (++) wlid [dam]
|
||||
|
||||
damageCrWall :: Damage -> Either Creature Wall -> World -> World
|
||||
damageCrWall dt (Left cr) = cWorld . creatures . ix (_crID cr) . crState . csDamage .:~ dt
|
||||
damageCrWall dt (Right wl) = damageWall dt wl
|
||||
damageCrWl :: Damage -> Either Creature Wall -> World -> World
|
||||
damageCrWl dt (Left cr) = cWorld . creatures . ix (_crID cr) . crState . csDamage .:~ dt
|
||||
damageCrWl dt (Right wl) = cWorld . wallDamages %~ IM.insertWith (++) (_wlID wl) [dt]
|
||||
|
||||
damageDirection :: [Damage] -> Maybe Float
|
||||
damageDirection ds = do
|
||||
|
||||
Reference in New Issue
Block a user