Add force field gun

This commit is contained in:
2022-05-26 13:17:51 +01:00
parent 58427da0c4
commit 5c41e2823e
7 changed files with 56 additions and 12 deletions
+3 -1
View File
@@ -103,8 +103,10 @@ setWristShieldPos itm cr w = w
invid = fromJust (_itInvPos itm)
--wlline = (V2 10 0, V2 (-10) 100)
handtrans = case cr ^? crInvEquipped . ix invid of
Just OnLeftWrist -> translatePointToLeftHand
Just OnLeftWrist -> \cr' -> translatePointToLeftHand cr' . g
_ -> translatePointToRightHand
g | twists cr = (+.+.+ V3 (-5) 10 0)
| otherwise = id
f = (+.+ _crPos cr) . stripZ . rotate3 (_crDir cr) . handtrans cr
spicForWrist :: SPic -> Creature -> Item -> SPic
+20 -3
View File
@@ -1,15 +1,18 @@
module Dodge.Item.Weapon.Utility where
import Dodge.Data
--import Dodge.Base
import Dodge.Base.Coordinate
import Dodge.Default
--import Dodge.Picture.Layer
import Dodge.Creature.Action
import Dodge.Item.Weapon.TriggerType
import Dodge.Item.Weapon.ExtraEffect
import Dodge.Default.Weapon
import Dodge.Wall.ForceField
import Dodge.Wall.Move
--import Sound.Data
import Geometry
import Picture
--import qualified IntMapHelp as IM
import qualified IntMapHelp as IM
import Shape
import ShapePicture
@@ -134,9 +137,23 @@ forceFieldGun = defaultGun
, _reloadTime = 40
, _reloadState = Nothing'
}
, _itUse = undefined
, _itUse = ruseInstant useForceFieldGun (HasHammer HammerUp)
[ hammerCheckI , ammoCheckI , useAmmoAmount 1]
-- , _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2 [(-4,-4),(-4,4),(4,4),(4,0),(0,0),(0,-4)]
, _itTargeting = targetRBPress
, _itParams = ParamMID Nothing
}
useForceFieldGun :: Item -> Creature -> World -> World
useForceFieldGun itm cr w = w
& walls %~ IM.insertWith (\_ x -> x) i forceField {_wlID = i}
& creatures . ix (_crID cr) . crInv . ix (fromJust (_itInvPos itm)) . itParams . paramMID ?~ i
& moveWallIDUnsafe i wlline
where
i = fromMaybe (IM.newKey (_walls w)) $ itm ^? itParams . paramMID . _Just
a = fromJust . _tgPos $ _itTargeting itm
wlline = (a,mouseWorldPos w)
-- grapGun = defaultGun
-- { _itName = "grapGun"
-- , _itIdentity = GrapGun