Unify some damage applications
This commit is contained in:
+7
-4
@@ -15,7 +15,6 @@ import Geometry.Vector
|
|||||||
import ListHelp
|
import ListHelp
|
||||||
import Dodge.Data.CrWlID
|
import Dodge.Data.CrWlID
|
||||||
import Dodge.Data.World
|
import Dodge.Data.World
|
||||||
import qualified IntMapHelp as IM
|
|
||||||
import LensHelp
|
import LensHelp
|
||||||
import qualified Data.Map.Strict as M
|
import qualified Data.Map.Strict as M
|
||||||
import FoldableHelp
|
import FoldableHelp
|
||||||
@@ -24,11 +23,15 @@ damageCrWlID :: Damage -> CrWlID -> World -> World
|
|||||||
damageCrWlID dam = \case
|
damageCrWlID dam = \case
|
||||||
NothingID -> id
|
NothingID -> id
|
||||||
CrID cid -> cWorld . lWorld . creatures . ix cid . crDamage .:~ dam
|
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 :: Damage -> Either Creature Wall -> World -> World
|
||||||
damageCrWl dt (Left cr) = cWorld . lWorld . creatures . ix (_crID cr) . crDamage .:~ dt
|
damageCrWl dam = \case
|
||||||
damageCrWl dt (Right wl) = cWorld . lWorld . wallDamages %~ IM.insertWith (++) (_wlID wl) [dt]
|
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
|
-- could sort for damage amount as well
|
||||||
damageDirection :: [Damage] -> Maybe Float
|
damageDirection :: [Damage] -> Maybe Float
|
||||||
|
|||||||
Reference in New Issue
Block a user