Cleanup, redo damage direction

This commit is contained in:
2025-06-08 20:40:58 +01:00
parent 5b1e4fba4e
commit 70c78824f3
12 changed files with 105 additions and 147 deletions
+13 -14
View File
@@ -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