diff --git a/src/Dodge/Damage.hs b/src/Dodge/Damage.hs index 835a55660..90db16777 100644 --- a/src/Dodge/Damage.hs +++ b/src/Dodge/Damage.hs @@ -15,7 +15,6 @@ import Geometry.Vector import ListHelp import Dodge.Data.CrWlID import Dodge.Data.World -import qualified IntMapHelp as IM import LensHelp import qualified Data.Map.Strict as M import FoldableHelp @@ -24,11 +23,15 @@ damageCrWlID :: Damage -> CrWlID -> World -> World damageCrWlID dam = \case NothingID -> id CrID cid -> cWorld . lWorld . creatures . ix cid . crDamage .:~ dam - WlID wlid -> cWorld . lWorld . wallDamages %~ IM.insertWith (++) wlid [dam] + --WlID wlid -> cWorld . lWorld . wallDamages %~ IM.insertWith (++) wlid [dam] + WlID wlid -> cWorld . lWorld . wallDamages . at wlid . non mempty .:~ dam damageCrWl :: Damage -> Either Creature Wall -> World -> World -damageCrWl dt (Left cr) = cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ dt -damageCrWl dt (Right wl) = cWorld . lWorld . wallDamages %~ IM.insertWith (++) (_wlID wl) [dt] +damageCrWl dam = \case + Left cr -> damageCrWlID dam (CrID (_crID cr)) + Right wl -> damageCrWlID dam (WlID (_wlID wl)) +--damageCrWl dt (Left cr) = cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ dt +--damageCrWl dt (Right wl) = cWorld . lWorld . wallDamages %~ IM.insertWith (++) (_wlID wl) [dt] -- could sort for damage amount as well damageDirection :: [Damage] -> Maybe Float