Fix error in circle wall collision detection
The wall zoning did not take into account the radius of the circle
This commit is contained in:
+28
-4
@@ -1,3 +1,4 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
module Dodge.Debug where
|
||||
|
||||
import Data.Aeson.Types
|
||||
@@ -23,10 +24,25 @@ debugEvents u = case dbools ^. at Enable_debug of
|
||||
dbools = u ^. uvConfig . debug_booleans
|
||||
|
||||
debugEvent :: DebugBool -> Universe -> Universe
|
||||
debugEvent db u = case db of
|
||||
Collision_test -> u & uvDebug . at Collision_test ?~ collisionDebugItem u
|
||||
Select_creature -> u & uvDebug . at Select_creature ?~ selectCreatureDebugItem u
|
||||
_ -> u
|
||||
debugEvent db u = u & uvDebug . at db .~ debugEvent' u db
|
||||
-- case db of
|
||||
-- Collision_test -> u & uvDebug . at Collision_test ?~ collisionDebugItem u
|
||||
-- Circ_collision_test -> u & uvDebug . at Circ_collision_test ?~ circCollisionDebugItem u
|
||||
-- Select_creature -> u & uvDebug . at Select_creature ?~ selectCreatureDebugItem u
|
||||
-- _ -> u
|
||||
|
||||
debugEvent' :: Universe -> DebugBool -> Maybe DebugItem
|
||||
debugEvent' u = \case
|
||||
Collision_test -> Just $ collisionDebugItem u
|
||||
Circ_collision_test -> Just $ circCollisionDebugItem u
|
||||
Select_creature -> Just $ selectCreatureDebugItem u
|
||||
Show_walls_near_point_cursor -> Just
|
||||
(DebugItem (const $ drawWallsNearCursor w) (const mempty) NoDebugInfo)
|
||||
Show_walls_near_segment -> Just
|
||||
(DebugItem (const $ drawWallsNearSegment w) (const mempty) NoDebugInfo)
|
||||
_ -> Nothing
|
||||
where
|
||||
w = u ^. uvWorld
|
||||
|
||||
collisionDebugItem :: Universe -> DebugItem
|
||||
collisionDebugItem u =
|
||||
@@ -44,6 +60,14 @@ selectCreatureDebugItem u =
|
||||
, _debugInfo = scrollDebugInfoInt (length $ debugSelectCreatureList 0 u) u $ clickGetCreature u
|
||||
}
|
||||
|
||||
circCollisionDebugItem :: Universe -> DebugItem
|
||||
circCollisionDebugItem _ =
|
||||
DebugItem
|
||||
{ _debugPic = drawCircCollisionTest . (^. uvWorld)
|
||||
, _debugMessage = const []
|
||||
, _debugInfo = NoDebugInfo
|
||||
}
|
||||
|
||||
scrollDebugInfoInt :: Int -> Universe -> DebugInfo -> DebugInfo
|
||||
scrollDebugInfoInt i u
|
||||
| SDL.ScancodeRShift `M.member` (u ^. uvWorld . input . pressedKeys) =
|
||||
|
||||
Reference in New Issue
Block a user