Cleanup
This commit is contained in:
@@ -106,6 +106,7 @@ flockACC w cr = fromMaybe cr $ do
|
|||||||
macr =
|
macr =
|
||||||
safeMinimumOn (dist cpos . (^. crPos . _xy))
|
safeMinimumOn (dist cpos . (^. crPos . _xy))
|
||||||
. filter isFarACC
|
. filter isFarACC
|
||||||
|
. IM.elems
|
||||||
$ crsNearCirc cpos 50 w
|
$ crsNearCirc cpos 50 w
|
||||||
return $ case macr of
|
return $ case macr of
|
||||||
Nothing -> cr
|
Nothing -> cr
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ module Dodge.Creature.State (
|
|||||||
invItemEffs,
|
invItemEffs,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
import qualified Data.IntMap.Strict as IM
|
||||||
import Linear
|
import Linear
|
||||||
import NewInt
|
import NewInt
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
@@ -296,6 +297,7 @@ setRBCreatureTargeting cr w ituse
|
|||||||
newtarg =
|
newtarg =
|
||||||
safeMinimumOn (dist mwp . (^. crPos . _xy))
|
safeMinimumOn (dist mwp . (^. crPos . _xy))
|
||||||
. filter (canseepos . (^. crPos . _xy))
|
. filter (canseepos . (^. crPos . _xy))
|
||||||
|
. IM.elems
|
||||||
$ crsNearCirc mwp 40 w
|
$ crsNearCirc mwp 40 w
|
||||||
canseepos p = hasLOS ((^. crPos . _xy) cr) p w
|
canseepos p = hasLOS ((^. crPos . _xy) cr) p w
|
||||||
mwp = w ^. cWorld . lWorld . lAimPos
|
mwp = w ^. cWorld . lWorld . lAimPos
|
||||||
|
|||||||
+18
-21
@@ -966,43 +966,40 @@ radiusSpring r a b
|
|||||||
|
|
||||||
simpleCrSprings :: World -> World
|
simpleCrSprings :: World -> World
|
||||||
simpleCrSprings w =
|
simpleCrSprings w =
|
||||||
IM.foldl' (flip crSpring) (w & cWorld . lWorld . lTestString .~ mempty) $
|
IM.foldl' (flip crSpring) w $
|
||||||
IM.filter (\cr -> cr ^. crPos . _z >= 0) $ w ^. cWorld . lWorld . creatures
|
IM.filter (canSpring) $ w ^. cWorld . lWorld . creatures
|
||||||
|
|
||||||
-- note that this may in rare cases not push creatures away from each other
|
-- note that this may in rare cases not push creatures away from each other
|
||||||
crSpring :: Creature -> World -> World
|
crSpring :: Creature -> World -> World
|
||||||
crSpring c w =
|
crSpring c w =
|
||||||
foldl' (flip $ crCrSpring c) w $
|
IM.foldl' (flip $ crCrSpring c) w . IM.filter canSpring $
|
||||||
crsNearCirc
|
crsNearCirc (c ^. crPos . _xy) (crRad $ c ^. crType) w
|
||||||
(c ^. crPos . _xy)
|
|
||||||
(crRad $ c ^. crType)
|
canSpring :: Creature -> Bool
|
||||||
w
|
canSpring cr = cr ^. crPos . _z >= 0 && case cr ^. crHP of
|
||||||
|
HP{} -> True
|
||||||
|
CrIsCorpse{} -> True
|
||||||
|
CrIsGibs -> False
|
||||||
|
CrIsPitted -> False
|
||||||
|
|
||||||
crCrSpring :: Creature -> Creature -> World -> World
|
crCrSpring :: Creature -> Creature -> World -> World
|
||||||
crCrSpring c1 c2
|
crCrSpring c1 c2
|
||||||
| id1 == id2 = id
|
| id1 == id2 = id
|
||||||
| vec == V2 0 0 = id
|
| vec == V2 0 0 = id
|
||||||
| diff >= comRad || nopush c1 || nopush c2
|
| diff >= comRad = id
|
||||||
= id
|
|
||||||
| otherwise =
|
| otherwise =
|
||||||
(cWorld . lWorld . creatures
|
( cWorld . lWorld . creatures
|
||||||
%~ ( (ix id1 . crPos . _xy +~ overlap1)
|
%~ ( (ix id1 . crPos . _xy +~ overlap c2)
|
||||||
. (ix id2 . crPos . _xy -~ overlap2)
|
. (ix id2 . crPos . _xy -~ overlap c1)
|
||||||
))
|
)
|
||||||
. (cWorld . lWorld . lTestString .:~ show id1 <> " " <> show id2 )
|
)
|
||||||
where
|
where
|
||||||
nopush cr = case cr ^. crHP of
|
|
||||||
HP {} -> False
|
|
||||||
CrIsCorpse {} -> False
|
|
||||||
CrIsGibs -> True
|
|
||||||
CrIsPitted -> True
|
|
||||||
id1 = _crID c1
|
id1 = _crID c1
|
||||||
id2 = _crID c2
|
id2 = _crID c2
|
||||||
vec = c1 ^. crPos . _xy - c2 ^. crPos . _xy
|
vec = c1 ^. crPos . _xy - c2 ^. crPos . _xy
|
||||||
diff = magV vec
|
diff = magV vec
|
||||||
comRad = crRad (c1 ^. crType) + crRad (c2 ^. crType)
|
comRad = crRad (c1 ^. crType) + crRad (c2 ^. crType)
|
||||||
overlap1 = ((comRad - diff) * crMass (_crType c2) * 0.5 / massT) *^ signorm vec
|
overlap c = ((comRad - diff) * crMass (_crType c) * 0.5 / massT) *^ signorm vec
|
||||||
overlap2 = ((comRad - diff) * crMass (_crType c1) * 0.5 / massT) *^ signorm vec
|
|
||||||
massT = crMass (_crType c1) + crMass (_crType c2)
|
massT = crMass (_crType c1) + crMass (_crType c2)
|
||||||
|
|
||||||
updateDelayedEvents :: World -> World
|
updateDelayedEvents :: World -> World
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ wlsHitRadial p r = IM.mapMaybe f . wlsNearCirc p r
|
|||||||
-- v = normalizeV . vNormal . uncurry (-) $ _wlLine wl
|
-- v = normalizeV . vNormal . uncurry (-) $ _wlLine wl
|
||||||
|
|
||||||
crsHitRadial :: Point2 -> Float -> World -> [(Point2, Creature)]
|
crsHitRadial :: Point2 -> Float -> World -> [(Point2, Creature)]
|
||||||
crsHitRadial p r = mapMaybe f . crsNearCirc p r
|
crsHitRadial p r = mapMaybe f . IM.elems . crsNearCirc p r
|
||||||
where
|
where
|
||||||
f cr = do
|
f cr = do
|
||||||
let cp = cr ^. crPos . _xy
|
let cp = cr ^. crPos . _xy
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ crixsNearSeg = nearSeg crZoneSize _crZoning
|
|||||||
crIXsNearCirc :: Point2 -> Float -> World -> IS.IntSet
|
crIXsNearCirc :: Point2 -> Float -> World -> IS.IntSet
|
||||||
crIXsNearCirc p r = crsNearRect (p + V2 r r) (p - V2 r r)
|
crIXsNearCirc p r = crsNearRect (p + V2 r r) (p - V2 r r)
|
||||||
|
|
||||||
crsNearCirc :: Point2 -> Float -> World -> [Creature]
|
crsNearCirc :: Point2 -> Float -> World -> IM.IntMap Creature
|
||||||
crsNearCirc p r w = mapMaybe (\cid -> w ^? cWorld . lWorld . creatures . ix cid) . IS.toList
|
crsNearCirc p r w = IM.restrictKeys (w ^. cWorld . lWorld . creatures)
|
||||||
$ crIXsNearCirc p r w
|
$ crIXsNearCirc p r w
|
||||||
|
|
||||||
crsNearRect :: Point2 -> Point2 -> World -> IS.IntSet
|
crsNearRect :: Point2 -> Point2 -> World -> IS.IntSet
|
||||||
|
|||||||
@@ -2779,6 +2779,7 @@ calcSmoothScroll src/Dodge/SmoothScroll.hs 11;" f
|
|||||||
calcTexCoord src/Tile.hs 19;" f
|
calcTexCoord src/Tile.hs 19;" f
|
||||||
canSee src/Dodge/Base/Collide.hs 321;" f
|
canSee src/Dodge/Base/Collide.hs 321;" f
|
||||||
canSeeIndirect src/Dodge/Base/Collide.hs 328;" f
|
canSeeIndirect src/Dodge/Base/Collide.hs 328;" f
|
||||||
|
canSpring src/Dodge/Update.hs 978;" f
|
||||||
cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f
|
cancelExamineInventory src/Dodge/Item/BackgroundEffect.hs 23;" f
|
||||||
capacitor src/Dodge/Item/Ammo.hs 67;" f
|
capacitor src/Dodge/Item/Ammo.hs 67;" f
|
||||||
card8Vec src/Dodge/Base/CardinalPoint.hs 17;" f
|
card8Vec src/Dodge/Base/CardinalPoint.hs 17;" f
|
||||||
@@ -2947,7 +2948,7 @@ crAwayFromPost src/Dodge/Creature/Test.hs 86;" f
|
|||||||
crBlips src/Dodge/RadarSweep.hs 88;" f
|
crBlips src/Dodge/RadarSweep.hs 88;" f
|
||||||
crCamouflage src/Dodge/Creature/Picture.hs 33;" f
|
crCamouflage src/Dodge/Creature/Picture.hs 33;" f
|
||||||
crCanSeeCr src/Dodge/Creature/Test.hs 53;" f
|
crCanSeeCr src/Dodge/Creature/Test.hs 53;" f
|
||||||
crCrSpring src/Dodge/Update.hs 982;" f
|
crCrSpring src/Dodge/Update.hs 985;" f
|
||||||
crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f
|
crCurrentEquipment src/Dodge/Creature/Statistics.hs 62;" f
|
||||||
crDeathSounds src/Dodge/Creature/Vocalization.hs 45;" f
|
crDeathSounds src/Dodge/Creature/Vocalization.hs 45;" f
|
||||||
crDexterity src/Dodge/Creature/Statistics.hs 19;" f
|
crDexterity src/Dodge/Creature/Statistics.hs 19;" f
|
||||||
@@ -5402,7 +5403,7 @@ updateCreatureStrides src/Dodge/Update.hs 370;" f
|
|||||||
updateDebris src/Dodge/Update.hs 665;" f
|
updateDebris src/Dodge/Update.hs 665;" f
|
||||||
updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f
|
updateDebrisChunk src/Dodge/Prop/Moving.hs 16;" f
|
||||||
updateDebugMessageOffset src/Dodge/Update.hs 102;" f
|
updateDebugMessageOffset src/Dodge/Update.hs 102;" f
|
||||||
updateDelayedEvents src/Dodge/Update.hs 1003;" f
|
updateDelayedEvents src/Dodge/Update.hs 1005;" f
|
||||||
updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f
|
updateDisplaySections src/Dodge/DisplayInventory.hs 116;" f
|
||||||
updateDistortion src/Dodge/Distortion.hs 8;" f
|
updateDistortion src/Dodge/Distortion.hs 8;" f
|
||||||
updateDistortions src/Dodge/Update.hs 644;" f
|
updateDistortions src/Dodge/Update.hs 644;" f
|
||||||
|
|||||||
Reference in New Issue
Block a user