Tweak "magnets" that affect bullet movement
This commit is contained in:
+16
-2
@@ -10,7 +10,6 @@ import Data.Maybe
|
||||
import Dodge.Creature.Test
|
||||
import Dodge.Data.World
|
||||
import Dodge.EnergyBall
|
||||
import Dodge.MagnetBuBu
|
||||
import Dodge.Movement.Turn
|
||||
import Dodge.WorldEvent.SpawnParticle
|
||||
import Dodge.WorldEvent.ThingsHit
|
||||
@@ -35,7 +34,22 @@ updateBullet w bu
|
||||
|
||||
applyMagnetsToBul :: Bullet -> World -> Bullet
|
||||
applyMagnetsToBul bu =
|
||||
foldl' (flip doMagnetBuBu) bu . _magnets . _lWorld . _cWorld
|
||||
foldl' (flip doMagnetBuBu) bu . _oldMagnets . _lWorld . _cWorld
|
||||
|
||||
doMagnetBuBu :: Magnet -> Bullet -> Bullet
|
||||
doMagnetBuBu mg bu = case _mgField mg of
|
||||
MagnetAlign | isclose -> bu
|
||||
MagnetDeflect | isclose -> bu & buVel %~ vecTurnTo (50 * pi / d) bpos mgdeflectpos
|
||||
_ -> bu
|
||||
where
|
||||
bvel = bu ^. buVel
|
||||
mpos = mg ^. mgPos
|
||||
bpos = bu ^. buPos
|
||||
mgdeflectpos
|
||||
| isLHS mpos (mpos + bvel) bpos = bpos + vNormal (bpos - mpos)
|
||||
| otherwise = bpos - vNormal (bpos - mpos)
|
||||
d = dist (bu ^. buPos) (mg ^. mgPos)
|
||||
isclose = d < 100
|
||||
|
||||
updateBulVel :: Bullet -> Bullet
|
||||
updateBulVel bt = case _buTrajectory bt of
|
||||
|
||||
Reference in New Issue
Block a user