Remove ssaTri, bullet movement is broken

This commit is contained in:
2021-12-15 17:34:20 +00:00
parent dccacd9d22
commit adab32bf68
13 changed files with 74 additions and 213 deletions
+11 -12
View File
@@ -20,8 +20,8 @@ import Geometry
--import Geometry.Vector3D
--import Geometry.Data
import qualified IntMapHelp as IM
import LensHelp
import Control.Lens
import System.Random
import Control.Monad.State
import Data.Tuple
@@ -34,7 +34,7 @@ aFlameParticle
aFlameParticle t pos vel maycid = PtZ
{ _ptDraw = drawFlame vel
, _ptUpdate = moveFlame vel
, _btVel' = vel
, _ptVel = vel
, _btColor' = red
, _btPos' = pos
, _btPassThrough' = maycid
@@ -90,13 +90,13 @@ moveFlame rotd w pt
time = _btTimer' pt
doSound = soundContinue Flame (V2 x y) fireLoudS (Just 2)
sp@(V2 x y) = _btPos' pt
vel = _btVel' pt
vel = _ptVel pt
ep = sp +.+ vel
mvPt speed = Just $ pt
{ _btTimer' = time - 1
, _btPos' = ep
, _btPassThrough' = Nothing
, _btVel' = speed *.* vel }
, _ptVel = speed *.* vel }
damcrs = foldr (\cr -> fst . hiteff [(ep,Left cr)]) w
$ IM.filter closeCrs $ _creatures w
closeCrs cr = dist ep (_crPos cr)
@@ -107,7 +107,7 @@ moveFlame rotd w pt
rfl wl p = Just $ pt
{ _btTimer' = time -1
, _btPos' = pOut p
, _btVel' = reflV wl
, _ptVel = reflV wl
}
pOut p = p +.+ squashNormalizeV (sp -.- p)
reflV wall = (0.3 *.* reflectIn (uncurry (-.-) . swap $ _wlLine wall) vel )
@@ -124,12 +124,10 @@ makeFlameletTimed
-> World
makeFlameletTimed (V2 x y) z vel maycid size time w = w
& randGen .~ g
& particles %~ (theFlamelet :)
where
theFlamelet = PtZ
& particles .:~ PtZ
{ _ptDraw = drawFlameletZ rot
, _ptUpdate = moveFlamelet
, _btVel' = vel
, _ptVel = vel
, _btColor' = red
, _btPos' = V2 x y
, _btPassThrough' = maycid
@@ -138,6 +136,7 @@ makeFlameletTimed (V2 x y) z vel maycid size time w = w
, _btHitEffect' = destroyOnImpact (doFlameDam 1) noEff
, _ptZ = z
}
where
(rot ,g) = randomR (0,3) $ _randGen w
drawFlameletZ
@@ -152,7 +151,7 @@ drawFlameletZ rot pt = pictures
where
z = _ptZ pt
sp = _btPos' pt
vel = _btVel' pt
vel = _ptVel pt
ep = sp +.+ vel
size = _btWidth' pt
siz2 = size + 0.2
@@ -193,13 +192,13 @@ moveFlamelet w pt
| otherwise = (flameFlicker pt damcrs, mvPt)
where
sp = _btPos' pt
vel = _btVel' pt
vel = _ptVel pt
ep = sp +.+ vel
size = _btWidth' pt
mvPt = Just $ pt & btTimer' -~ 1
& btPos' .~ ep
& btPassThrough' .~ Nothing
& btVel' .~ 0.8 *.* vel
& ptVel .~ 0.8 *.* vel
damcrs = w & creatures %~ IM.map damifclose
isClose cr = dist ep (_crPos cr) < _crRad cr + size
damifclose cr