diff --git a/src/Dodge/Damage.hs b/src/Dodge/Damage.hs index 90db16777..9b054fb71 100644 --- a/src/Dodge/Damage.hs +++ b/src/Dodge/Damage.hs @@ -23,15 +23,12 @@ 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 . at wlid . non mempty .:~ dam damageCrWl :: Damage -> Either Creature Wall -> World -> World 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 diff --git a/src/Dodge/WorldEvent/ThingsHit.hs b/src/Dodge/WorldEvent/ThingsHit.hs index a11416615..f57ecac32 100644 --- a/src/Dodge/WorldEvent/ThingsHit.hs +++ b/src/Dodge/WorldEvent/ThingsHit.hs @@ -98,9 +98,9 @@ wlsHit sp ep wlsHitRadial :: Point2 -> Float -> World -> [(Point2, Wall)] wlsHitRadial p r = mapMaybe f . wlsNearCirc p r where - f wl = uncurry (intersectSegSeg p (p -.- r *.* v)) (_wlLine wl) <&> (,wl) + f wl = uncurry (intersectSegSeg p (p - r *.* v)) (_wlLine wl) <&> (,wl) where - v = normalizeV $ vNormal $ uncurry (-.-) $ _wlLine wl + v = normalizeV . vNormal . uncurry (-) $ _wlLine wl crsHitRadial :: Point2 -> Float -> World -> [(Point2, Creature)] crsHitRadial p r = mapMaybe f . crsNearCirc p r @@ -108,4 +108,4 @@ crsHitRadial p r = mapMaybe f . crsNearCirc p r f cr = do let cp = _crPos cr guard $ dist p cp < r + crRad (_crType cr) - return $ (cp + (1 + crRad (_crType cr)) *.* (cp - p), cr) + return (cp + (1 + crRad (_crType cr)) *.* (cp - p), cr)