Add roots and parents to adjacency function from Double Trees
This commit is contained in:
+17
-26
@@ -7,7 +7,7 @@ module Dodge.HeldUse
|
||||
|
||||
import Dodge.Base.Collide
|
||||
import Dodge.Inventory.Lock
|
||||
import Dodge.WorldEvent.Cloud
|
||||
--import Dodge.WorldEvent.Cloud
|
||||
import Dodge.LightSource
|
||||
import qualified SDL
|
||||
--import Dodge.Base.You
|
||||
@@ -15,7 +15,7 @@ import Dodge.Data.MuzzleEffect
|
||||
import ListHelp
|
||||
import Dodge.Data.ComposedItem
|
||||
import Dodge.Data.DoubleTree
|
||||
import Color
|
||||
--import Color
|
||||
import Data.Maybe
|
||||
--import Data.Traversable
|
||||
import Dodge.Base.Coordinate
|
||||
@@ -158,20 +158,20 @@ basicMuzFlare pos dir = makeTlsTimeRadColPos 2 100 (V3 1 1 0.5) (pos `v2z` 20)
|
||||
. muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir
|
||||
. muzFlareAt (V4 10 10 1 3) (pos `v2z` 20) dir
|
||||
|
||||
-- need to add these to muzzle flare
|
||||
makeMuzzleSmoke :: Muzzle -> Item -> Creature -> World -> World
|
||||
makeMuzzleSmoke mz itm cr w = case mz ^. mzFlareType of
|
||||
DefaultFlareType -> w
|
||||
PistolFlare -> foldl' (flip $ smokeCloudAt (greyN 0.5) 5 400 5 . (+.+.+ pos) . (* 8)) w ps
|
||||
MiniGunFlare -> smokeCloudAt (greyN 0.5) 5 400 5 pos w
|
||||
HeavySmokeFlare -> foldl' (flip $ smokeCloudAt black 20 400 5 . (+.+.+ pos) . (* 8)) w ps'
|
||||
LasGunFlare -> w
|
||||
TeslaGunFlare -> w
|
||||
where
|
||||
ps = replicateM 2 randOnUnitSphere & evalState $ _randGen w
|
||||
ps' = replicateM 4 randOnUnitSphere & evalState $ _randGen w
|
||||
pos = addZ 10 $ _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm)
|
||||
-- , withSmoke 1 black 20 200 5
|
||||
---- need to add these to muzzle flare?
|
||||
--makeMuzzleSmoke :: Muzzle -> Item -> Creature -> World -> World
|
||||
--makeMuzzleSmoke mz itm cr w = case mz ^. mzFlareType of
|
||||
-- DefaultFlareType -> w
|
||||
-- PistolFlare -> foldl' (flip $ smokeCloudAt (greyN 0.5) 5 400 5 . (+.+.+ pos) . (* 8)) w ps
|
||||
-- MiniGunFlare -> smokeCloudAt (greyN 0.5) 5 400 5 pos w
|
||||
-- HeavySmokeFlare -> foldl' (flip $ smokeCloudAt black 20 400 5 . (+.+.+ pos) . (* 8)) w ps'
|
||||
-- LasGunFlare -> w
|
||||
-- TeslaGunFlare -> w
|
||||
-- where
|
||||
-- ps = replicateM 2 randOnUnitSphere & evalState $ _randGen w
|
||||
-- ps' = replicateM 4 randOnUnitSphere & evalState $ _randGen w
|
||||
-- pos = addZ 10 $ _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm)
|
||||
---- , withSmoke 1 black 20 200 5
|
||||
|
||||
isAmmoIntLink :: Int -> ComposeLinkType -> Bool
|
||||
isAmmoIntLink i (AmmoInLink j _) = i == j
|
||||
@@ -186,7 +186,7 @@ useLoadedAmmo itm cr (cme,w) (mzid,(mz,x,mid)) = (,) (cme & cmeSound .~ True) $
|
||||
MuzzleLaser -> shootLaser' itm cr mz w
|
||||
MuzzleTesla -> shootTeslaArc itm cr mz w
|
||||
MuzzleTractor -> shootTractorBeam itm cr w
|
||||
MuzzleLauncher -> createProjectile' mid mz itm cr w
|
||||
MuzzleLauncher -> createProjectile mid mz itm cr w
|
||||
MuzzleNozzle {} -> useGasParams mid mz itm cr $ walkNozzle mzid mz itm cr w
|
||||
MuzzleShatter -> shootShatter itm cr w
|
||||
MuzzleForceField -> useForceFieldGun itm cr w
|
||||
@@ -375,15 +375,6 @@ useHeld hu = case hu of
|
||||
-- maxa = _nzMaxWalkAngle nz
|
||||
-- wa = min maxa $ max (negate maxa) (_nzCurrentWalkAngle nz + walkamount)
|
||||
|
||||
getAmmoMagazine :: Item -> Creature -> Maybe ItemUse
|
||||
getAmmoMagazine itm cr = do
|
||||
invid <- itm ^? itLocation . ipInvID
|
||||
amtype <- itm ^? itUse . heldAmmoTypes . ix 0
|
||||
mag <- cr ^? crInv . ix (invid + 1) . itUse
|
||||
magtype <- mag ^? amagType
|
||||
guard $ amtype == magtype
|
||||
return mag
|
||||
|
||||
useGasParams :: Maybe Int -> Muzzle -> Item -> Creature -> World -> World
|
||||
useGasParams mmagid mz itm cr w =
|
||||
createGas
|
||||
|
||||
Reference in New Issue
Block a user