Unify some damage applications

This commit is contained in:
2025-06-20 22:23:14 +01:00
parent 3019d95520
commit 7e84dcf173
+7 -4
View File
@@ -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