Simplify bullets
This commit is contained in:
+17
-15
@@ -21,7 +21,8 @@ import Data.Bifunctor
|
||||
|
||||
updateBullet :: World -> Bullet -> (World, Maybe Bullet)
|
||||
updateBullet w bu
|
||||
| magV (_buVel bu) < 1 || _buTimer bu <= 0 = (endspawn w, Nothing)
|
||||
-- | magV (_buVel bu) < 1 || _buTimer bu <= 0 = (endspawn w, Nothing)
|
||||
| magV (_buVel bu) < 1 = (endspawn w, Nothing)
|
||||
| otherwise =
|
||||
second (fmap updateBulVel)
|
||||
. hitEffFromBul w
|
||||
@@ -59,16 +60,17 @@ doMagnetBuBu mg bu = if isclose
|
||||
isclose = d < 100
|
||||
|
||||
updateBulVel :: Bullet -> Bullet
|
||||
updateBulVel bt = case _buTrajectory bt of
|
||||
BasicBulletTrajectory -> bt & buVel .*.*~ _buDrag bt
|
||||
MagnetTrajectory tpos -> bt
|
||||
& buVel %~ (clipV 20 . (+.+ 5 *.* normalizeV (tpos -.- _buPos bt)))
|
||||
FlechetteTrajectory tpos -> bt & buVel %~ vecTurnTo 0.2 (_buPos bt) tpos
|
||||
BezierTrajectory spos tpos xpos ->
|
||||
let bf tm = bQuadToF (spos, xpos, tpos) $ (100 - tm) * 0.05
|
||||
in bt & buVel .~ bf (fromIntegral $ t - 1) -.- bf (fromIntegral t)
|
||||
where
|
||||
t = _buTimer bt
|
||||
updateBulVel bt = bt & buVel .*.*~ _buDrag bt
|
||||
--case _buTrajectory bt of
|
||||
-- BasicBulletTrajectory -> bt & buVel .*.*~ _buDrag bt
|
||||
-- MagnetTrajectory tpos -> bt
|
||||
-- & buVel %~ (clipV 20 . (+.+ 5 *.* normalizeV (tpos -.- _buPos bt)))
|
||||
-- FlechetteTrajectory tpos -> bt & buVel %~ vecTurnTo 0.2 (_buPos bt) tpos
|
||||
-- BezierTrajectory spos tpos xpos ->
|
||||
-- let bf tm = bQuadToF (spos, xpos, tpos) $ (100 - tm) * 0.05
|
||||
-- in bt & buVel .~ bf (fromIntegral $ t - 1) -.- bf (fromIntegral t)
|
||||
-- where
|
||||
-- t = _buTimer bt
|
||||
|
||||
-- NOTE THE FOLLOWING HAS BEZIER CURE/FLECHETTE STUFF THAT MIGHT BE USEFUL
|
||||
--shootBullet :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
||||
@@ -146,7 +148,7 @@ makeFlak bu _ w = w & cWorld . lWorld . bullets .++~ [f x | x <- xs]
|
||||
s = min 10 (0.5 * magV (_buVel bu))
|
||||
xs = take 5 $ randomRs (-s,s) $ _randGen w
|
||||
f x = bu & buVel %~ g x
|
||||
& buTimer .~ 97
|
||||
-- & buTimer .~ 97
|
||||
& buPayload .~ BulSpark
|
||||
& buWidth .~ 0.5
|
||||
& buDamages .~
|
||||
@@ -170,8 +172,8 @@ hitEffFromBul w bu = case _buEffect bu of
|
||||
bu
|
||||
& buPos .~ hp +.+ normalizeV (_buPos bu -.- hp)
|
||||
& buVel %~ reflectIn dir
|
||||
& buTrajectory .~ BasicBulletTrajectory
|
||||
& buTimer -~ 1
|
||||
-- & buTrajectory .~ BasicBulletTrajectory
|
||||
-- & buTimer -~ 1
|
||||
)
|
||||
DestroyBullet -> expireAndDamage bu hitstream w
|
||||
where
|
||||
@@ -206,7 +208,7 @@ moveBullet pt =
|
||||
pt
|
||||
& buPos %~ (+.+ _buVel pt)
|
||||
& buOldPos .~ _buPos pt
|
||||
& buTimer -~ 1
|
||||
-- & buTimer -~ 1
|
||||
|
||||
destroyAt :: Point2 -> Bullet -> Maybe Bullet
|
||||
destroyAt hitp pt =
|
||||
|
||||
Reference in New Issue
Block a user