From 09f1ca4e880c30d4cdcae90559e8fc2e495c1136 Mon Sep 17 00:00:00 2001 From: nek0 Date: Sat, 12 Jan 2019 03:44:42 +0100 Subject: [PATCH] finally fix corner case --- src/MainGame/WorldMap.hs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/MainGame/WorldMap.hs b/src/MainGame/WorldMap.hs index a04da78..7d23095 100644 --- a/src/MainGame/WorldMap.hs +++ b/src/MainGame/WorldMap.hs @@ -847,21 +847,20 @@ checkBoundsCollision2 -> V2 Double checkBoundsCollision2 pre@(V2 pr pc) nex dt acc (Boundaries (minr, minc) (maxr, maxc)) - | colltr < dt && colltc < dt = V2 0 0 | colltr < dt || colltc < dt = V2 0 0 | otherwise = acc where V2 vr vc = fmap (/ dt) (nex - pre) colltr - | vr > 0 && prr < maxr && (prc > minc && prc < maxc) = + | vr > 0 && prr <= maxr && (prc >= minc && prc <= maxc) = ((fromIntegral (floor pr :: Int) + minr - 0.15) - pr) / vr - | vr < 0 && prr > minr && (prc > minc && prc < maxc) = + | vr < 0 && prr >= minr && (prc >= minc && prc <= maxc) = ((fromIntegral (floor pr :: Int) + maxr + 0.15) - pr) / vr | otherwise = dt colltc - | vc > 0 && prc < maxc && (prr > minr && prr < maxr) = + | vc > 0 && prc <= maxc && (prr >= minr && prr <= maxr) = ((fromIntegral (floor pc :: Int) + minc - 0.15) - pc) / vc - | vc < 0 && prc > minc && (prr > minr && prr < maxr) = + | vc < 0 && prc >= minc && (prr >= minr && prr <= maxr) = ((fromIntegral (floor pc :: Int) + maxc + 0.15) - pc) / vc | otherwise = dt prr = pr - fromIntegral (floor pr :: Int)