Add IntMapHelper, locate wall cutting bug
This commit is contained in:
@@ -3,14 +3,13 @@ module Dodge.LevelGen.SwarmPlacement
|
||||
)
|
||||
where
|
||||
import Dodge.Data
|
||||
import Dodge.Base
|
||||
import Dodge.LevelGen.Data
|
||||
import Dodge.Creature.State.Data
|
||||
import Geometry
|
||||
import qualified IntMapHelp as IM
|
||||
|
||||
import Data.List
|
||||
import qualified Data.IntSet as IS
|
||||
import qualified Data.IntMap as IM
|
||||
import Control.Lens
|
||||
|
||||
swarmPS :: Int -> Point2 -> Float -> Creature -> Placement
|
||||
@@ -26,7 +25,7 @@ setSwarm w ps = updateCrs w' & creatureGroups %~ IM.insert gid theGroupParams
|
||||
(w', crs) = mapAccumR updateCrit w ps
|
||||
is = IS.fromList $ map _crID crs
|
||||
cpos = centroid $ map _crPos crs
|
||||
gid = newKey (_creatureGroups w')
|
||||
gid = IM.newKey (_creatureGroups w')
|
||||
theGroupParams = CrGroupParams
|
||||
{ _crGroupParamID = gid
|
||||
, _crGroupIDs = is
|
||||
@@ -52,5 +51,5 @@ updateCrit w pl = (w & creatures %~ IM.insert cid cr
|
||||
p = _psPos $ _placementSpot pl
|
||||
rot = _psRot $ _placementSpot pl
|
||||
scr = _unPutCrit $ _psType $ _placementSpot pl
|
||||
cid = newKey (_creatures w)
|
||||
cid = IM.newKey (_creatures w)
|
||||
cr = scr {_crPos = p,_crOldPos = p,_crDir = rot,_crID = cid}
|
||||
|
||||
Reference in New Issue
Block a user