Separate and reify laser beams

This commit is contained in:
2022-07-23 23:26:39 +01:00
parent 262ac237cd
commit 7563441154
13 changed files with 102 additions and 72 deletions
+26
View File
@@ -0,0 +1,26 @@
module Dodge.Laser.Draw
where
import Dodge.Data.Laser
import Picture
--drawLaser :: Particle -> Picture
----drawLaser pt = setLayer BloomNoZWrite $ pictures
-- --[ setDepth 19 . color (brightX 0 0.5 col) $ thickLine 20 ps
--drawLaser pt =
-- setLayer BloomNoZWrite $ pictures
---- [ setDepth 19 . color (brightX 1 0.5 col) $ thickLine 20 ps
-- [ setDepth 19.5 . color (brightX 10 1 col) $ thickLine 3 ps
-- ]
-- where
-- col = _ptColor pt
-- ps = _ptPoints pt
drawLaser :: Laser -> Picture
drawLaser pt =
setLayer BloomNoZWrite $ pictures
[ setDepth 19.5 . color (brightX 10 1 col) $ thickLine 3 ps
]
where
col = _laColor pt
ps = _laPoints pt
+20
View File
@@ -0,0 +1,20 @@
module Dodge.Laser.Update
where
import Dodge.Item.Weapon.LaserPath
import Dodge.WorldEvent.Damage
import Dodge.Data
import Geometry
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}
)
where
phasev = _lpPhaseV pt
sp = _lpPos pt
dir = _lpDir pt
dam = _lpDamage pt
xp = sp +.+ 800 *.* unitVectorAtAngle dir
(thHit, ps) = reflectLaserAlong phasev sp xp w