Cleanup, redo damage direction
This commit is contained in:
+13
-14
@@ -1,18 +1,18 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
module Dodge.Damage
|
||||
( damageCrWl
|
||||
, damageDirection
|
||||
, damageCrWlID
|
||||
, maxDamageType
|
||||
) where
|
||||
|
||||
--import qualified Data.Map.Strict as M
|
||||
module Dodge.Damage (
|
||||
damageCrWl,
|
||||
damageDirection,
|
||||
damageCrWlID,
|
||||
maxDamageType,
|
||||
) where
|
||||
|
||||
import Geometry.Vector
|
||||
import ListHelp
|
||||
import Dodge.Data.CrWlID
|
||||
import Dodge.Data.World
|
||||
--import FoldableHelp
|
||||
--import Geometry.Vector
|
||||
import LensHelp
|
||||
import qualified IntMapHelp as IM
|
||||
import LensHelp
|
||||
|
||||
damageCrWlID :: Damage -> CrWlID -> World -> World
|
||||
damageCrWlID dam = \case
|
||||
@@ -24,11 +24,9 @@ damageCrWl :: Damage -> Either Creature Wall -> World -> World
|
||||
damageCrWl dt (Left cr) = cWorld . lWorld . creatures . ix (_crID cr) . crState . csDamage .:~ dt
|
||||
damageCrWl dt (Right wl) = cWorld . lWorld . wallDamages %~ IM.insertWith (++) (_wlID wl) [dt]
|
||||
|
||||
-- could sort for damage amount as well
|
||||
damageDirection :: [Damage] -> Maybe Float
|
||||
damageDirection _ = Nothing
|
||||
--damageDirection ds = do
|
||||
-- dm <- safeMinimumOn (negate . _dmAmount) ds
|
||||
-- safeArgV (_dmTo dm -.- _dmFrom dm)
|
||||
damageDirection ds = safeArgV =<< safeHead (ds ^.. each . dmVector)
|
||||
|
||||
--collectDamageTypes :: [Damage] -> M.Map DamageType Int
|
||||
--collectDamageTypes = foldl' (flip f) M.empty
|
||||
@@ -37,4 +35,5 @@ damageDirection _ = Nothing
|
||||
--
|
||||
maxDamageType :: [Damage] -> Maybe (Damage, Int)
|
||||
maxDamageType _ = Nothing
|
||||
|
||||
--maxDamageType = safeMinimumOn (negate . snd) . M.assocs . collectDamageTypes
|
||||
|
||||
Reference in New Issue
Block a user