Implement targeting launcher shells using separate item

This commit is contained in:
2024-09-29 16:24:26 +01:00
parent 7d72fa3c5d
commit 88c3e02459
36 changed files with 747 additions and 610 deletions
+9 -6
View File
@@ -1,7 +1,10 @@
module Dodge.Laser.Update where
module Dodge.Laser.Update
( updateLaser
) where
import Dodge.Item.Location
import Control.Lens
import Data.Maybe
--import Data.Maybe
import Dodge.Data.World
import Dodge.Item.Weapon.LaserPath
import Dodge.WorldEvent.Damage
@@ -9,13 +12,13 @@ import Geometry
updateLaser :: World -> LaserStart -> (World, Laser)
updateLaser w pt =
( w'
( case _lpType pt of
DamageLaser dam -> damThingHitWith
(\p1 p2 p3 -> Damage LASERING dam p1 p2 p3 NoDamageEffect) sp xp thHit w
TargetingLaser itid -> w & pointerToItemID itid . itUse . tgPos ?~ last ps
, Laser{_lzPoints = sp : ps, _lzColor = _lpColor pt, _lzType = _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