Add IntMapHelper, locate wall cutting bug
This commit is contained in:
+3
-13
@@ -16,15 +16,14 @@ import Dodge.Base.Window
|
||||
import Dodge.Base.Collide
|
||||
import Geometry
|
||||
import Picture
|
||||
import qualified IntMapHelp as IM
|
||||
|
||||
import Control.Lens
|
||||
|
||||
--import Control.Monad.State
|
||||
import Data.List
|
||||
--import Data.Function
|
||||
import Data.Maybe
|
||||
--import Data.Bifunctor
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
--import qualified Data.IntSet as IS
|
||||
--import qualified Data.Set as S
|
||||
|
||||
@@ -177,21 +176,12 @@ adjustIMZone f x y n = IM.adjust f' x
|
||||
where
|
||||
f' = IM.adjust f'' y
|
||||
f'' = IM.adjust f n
|
||||
{- | Find a key value one higher than any key in the map, or zero if the map is
|
||||
- empty -}
|
||||
newKey :: IM.IntMap a -> Int
|
||||
newKey = maybe 0 ((+ 1) . fst) . IM.lookupMax
|
||||
{- | Finds unused projectile key. -}
|
||||
newProjectileKey :: World -> Int
|
||||
newProjectileKey = newKey . _projectiles
|
||||
newProjectileKey = IM.newKey . _projectiles
|
||||
{- | Finds unused creature key. -}
|
||||
newCrKey :: World -> Int
|
||||
newCrKey = newKey . _creatures
|
||||
{- | Insert an element with some new key. -}
|
||||
insertNewKey :: a -> IM.IntMap a -> IM.IntMap a
|
||||
insertNewKey x m = case IM.lookupMax m of
|
||||
Nothing -> IM.singleton 0 x
|
||||
Just (k,_) -> IM.insert (k+1) x m
|
||||
newCrKey = IM.newKey . _creatures
|
||||
{- | TODO: determine precisely what this does. -}
|
||||
reflectPointCreature :: Point2 -> Point2 -> Creature -> Maybe (Point2, Point2, Int)
|
||||
reflectPointCreature p1 p2 cr = case collidePointCirc p1 p2 (_crRad cr) (_crPos cr) of
|
||||
|
||||
Reference in New Issue
Block a user