Move bullet bouncing into separate datatype field

This commit is contained in:
2022-07-17 20:23:50 +01:00
parent b860de70a7
commit 6c6fe43bc0
9 changed files with 98 additions and 67 deletions
+2 -12
View File
@@ -2,7 +2,7 @@ module Dodge.Creature.Damage where
import Dodge.Data
import Dodge.Creature.Test
import Dodge.Spark
import Dodge.Bullet
--import Dodge.Bullet
import Color
import Geometry
import LensHelp
@@ -42,16 +42,6 @@ applyDamageEffect dm de cr w = case de of
& creatures . ix (_crID cr) . crPos .+.+~ (1/_crMass cr) *.* pback
TorqueDamage rot -> w
& creatures . ix (_crID cr) . crDir +~ rot
BounceBullet bt | crIsArmouredFrom p cr -> w & instantBullets .:~ bouncer
where
bouncer = (aBulAt Nothing pOut reflectVel (_buDrag bt) (_buHitEff bt) (_buWidth bt)
BasicBulletTrajectory
) {_buTimer = _buTimer bt - 1}
pOut = p +.+ 2 *.* newDir
reflectVel = magV bulVel *.* newDir
newDir = squashNormalizeV (p -.- _crPos cr)
bulVel = _buVel bt
BounceBullet _ -> w
DamageSpawn f -> w & instantParticles .:~ thepart
& randGen .~ g
where
@@ -63,7 +53,7 @@ applyDamageEffect dm de cr w = case de of
NoDamageEffect -> w
where
fromDir = _dmFrom dm
p = _dmAt dm
--p = _dmAt dm
applyIndividualDamage :: Creature -> World -> Damage -> World
applyIndividualDamage cr w dm = applyDamageEffect dm (_dmEffect dm) cr $ applyIndividualDamage' cr w dm