Reify shockwaves
This commit is contained in:
@@ -5,16 +5,21 @@ import Dodge.WorldEvent.Damage
|
||||
import Dodge.Data
|
||||
import Geometry
|
||||
|
||||
import Control.Lens
|
||||
import Data.Maybe
|
||||
|
||||
updateLaser :: World -> LaserStart -> (World, Laser)
|
||||
updateLaser w pt =
|
||||
( damThingHitWith (\p1 p2 p3 -> Damage LASERING dam p1 p2 p3 NoDamageEffect) sp xp thHit w
|
||||
, Laser {_laPoints = sp:ps , _laColor = _lpColor pt}
|
||||
( w'
|
||||
, Laser {_laPoints = sp:ps , _laColor = _lpColor pt, _laType = _lpType pt}
|
||||
)
|
||||
where
|
||||
w' = fromMaybe w $ do
|
||||
dam <- pt ^? lpType . laserTypeDamage
|
||||
return $ damThingHitWith (\p1 p2 p3 -> Damage LASERING dam p1 p2 p3 NoDamageEffect) sp xp thHit w
|
||||
phasev = _lpPhaseV pt
|
||||
sp = _lpPos pt
|
||||
dir = _lpDir pt
|
||||
dam = _lpDamage pt
|
||||
xp = sp +.+ 800 *.* unitVectorAtAngle dir
|
||||
(thHit, ps) = reflectLaserAlong phasev sp xp w
|
||||
|
||||
|
||||
Reference in New Issue
Block a user