Fix wall bug, refactor placements
This commit is contained in:
+8
-1
@@ -16,6 +16,8 @@ module Dodge.Zone
|
||||
, cloudsNearPoint
|
||||
, wallsNearZones
|
||||
, zoneOfSight
|
||||
, flattenIMIMIM
|
||||
, module Dodge.Zone.Data
|
||||
)
|
||||
where
|
||||
import Dodge.Data
|
||||
@@ -87,7 +89,9 @@ zoneOfSight w =
|
||||
|
||||
wallsDoubleScreen :: World -> IM.IntMap Wall
|
||||
wallsDoubleScreen w
|
||||
= foldl' (flip $ IM.union . \i -> innerFold (f i (_znObjects $ _wallsZone w))) IM.empty xs
|
||||
-- = foldl' (flip $ IM.union . \i -> innerFold (f i (_znObjects $ _wallsZone w))) IM.empty xs
|
||||
-- for some reason (TODO diagnose) the foldl' version causes errors
|
||||
= foldr (IM.union . \i -> innerFold (f i (_znObjects $ _wallsZone w))) IM.empty xs
|
||||
where
|
||||
innerFold m = foldl' (flip $ IM.union . \ j -> f j m) IM.empty ys
|
||||
f i m = case IM.lookup i m of
|
||||
@@ -168,3 +172,6 @@ wallsNearPoint p w = IM.unions [f b $ f a $ _znObjects $ _wallsZone w | a<-[x-1
|
||||
f i m = case IM.lookup i m of
|
||||
Just val -> val
|
||||
_ -> IM.empty
|
||||
|
||||
flattenIMIMIM :: IM.IntMap (IM.IntMap (IM.IntMap a)) -> IM.IntMap a
|
||||
flattenIMIMIM = IM.unions . fmap IM.unions
|
||||
|
||||
Reference in New Issue
Block a user