Continue bullet refactor
This commit is contained in:
@@ -4,9 +4,10 @@ module Dodge.Particle.Bullet.Draw
|
||||
import Dodge.Data
|
||||
import Picture
|
||||
|
||||
import Linear
|
||||
|
||||
drawBul :: Bullet -> Picture
|
||||
drawBul pt = setLayer BloomNoZWrite
|
||||
. setDepth 20
|
||||
. color (_buColor pt)
|
||||
-- $ thickLine (_ptWidth pt) (take 3 $ _ptTrail pt)
|
||||
$ thickLine (_buWidth pt) (take 2 $ _buTrail pt)
|
||||
. color (V4 200 200 200 2)
|
||||
$ thickLine (_buWidth pt) [_buOldPos pt, _buPos pt]
|
||||
|
||||
@@ -4,7 +4,6 @@ module Dodge.Particle.Bullet.Spawn
|
||||
import Dodge.Data
|
||||
import Dodge.Particle.Bullet.Update
|
||||
import Geometry
|
||||
import Picture
|
||||
import LensHelp
|
||||
|
||||
import Data.Maybe
|
||||
@@ -13,19 +12,18 @@ import Data.Bifunctor
|
||||
aBulAt
|
||||
:: Maybe Float -- ^ Start velocity step factor
|
||||
-> (Bullet -> Bullet)
|
||||
-> Maybe Color
|
||||
-> Point2 -- ^ Start position
|
||||
-> Point2 -- ^ Velocity
|
||||
-> Float -- ^ Drag
|
||||
-> HitEffect'
|
||||
-> Float -- ^ Bullet width
|
||||
-> Bullet
|
||||
aBulAt vfact updatemod mcol pos vel drag hiteff width = Bullet
|
||||
aBulAt vfact updatemod pos vel drag hiteff width = Bullet
|
||||
{ _buUpdate = theupdate
|
||||
, _buVel = fromMaybe 1 vfact *.* vel
|
||||
, _buDrag = drag
|
||||
, _buColor = fromMaybe (V4 200 200 200 2) mcol
|
||||
, _buTrail = [pos]
|
||||
, _buPos = pos
|
||||
, _buOldPos = pos
|
||||
, _buWidth = width
|
||||
, _buTimer = 100
|
||||
, _buHitEff = hiteff
|
||||
|
||||
@@ -22,7 +22,7 @@ mvBullet w bt'
|
||||
bt = foldr (\mg b -> _mgField mg mg b) bt' $ _magnets w
|
||||
dodrag = buVel .*.*~ drag
|
||||
drag = _buDrag bt
|
||||
(p:_) = _buTrail bt
|
||||
p = _buPos bt
|
||||
vel = _buVel bt
|
||||
hiteff = _buHitEff bt
|
||||
t = _buTimer bt
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module Dodge.Particle.Damage where
|
||||
import Dodge.Data
|
||||
import Geometry
|
||||
import LensHelp
|
||||
--import LensHelp
|
||||
|
||||
import System.Random
|
||||
import Control.Monad.State
|
||||
@@ -14,7 +14,7 @@ spawnAtBulDams thespawn bt p =
|
||||
, Damage PUSHDAM 1 sp p ep . PushBackDamage $ 2 *.* bulVel
|
||||
]
|
||||
where
|
||||
sp = head $ _buTrail bt
|
||||
sp = _buPos bt
|
||||
bulVel = _buVel bt
|
||||
ep = sp +.+ bulVel
|
||||
|
||||
@@ -27,9 +27,7 @@ simpleDam dt amount bt p = [ Damage dt amount sp p ep NoDamageEffect ]
|
||||
simpleDam' :: DamageType -> Int -> Bullet -> Point2 -> [Damage]
|
||||
simpleDam' dt amount bt p = [ Damage dt amount sp p ep NoDamageEffect ]
|
||||
where
|
||||
sp = case bt ^? buTrail of
|
||||
Nothing -> 0
|
||||
Just xs -> head xs
|
||||
sp = _buPos bt
|
||||
bulVel = _buVel bt
|
||||
ep = sp +.+ bulVel
|
||||
|
||||
@@ -39,7 +37,7 @@ heavyBulDams bt p =
|
||||
, Damage PUSHDAM 1 sp p ep . PushBackDamage $ 2 *.* bulVel
|
||||
]
|
||||
where
|
||||
sp = head $ _buTrail bt
|
||||
sp = _buPos bt
|
||||
bulVel = _buVel bt
|
||||
ep = sp +.+ bulVel
|
||||
|
||||
@@ -49,7 +47,7 @@ basicBulDams bt p =
|
||||
, Damage PUSHDAM 1 sp p ep . PushBackDamage $ 2 *.* bulVel
|
||||
]
|
||||
where
|
||||
sp = head $ _buTrail bt
|
||||
sp = _buPos bt
|
||||
bulVel = _buVel bt
|
||||
ep = sp +.+ bulVel
|
||||
|
||||
@@ -72,7 +70,7 @@ hvBulDams bt p =
|
||||
, Damage PUSHDAM 1 sp p ep . PushBackDamage $ 3 *.* (ep -.- sp)
|
||||
]
|
||||
where
|
||||
sp = head $ _buTrail bt
|
||||
sp = _buPos bt
|
||||
bulVel = _buVel bt
|
||||
ep = sp +.+ bulVel
|
||||
|
||||
@@ -82,6 +80,6 @@ bounceBulDams bt p =
|
||||
, Damage PUSHDAM 1 sp p ep . PushBackDamage $ 2 *.* bulVel
|
||||
]
|
||||
where
|
||||
sp = head $ _buTrail bt
|
||||
sp = _buPos bt
|
||||
bulVel = _buVel bt
|
||||
ep = sp +.+ bulVel
|
||||
|
||||
@@ -124,18 +124,10 @@ drawInverseShockwave pt
|
||||
rad = r - 0.1 * r * fromIntegral (10 - t)
|
||||
thickness = fromIntegral (10 - t) **2 * rad / 40
|
||||
|
||||
drawBul :: Bullet -> Picture
|
||||
drawBul pt = setLayer BloomNoZWrite
|
||||
. setDepth 20
|
||||
. color (_buColor pt)
|
||||
-- $ thickLine (_ptWidth pt) (take 3 $ _ptTrail pt)
|
||||
$ thickLine (_buWidth pt) (take 2 $ _buTrail pt)
|
||||
|
||||
drawSpark :: Particle -> Picture
|
||||
drawSpark pt = setLayer BloomNoZWrite
|
||||
. setDepth 20
|
||||
. color (_ptColor pt)
|
||||
-- $ thickLine (_ptWidth pt) (take 3 $ _ptTrail pt)
|
||||
$ thickLine (_ptWidth pt) (take 2 $ _ptTrail pt)
|
||||
|
||||
drawTeslaArc :: Particle -> Picture
|
||||
|
||||
@@ -5,10 +5,9 @@ import Geometry
|
||||
|
||||
mvPt :: Bullet -> Maybe Bullet
|
||||
mvPt pt = Just $ pt
|
||||
& buTrail %~ f
|
||||
& buPos %~ (+.+ _buVel pt)
|
||||
& buOldPos .~ _buPos pt
|
||||
& buTimer -~ 1
|
||||
where
|
||||
f trl = head trl +.+ _buVel pt : trl
|
||||
|
||||
mvPt' :: Particle -> Maybe Particle
|
||||
mvPt' pt = Just $ pt
|
||||
@@ -24,17 +23,10 @@ destroyAt hitp pt = Just $ pt
|
||||
& ptTimer %~ (min 3 . subtract 1)
|
||||
destroyAt' :: Point2 -> Bullet -> Maybe Bullet
|
||||
destroyAt' hitp pt = Just $ pt
|
||||
& buUpdate .~ killBulletUpdate
|
||||
& buTrail .:~ hitp
|
||||
& buTimer %~ (min 3 . subtract 1)
|
||||
|
||||
killBulletUpdate :: World -> Bullet -> (World,Maybe Bullet)
|
||||
killBulletUpdate w pt
|
||||
| _buTimer pt <= 0 = (w,Nothing)
|
||||
| otherwise = (w
|
||||
, Just $ pt & buTimer -~ 1
|
||||
& buTrail %~ (\(x:xs) -> x:x:xs)
|
||||
)
|
||||
& buUpdate .~ (\w -> const (w,Nothing))
|
||||
& buPos .~ hitp
|
||||
& buOldPos .~ _buPos pt
|
||||
& buTimer %~ (min 3 . subtract 1)
|
||||
|
||||
killParticleUpdate :: World -> Particle -> (World,Maybe Particle)
|
||||
killParticleUpdate w pt
|
||||
|
||||
Reference in New Issue
Block a user