Unify some damage applications
This commit is contained in:
+7
-4
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user