Cleanup
This commit is contained in:
+27
-16
@@ -5,6 +5,7 @@ module Dodge.HeldUse
|
||||
)
|
||||
where
|
||||
|
||||
import Color.Data
|
||||
import Dodge.Base.Coordinate
|
||||
import Dodge.Base.Collide
|
||||
import Dodge.Inventory.Lock
|
||||
@@ -24,7 +25,7 @@ import Data.Maybe
|
||||
import Dodge.Creature.HandPos
|
||||
import Dodge.Data.World
|
||||
import Dodge.Gas
|
||||
import Dodge.Item.Weapon.BatteryGuns
|
||||
--import Dodge.Item.Weapon.BatteryGuns
|
||||
--import Dodge.Item.Weapon.Launcher
|
||||
import Dodge.Item.Weapon.Radar
|
||||
import Dodge.Item.Weapon.Shatter
|
||||
@@ -187,9 +188,9 @@ useLoadedAmmo _ _ (cme,w) (_,Nothing) = (cme, w)
|
||||
useLoadedAmmo itmtree cr (cme,w) (mzid,Just (mz,x,magtree)) = (,) (cme & cmeSound .~ True) $
|
||||
removeAmmoFromMag x mid cr . makeMuzzleFlare mz itm cr $ case _mzEffect mz of
|
||||
MuzzleShootBullet -> shootBullet itmtree cr (mz,x,magtree) w
|
||||
MuzzleLaser -> shootLaser' itm cr mz w
|
||||
MuzzleLaser -> shootLaser itm cr mz w
|
||||
MuzzleTesla -> shootTeslaArc itm cr mz w
|
||||
MuzzleTractor -> shootTractorBeam itm cr w
|
||||
MuzzleTractor -> shootTractorBeam cr w
|
||||
MuzzleLauncher -> createProjectile magtree mz itmtree cr w
|
||||
MuzzleNozzle {} -> useGasParams mid mz itm cr $ walkNozzle mzid mz itm cr w
|
||||
MuzzleShatter -> shootShatter itm cr w
|
||||
@@ -219,15 +220,15 @@ walkNozzle mzid mz itm cr w = fromMaybe w $ do
|
||||
wa = min maxa $ max (negate maxa) (_nzCurrentWalkAngle nz + walkamount)
|
||||
|
||||
|
||||
shootTractorBeam :: Item -> Creature -> World -> World
|
||||
shootTractorBeam itm cr w = w & cWorld . lWorld . tractorBeams .:~ tractorBeamAt spos outpos dir power
|
||||
shootTractorBeam :: Creature -> World -> World
|
||||
shootTractorBeam cr w = w & cWorld . lWorld . tractorBeams .:~ tractorBeamAt spos outpos dir power
|
||||
where
|
||||
cpos = _crPos cr
|
||||
spos = cpos +.+ (_crRad cr + 10) *.* unitVectorAtAngle dir
|
||||
xpos = cpos +.+ 400 *.* unitVectorAtAngle dir
|
||||
dir = _crDir cr
|
||||
outpos = fst $ collidePointWallsFilter (const True) cpos xpos w
|
||||
power = _attractionPower . _itParams $ itm
|
||||
power = 1
|
||||
|
||||
tractorBeamAt :: Point2 -> Point2 -> Float -> Point2 -> TractorBeam
|
||||
tractorBeamAt pos outpos dir power =
|
||||
@@ -240,23 +241,33 @@ tractorBeamAt pos outpos dir power =
|
||||
where
|
||||
d = unitVectorAtAngle dir * power
|
||||
|
||||
shootLaser' :: Item -> Creature -> Muzzle -> World -> World
|
||||
shootLaser' itm cr mz w = w
|
||||
shootLaser :: Item -> Creature -> Muzzle -> World -> World
|
||||
shootLaser itm cr mz w = w
|
||||
& randGen .~ g
|
||||
&
|
||||
cWorld . lWorld . lasers
|
||||
.:~ lasRayAt
|
||||
(_lasColor $ _itParams itm)
|
||||
(_lasDamage $ _itParams itm)
|
||||
(_phaseV $ _itParams itm)
|
||||
pos
|
||||
dir
|
||||
& cWorld . lWorld . lasers
|
||||
.:~ LaserStart
|
||||
{ _lpType = DamageLaser . _lasDamage $ _itParams itm
|
||||
, _lpPhaseV = _phaseV $ _itParams itm
|
||||
, _lpPos = pos
|
||||
, _lpDir = dir
|
||||
, _lpColor = _lasColor $ _itParams itm
|
||||
}
|
||||
where
|
||||
pos = _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm)
|
||||
(a,g) = randomR (-inacc,inacc) $ _randGen w
|
||||
inacc = _mzInaccuracy mz
|
||||
dir = _crDir cr + _mzRot mz + a
|
||||
|
||||
lasRayAt :: Color -> Int -> Float -> Point2 -> Float -> LaserStart
|
||||
lasRayAt col dam phasev pos dir =
|
||||
LaserStart
|
||||
{ _lpType = DamageLaser dam
|
||||
, _lpPhaseV = phasev
|
||||
, _lpPos = pos
|
||||
, _lpDir = dir
|
||||
, _lpColor = col
|
||||
}
|
||||
|
||||
removeAmmoFromMag :: Int -> Maybe Int -> Creature -> World -> World
|
||||
removeAmmoFromMag x mid cr = fromMaybe id $ do
|
||||
magid <- mid
|
||||
|
||||
Reference in New Issue
Block a user