{- Bullet update. -} module Dodge.Particle.Bullet.Update where import Dodge.Data --import Dodge.Base import Dodge.WorldEvent.ThingsHit --import Picture import Geometry import Control.Lens --import Data.Maybe --import Data.List --import Data.Bifunctor --import qualified Data.IntMap.Strict as IM {- Update for a generic bullet. -} mvGenBullet' :: World -> Particle -> (World, Maybe Particle) mvGenBullet' w bt | t <= 0 = (w, Nothing) | t < 4 = (w, Just $ set btPassThrough' Nothing $ set btTrail' (p:p:ps) $ set btTimer' (t-1) bt ) | otherwise = hiteff bt (thingsHitExceptCr mcr p (p +.+ vel) w) w where mcr = _btPassThrough' bt (p:ps) = _btTrail' bt vel = _btVel' bt hiteff = _btHitEffect' bt t = _btTimer' bt